From 09b00d02d5a8c4a2fb07dc954145c8c91d43ee55 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 02 Sep 2013 13:51:46 +0000
Subject: [PATCH] Surprisingly, doing better cleanup after a test ensured the tests are now passing. No idea why it was working then suddenly not working anymore though.

---
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ExternalChangeLogTest.java |  163 +++++++++++++++++------------------------------------
 1 files changed, 53 insertions(+), 110 deletions(-)

diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ExternalChangeLogTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ExternalChangeLogTest.java
index 6099822..71f4a1a 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ExternalChangeLogTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ExternalChangeLogTest.java
@@ -76,6 +76,7 @@
 import static org.assertj.core.api.Assertions.*;
 import static org.opends.messages.ReplicationMessages.*;
 import static org.opends.server.TestCaseUtils.*;
+import static org.opends.server.controls.PersistentSearchChangeType.*;
 import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.replication.protocol.OperationContext.*;
 import static org.opends.server.types.ResultCode.*;
@@ -699,11 +700,7 @@
     }
     finally
     {
-      // Cleaning
-      if (domain2 != null)
-      {
-        domain2.shutdown();
-      }
+      remove(domain2);
       removeTestBackend(backend2);
       stop(server01);
       replicationServer.clearDb();
@@ -1446,27 +1443,11 @@
 
       // Creates psearch control
       Set<PersistentSearchChangeType> changeTypes =
-        new HashSet<PersistentSearchChangeType>();
-      changeTypes.add(PersistentSearchChangeType.ADD);
-      changeTypes.add(PersistentSearchChangeType.DELETE);
-      changeTypes.add(PersistentSearchChangeType.MODIFY);
-      changeTypes.add(PersistentSearchChangeType.MODIFY_DN);
-      boolean returnECs = true;
-      PersistentSearchControl persSearchControl = new PersistentSearchControl(
-          changeTypes, changesOnly, returnECs);
-      controls.add(persSearchControl);
+          EnumSet.of(ADD, DELETE, MODIFY, MODIFY_DN);
+      controls.add(new PersistentSearchControl(changeTypes, changesOnly, true));
 
-      // Creates request
       SearchRequestProtocolOp searchRequest =
-        new SearchRequestProtocolOp(
-            ByteString.valueOf("cn=changelog"),
-            SearchScope.WHOLE_SUBTREE,
-            DereferencePolicy.NEVER_DEREF_ALIASES,
-            Integer.MAX_VALUE,
-            Integer.MAX_VALUE,
-            false,
-            LDAPFilter.decode("(targetDN=*"+tn+"*,o=test)"),
-            null);
+          createSearchRequest("(targetDN=*" + tn + "*,o=test)", null);
 
       // Connects and bind
       debugInfo(tn, "Search with cookie=" + cookie + "\"");
@@ -1615,15 +1596,7 @@
         bindAsWhoEver(w, r, "toto", "tutu", LDAPResultCode.OPERATIONS_ERROR);
 
         searchRequest =
-          new SearchRequestProtocolOp(
-              ByteString.valueOf("cn=changelog"),
-              SearchScope.WHOLE_SUBTREE,
-              DereferencePolicy.NEVER_DEREF_ALIASES,
-              Integer.MAX_VALUE,
-              Integer.MAX_VALUE,
-              false,
-              LDAPFilter.decode("(targetDN=*directpsearch*,o=test)"),
-              null);
+            createSearchRequest("(targetDN=*directpsearch*,o=test)", null);
 
         debugInfo(tn, "ACI test : sending search");
         message = new LDAPMessage(2, searchRequest, createControls(""));
@@ -1670,6 +1643,20 @@
     debugInfo(tn, "Ends test successfully");
   }
 
