mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Jean-Noel Rouvignac
02.18.2015 50ec19f816696f730ee58115e884b7e26d1c5e9a
Fix ChangelogBackendTestCase randomness

ChangelogBackendTestCase.java:
Introduced assertLastCookieIsEqualTo() to do an equivalent to "wait until keyword suceeds"
In searchInCookieModeOnTwoSuffixesWithPrivateBackend(), do not forget to close the domain.
In isOldestCSNForReplica(), fixed error message.
Overrode getGenerationId() to have a fixed generationId. This ensures messages can always sent from ReplicationBroker to LDAPReplicationDomain and processed.
2 files modified
52 ■■■■ changed files
opendj-sdk/opendj-server-legacy/src/test/java/org/opends/server/backends/ChangelogBackendTestCase.java 50 ●●●● patch | view | raw | blame | history
opendj-sdk/opendj-server-legacy/src/test/java/org/opends/server/replication/ReplicationTestCase.java 2 ●●● patch | view | raw | blame | history
opendj-sdk/opendj-server-legacy/src/test/java/org/opends/server/backends/ChangelogBackendTestCase.java
@@ -448,8 +448,7 @@
      // test last cookie on root DSE
      MultiDomainServerState expectedLastCookie =
          new MultiDomainServerState("o=test:" + csn5 + " " + csn9 + ";o=test2:" + csn3 + " " + csn8 + ";");
      final String lastCookie = readLastCookieFromRootDSE();
      assertThat(lastCookie).isEqualTo(expectedLastCookie.toString());
      final String lastCookie = assertLastCookieIsEqualTo(expectedLastCookie.toString());
      // test unknown domain in provided cookie
      // This case seems to be very hard to obtain in the real life
@@ -482,7 +481,7 @@
    try (DBCursor<UpdateMsg> cursor = domainDB.getCursorFrom(baseDN, csn.getServerId(), csn, options))
    {
      assertTrue(cursor.next(),
          "Expected to be to find at least one change in replicaDB(" + baseDN + " " + csn.getServerId() + ")");
          "Expected to find at least one change in replicaDB(" + baseDN + " " + csn.getServerId() + ")");
      assertEquals(cursor.getRecord().getCSN(), csn);
    }
  }
@@ -495,6 +494,7 @@
      // Use o=test3 to avoid collision with o=test2 already used by a previous test
      Backend<?> backend3 = null;
      LDAPReplicationDomain domain2 = null;
      try {
        ReplicationBroker broker = enableReplication(DN_OTEST, SERVER_ID_1, replicationServerPort, brokerSessionTimeout);
@@ -508,7 +508,7 @@
        backend3.setPrivateBackend(true);
        DomainFakeCfg domainConf2 = new DomainFakeCfg(DN_OTEST3, 1602,
            newTreeSet("localhost:" + replicationServerPort));
        LDAPReplicationDomain domain2 = startNewReplicationDomain(domainConf2, null, null);
        domain2 = startNewReplicationDomain(domainConf2, null, null);
        // add a root entry to the backend
        Thread.sleep(1000);
@@ -527,12 +527,11 @@
        // test the lastExternalChangelogCookie attribute of the ECL
        // (does only refer to non private backend)
        String expectedLastCookie = "o=test:" + csn1 + ";";
        String lastCookie = readLastCookieFromRootDSE();
        assertThat(expectedLastCookie).isEqualTo(lastCookie);
        assertLastCookieIsEqualTo("o=test:" + csn1 + ";");
      }
      finally
      {
        removeReplicationDomains(domain2);
        removeBackend(backend3);
      }
      debugInfo(test, "Ending test successfully");
@@ -904,20 +903,39 @@
    return cookie;
  }
  private String assertLastCookieDifferentThanLastValue(final String lastCookie) throws Exception
  private String assertLastCookieIsEqualTo(String expectedLastCookie) throws Exception
  {
    String lastCookie = null;
    int count = 0;
    while (count < 100)
    {
      final String newCookie = readLastCookieFromRootDSE();
      if (!newCookie.equals(lastCookie))
      lastCookie = readLastCookieFromRootDSE();
      if (lastCookie.equals(expectedLastCookie))
      {
        return newCookie;
        return lastCookie;
      }
      count++;
      Thread.sleep(10);
    }
    Assertions.fail("Expected last cookie should have been updated, but it always stayed at value '" + lastCookie + "'");
    Assertions.fail("Expected last cookie to be equal to <" + expectedLastCookie + "> but found <" + lastCookie + ">");
    return null;// dead code
  }
  private String assertLastCookieDifferentThanLastValue(final String notExpectedLastCookie) throws Exception
  {
    int count = 0;
    while (count < 100)
    {
      final String lastCookie = readLastCookieFromRootDSE();
      if (!lastCookie.equals(notExpectedLastCookie))
      {
        return lastCookie;
      }
      count++;
      Thread.sleep(10);
    }
    Assertions.fail("Expected last cookie should have been updated,"
        + " but it always stayed at value '" + notExpectedLastCookie + "'");
    return null;// dead code
  }
@@ -1517,4 +1535,12 @@
  {
    logger.trace("** TEST %s ** %s", testName, message);
  }
  @Override
  protected long getGenerationId(DN baseDN)
  {
    // Force value to ensure ReplicationBroker can connect to LDAPReplicationDomain,
    // even with multiple instances of each
    return TEST_DN_WITH_ROOT_ENTRY_GENID;
  }
}
opendj-sdk/opendj-server-legacy/src/test/java/org/opends/server/replication/ReplicationTestCase.java
@@ -191,7 +191,7 @@
   * @param baseDN The baseDN for which we want the generationId
   * @return The value of the generationId.
   */
  protected static long getGenerationId(DN baseDN)
  protected long getGenerationId(DN baseDN)
  {
    try
    {