+  private SearchRequestProtocolOp createSearchRequest(String filterString,
+      final Set<String> attributes) throws LDAPException
+  {
+    return new SearchRequestProtocolOp(
+        ByteString.valueOf("cn=changelog"),
+        SearchScope.WHOLE_SUBTREE,
+        DereferencePolicy.NEVER_DEREF_ALIASES,
+        Integer.MAX_VALUE,
+        Integer.MAX_VALUE,
+        false,
+        LDAPFilter.decode(filterString),
+        attributes);
+  }
+  
   /**
    * Test parallel simultaneous psearch with different filters.
    */
@@ -1704,7 +1691,6 @@
           DN.decode(TEST_ROOT_DN_STRING), SERVER_ID_1,
           100, replicationServerPort, brokerSessionTimeout, true);
       server01.setChangeTimeHeartbeatInterval(100); //ms
-      int ts = 1;
 
       // Create broker on o=test2
       server02 = openReplicationSession(
@@ -1712,9 +1698,9 @@
           100, replicationServerPort, brokerSessionTimeout, true, EMPTY_DN_GENID);
       server02.setChangeTimeHeartbeatInterval(100); //ms
 
+      int ts = 1;
       // Produce update 1
-      CSN csn1 =
-        new CSN(TimeThread.getTime(), ts++, SERVER_ID_1);
+      CSN csn1 = new CSN(TimeThread.getTime(), ts++, SERVER_ID_1);
       DeleteMsg delMsg1 =
         new DeleteMsg("uid=" + tn + "1," + TEST_ROOT_DN_STRING, csn1,
             "11111111-1111-1111-1111-111111111111");
@@ -1723,8 +1709,7 @@
       sleep(500); // let's be sure the message is in the RS
 
       // Produce update 2
-      CSN csn2 =
-        new CSN(TimeThread.getTime(), ts++, SERVER_ID_2);
+      CSN csn2 = new CSN(TimeThread.getTime(), ts++, SERVER_ID_2);
       DeleteMsg delMsg2 =
         new DeleteMsg("uid=" + tn + "2," + TEST_ROOT_DN_STRING2, csn2,
             "22222222-2222-2222-2222-222222222222");
@@ -1733,8 +1718,7 @@
       sleep(500); // let's be sure the message is in the RS
 
       // Produce update 3
-      CSN csn3 =
-        new CSN(TimeThread.getTime(), ts++, SERVER_ID_2);
+      CSN csn3 = new CSN(TimeThread.getTime(), ts++, SERVER_ID_2);
       DeleteMsg delMsg3 =
         new DeleteMsg("uid=" + tn + "3," + TEST_ROOT_DN_STRING2, csn3,
             "33333333-3333-3333-3333-333333333333");
@@ -1753,53 +1737,13 @@
 
       // Creates psearch control
       Set<PersistentSearchChangeType> changeTypes =
-        new HashSet<PersistentSearchChangeType>();
-      changeTypes.add(PersistentSearchChangeType.ADD);
-      changeTypes.add(PersistentSearchChangeType.DELETE);
-      changeTypes.add(PersistentSearchChangeType.MODIFY);
-      changeTypes.add(PersistentSearchChangeType.MODIFY_DN);
-      boolean returnECs = true;
-      PersistentSearchControl persSearchControl = new PersistentSearchControl(
-          changeTypes, changesOnly, returnECs);
-      controls.add(persSearchControl);
+          EnumSet.of(ADD, DELETE, MODIFY, MODIFY_DN);
+      controls.add(new PersistentSearchControl(changeTypes, changesOnly, true));
 
       final Set<String> attributes = ALL_ATTRIBUTES;
-
-      // Creates request 1
-      SearchRequestProtocolOp searchRequest1 =
-        new SearchRequestProtocolOp(
-            ByteString.valueOf("cn=changelog"),
-            SearchScope.WHOLE_SUBTREE,
-            DereferencePolicy.NEVER_DEREF_ALIASES,
-            Integer.MAX_VALUE,
-            Integer.MAX_VALUE,
-            false,
-            LDAPFilter.decode("(targetDN=*"+tn+"*,o=test)"),
-            attributes);
-
-      // Creates request 2
-      SearchRequestProtocolOp searchRequest2 =
-        new SearchRequestProtocolOp(
-            ByteString.valueOf("cn=changelog"),
-            SearchScope.WHOLE_SUBTREE,
-            DereferencePolicy.NEVER_DEREF_ALIASES,
-            Integer.MAX_VALUE,
-            Integer.MAX_VALUE,
-            false,
-            LDAPFilter.decode("(targetDN=*"+tn+"*,o=test2)"),
-            attributes);
-
-      // Creates request 3
-      SearchRequestProtocolOp searchRequest3 =
-        new SearchRequestProtocolOp(
-            ByteString.valueOf("cn=changelog"),
-            SearchScope.WHOLE_SUBTREE,
-            DereferencePolicy.NEVER_DEREF_ALIASES,
-            Integer.MAX_VALUE,
-            Integer.MAX_VALUE,
-            false,
-            LDAPFilter.decode("objectclass=*"),
-            attributes);
+      SearchRequestProtocolOp searchRequest1 = createSearchRequest("(targetDN=*"+tn+"*,o=test)", attributes);
+      SearchRequestProtocolOp searchRequest2 = createSearchRequest("(targetDN=*"+tn+"*,o=test2)", attributes);
+      SearchRequestProtocolOp searchRequest3 = createSearchRequest("objectclass=*", attributes);
 
       // Connects and bind
       s1 = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
@@ -2250,14 +2194,17 @@
     return memoryBackend;
   }
 
-  private static void removeTestBackend(Backend backend)
+  private static void removeTestBackend(Backend... backends)
   {
-    if (backend != null)
+    for (Backend backend : backends)
     {
-      MemoryBackend memoryBackend = (MemoryBackend) backend;
-      memoryBackend.clearMemoryBackend();
-      memoryBackend.finalizeBackend();
-      DirectoryServer.deregisterBackend(memoryBackend);
+      if (backend != null)
+      {
+        MemoryBackend memoryBackend = (MemoryBackend) backend;
+        memoryBackend.clearMemoryBackend();
+        memoryBackend.finalizeBackend();
+        DirectoryServer.deregisterBackend(memoryBackend);
+      }
     }
   }
 
@@ -2348,9 +2295,8 @@
     }
     finally
     {
-      stop(s1test2, s2test2);
+      stop(s1test2, s2test2, s1test, s2test);
       removeTestBackend(backend2);
-      stop(s1test, s2test);
       replicationServer.clearDb();
     }
     debugInfo(tn, "Ending test successfully");
@@ -3168,23 +3114,8 @@
         runDeleteOperation(TEST_ROOT_DN_STRING2);
         runDeleteOperation(TEST_ROOT_DN_STRING3);
 
-        // Cleaning
-        if (domain21 != null)
-        {
-          domain21.shutdown();
-        }
-
-        if (domain2 != null)
-        {
-          domain2.shutdown();
-        }
-        removeTestBackend(backend2);
-
-        if (domain3 != null)
-        {
-          domain3.shutdown();
-        }
-        removeTestBackend(backend3);
+        remove(domain21, domain2, domain3);
+        removeTestBackend(backend2, backend3);
       }
       finally
       {
@@ -3194,6 +3125,18 @@
     debugInfo(tn, "Ending test with success");
   }
 
+  private void remove(LDAPReplicationDomain... domains)
+  {
+    for (LDAPReplicationDomain domain : domains)
+    {
+      if (domain != null)
+      {
+        domain.shutdown();
+        MultimasterReplication.deleteDomain(domain.getBaseDN());
+      }
+    }
+  }
+
   private static SortedSet<String> newSet(String... values)
   {
     return new TreeSet<String>(Arrays.asList(values));

--
Gitblit v1.10.0