From 23f9030daa0f0d1585cca5550c52b8ed387ef151 Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Thu, 23 Nov 2006 11:00:49 +0000
Subject: [PATCH] improve the synchronization tests code by factorizing the common code in SynchronizationTestCase

---
 opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/UpdateOperationTest.java     |  196 +-------------
 opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ProtocolWindowTest.java      |  189 -------------
 opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/StressTest.java              |  165 ------------
 opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SynchronizationTestCase.java |  178 +++++++++++++
 4 files changed, 214 insertions(+), 514 deletions(-)

diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ProtocolWindowTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ProtocolWindowTest.java
index f9d43ba..be2f00b 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ProtocolWindowTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ProtocolWindowTest.java
@@ -30,17 +30,13 @@
 import static org.opends.server.loggers.Error.logError;
 import static org.testng.Assert.*;
 
-import java.net.SocketException;
 import java.net.SocketTimeoutException;
 import java.util.ArrayList;
 import java.util.LinkedHashSet;
 import java.util.List;
 
 import org.opends.server.TestCaseUtils;
-import org.opends.server.config.ConfigEntry;
-import org.opends.server.config.ConfigException;
 import org.opends.server.core.AddOperation;
-import org.opends.server.core.DeleteOperation;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.ModifyOperation;
 import org.opends.server.core.Operation;
@@ -50,8 +46,6 @@
 import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPFilter;
 import org.opends.server.synchronization.plugin.ChangelogBroker;
-import org.opends.server.synchronization.plugin.MultimasterSynchronization;
-import org.opends.server.synchronization.plugin.PersistentServerState;
 import org.opends.server.synchronization.protocol.AddMsg;
 import org.opends.server.synchronization.protocol.SynchronizationMessage;
 import org.opends.server.types.Attribute;
@@ -66,7 +60,6 @@
 import org.opends.server.types.OperationType;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.SearchScope;
-import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
@@ -83,58 +76,9 @@
     "Synchronization Stress Test";
 
   /**
-   * The internal connection used for operation
-   */
-  private InternalClientConnection connection;
-
-  /**
-   * Created entries that need to be deleted for cleanup
-   */
-  private ArrayList<Entry> entryList = new ArrayList<Entry>();
-
-  /**
-   * The Synchronization config manager entry
-   */
-  private String synchroStringDN;
-
-  /**
-   * The synchronization plugin entry
-   */
-  private String synchroPluginStringDN;
-
-  private Entry synchroPluginEntry;
-
-  /**
-   * The Server synchro entry
-   */
-  private String synchroServerStringDN;
-
-  private Entry synchroServerEntry;
-
-  /**
-   * The Change log entry
-   */
-  private String changeLogStringDN;
-
-  private Entry changeLogEntry;
-
-  /**
    * A "person" entry
    */
-  private Entry personEntry;
-
-  /**
-   * schema check flag
-   */
-  private boolean schemaCheck;
-
-  // WORKAROUND FOR BUG #639 - BEGIN -
-  /**
-   *
-   */
-  MultimasterSynchronization mms;
-
-  // WORKAROUND FOR BUG #639 - END -
+  protected Entry personEntry;
 
   /**
    * Test the window mechanism by :
@@ -153,9 +97,9 @@
         "Starting synchronization ProtocolWindowTest : saturateAndRestart" , 1);
     
     final DN baseDn = DN.decode("ou=People,dc=example,dc=com");
-    cleanEntries();
 
-    ChangelogBroker broker = openChangelogSession(baseDn, (short) 13);
+    ChangelogBroker broker = openChangelogSession(baseDn, (short) 13,
+        WINDOW_SIZE);
 
     try {
       
@@ -176,7 +120,7 @@
           tmp.getObjectClasses(), tmp.getUserAttributes(),
           tmp.getOperationalAttributes());
       addOp.run();
-      entryList.add(personEntry);
+      entryList.addLast(personEntry.getDN());
       assertTrue(DirectoryServer.entryExists(personEntry.getDN()),
         "The Add Entry operation failed");
 
@@ -320,11 +264,12 @@
           entry.getUserAttributes(), entry.getOperationalAttributes());
       addOp.setInternalOperation(true);
       addOp.run();
-      entryList.add(entry);
+      System.out.println("adding " + entry.getDN());
+      entryList.addLast(entry.getDN());
     }
 
     // top level synchro provider
-    synchroStringDN = "cn=Synchronization Providers,cn=config";
+    String synchroStringDN = "cn=Synchronization Providers,cn=config";
 
     // Multimaster Synchro plugin
     synchroPluginStringDN = "cn=Multimaster Synchronization, "
@@ -339,7 +284,7 @@
     synchroPluginEntry = TestCaseUtils.entryFromLdifString(synchroPluginLdif);
 
     // Change log
-    changeLogStringDN = "cn=Changelog Server, " + synchroPluginStringDN;
+    String changeLogStringDN = "cn=Changelog Server, " + synchroPluginStringDN;
     String changeLogLdif = "dn: " + changeLogStringDN + "\n"
         + "objectClass: top\n"
         + "objectClass: ds-cfg-synchronization-changelog-server-config\n"
@@ -350,7 +295,7 @@
     changeLogEntry = TestCaseUtils.entryFromLdifString(changeLogLdif);
 
     // suffix synchronized
-    synchroServerStringDN = "cn=example, " + synchroPluginStringDN;
+    String synchroServerStringDN = "cn=example, " + synchroPluginStringDN;
     String synchroServerLdif = "dn: " + synchroServerStringDN + "\n"
         + "objectClass: top\n"
         + "objectClass: ds-cfg-synchronization-provider-config\n"
@@ -382,47 +327,6 @@
   }
 
   /**
-   * Clean up the environment. return null;
-   *
-   * @throws Exception
-   *           If the environment could not be set up.
-   */
-  @AfterClass
-  public void classCleanUp() throws Exception
-  {
-    DirectoryServer.setCheckSchema(schemaCheck);
-
-    // WORKAROUND FOR BUG #639 - BEGIN -
-    DirectoryServer.deregisterSynchronizationProvider(mms);
-    mms.finalizeSynchronizationProvider();
-    // WORKAROUND FOR BUG #639 - END -
-
-    cleanEntries();
-  }
-
-  /**
-   * suppress all the entries created by the tests in this class
-   */
-  private void cleanEntries()
-  {
-    DeleteOperation op;
-    // Delete entries
-    Entry entries[] = entryList.toArray(new Entry[0]);
-    for (int i = entries.length - 1; i != 0; i--)
-    {
-      try
-      {
-        op = new DeleteOperation(connection, InternalClientConnection
-            .nextOperationID(), InternalClientConnection.nextMessageID(), null,
-            entries[i].getDN());
-        op.run();
-      } catch (Exception e)
-      {
-      }
-    }
-  }
-
-  /**
    * @return
    */
   private List<Modification> generatemods(String attrName, String attrValue)
@@ -438,81 +342,6 @@
     return mods;
   }
 
-  /**
-   * Open a changelog session to the local Changelog server.
-   *
-   */
-  private ChangelogBroker openChangelogSession(final DN baseDn, short serverId)
-          throws Exception, SocketException
-  {
-    PersistentServerState state = new PersistentServerState(baseDn);
-    state.loadState();
-    ChangelogBroker broker =
-      new ChangelogBroker(state, baseDn, serverId, 0, 0, 0, 0, WINDOW_SIZE);
-    ArrayList<String> servers = new ArrayList<String>(1);
-    servers.add("localhost:8989");
-    broker.start(servers);
-    broker.setSoTimeout(5000);
-    /*
-     * loop receiving update until there is nothing left
-     * to make sure that message from previous tests have been consumed.
-     */
-    try
-    {
-      while (true)
-      {
-        broker.receive();
-      }
-    }
-    catch (Exception e)
-    { }
-    return broker;
-  }
-
-  /**
-   * Configure the Synchronization for this test.
-   */
-  private void configureSynchronization() throws Exception
-  {
-    //
-    // Add the Multimaster synchronization plugin
-    DirectoryServer.getConfigHandler().addEntry(synchroPluginEntry, null);
-    entryList.add(synchroPluginEntry);
-    assertNotNull(DirectoryServer.getConfigEntry(DN
-        .decode(synchroPluginStringDN)),
-        "Unable to add the Multimaster synchronization plugin");
-
-    // WORKAROUND FOR BUG #639 - BEGIN -
-    DN dn = DN.decode(synchroPluginStringDN);
-    ConfigEntry mmsConfigEntry = DirectoryServer.getConfigEntry(dn);
-    mms = new MultimasterSynchronization();
-    try
-    {
-      mms.initializeSynchronizationProvider(mmsConfigEntry);
-    }
-    catch (ConfigException e)
-    {
-      assertTrue(false,
-          "Unable to initialize the Multimaster synchronization plugin");
-    }
-    DirectoryServer.registerSynchronizationProvider(mms);
-    // WORKAROUND FOR BUG #639 - END -
-
-    //
-    // Add the changelog server
-    DirectoryServer.getConfigHandler().addEntry(changeLogEntry, null);
-    assertNotNull(DirectoryServer.getConfigEntry(changeLogEntry.getDN()),
-        "Unable to add the changeLog server");
-    entryList.add(changeLogEntry);
-
-    //
-    // We also have a replicated suffix (synchronization domain)
-    DirectoryServer.getConfigHandler().addEntry(synchroServerEntry, null);
-    assertNotNull(DirectoryServer.getConfigEntry(synchroServerEntry.getDN()),
-        "Unable to add the syncrhonized server");
-    entryList.add(synchroServerEntry);
-  }
-
   private void processModify(int count)
   {
     while (count>0)
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/StressTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/StressTest.java
index dae2748..8cfdec3 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/StressTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/StressTest.java
@@ -29,11 +29,9 @@
 
 import static org.opends.server.loggers.Error.logError;
 import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertTrue;
 import static org.testng.Assert.fail;
 
-import java.net.SocketException;
 import java.util.ArrayList;
 import java.util.LinkedHashSet;
 import java.util.LinkedList;
@@ -44,14 +42,11 @@
 import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.AddOperation;
-import org.opends.server.core.DeleteOperation;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.ModifyOperation;
 import org.opends.server.core.Operation;
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.synchronization.plugin.ChangelogBroker;
-import org.opends.server.synchronization.plugin.MultimasterSynchronization;
-import org.opends.server.synchronization.plugin.PersistentServerState;
 import org.opends.server.synchronization.protocol.AddMsg;
 import org.opends.server.synchronization.protocol.SynchronizationMessage;
 import org.opends.server.types.Attribute;
@@ -66,8 +61,6 @@
 import org.opends.server.types.ModificationType;
 import org.opends.server.types.OperationType;
 import org.opends.server.types.ResultCode;
-import org.opends.server.util.TimeThread;
-import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
@@ -81,58 +74,26 @@
     "Synchronization Stress Test";
 
   /**
-   * The internal connection used for operation
-   */
-  private InternalClientConnection connection;
-
-  /**
-   * Created entries that need to be deleted for cleanup
-   */
-  private ArrayList<Entry> entryList = new ArrayList<Entry>();
-
-  /**
    * The Synchronization config manager entry
    */
   private String synchroStringDN;
 
   /**
-   * The synchronization plugin entry
-   */
-  private String synchroPluginStringDN;
-
-  private Entry synchroPluginEntry;
-
-  /**
    * The Server synchro entry
    */
   private String synchroServerStringDN;
 
-  private Entry synchroServerEntry;
-
   /**
    * The Change log entry
    */
   private String changeLogStringDN;
 
-  private Entry changeLogEntry;
-
+  private BrokerReader reader = null;
+  
   /**
    * A "person" entry
    */
-  private Entry personEntry;
-
-  /**
-   * schema check flag
-   */
-  private boolean schemaCheck;
-
-  // WORKAROUND FOR BUG #639 - BEGIN -
-  /**
-   *
-   */
-  MultimasterSynchronization mms;
-
-  private BrokerReader reader = null;
+  protected Entry personEntry;
 
   // WORKAROUND FOR BUG #639 - END -
 
@@ -150,7 +111,7 @@
     final int TOTAL_MESSAGES = 1000;
     cleanEntries();
 
-    ChangelogBroker broker = openChangelogSession(baseDn, (short) 18);
+    ChangelogBroker broker = openChangelogSession(baseDn, (short) 18, 100);
     Monitor monitor = new Monitor("stress test monitor");
     DirectoryServer.registerMonitorProvider(monitor);
 
@@ -181,7 +142,7 @@
           tmp.getObjectClasses(), tmp.getUserAttributes(),
           tmp.getOperationalAttributes());
       addOp.run();
-      entryList.add(personEntry);
+      entryList.add(personEntry.getDN());
       assertTrue(DirectoryServer.entryExists(personEntry.getDN()),
         "The Add Entry operation failed");
 
@@ -201,7 +162,6 @@
       reader = new BrokerReader(broker);
       reader.start();
 
-      long startTime = TimeThread.getTime();
       int count = TOTAL_MESSAGES;
 
       // Create a number of writer thread that will loop modifying the entry
@@ -221,11 +181,7 @@
         thread.join();
       }
 
-      long afterSendTime = TimeThread.getTime();
-
       int rcvCount = reader.getCount();
-      
-      long afterReceiveTime = TimeThread.getTime();
 
       if (rcvCount != TOTAL_MESSAGES)
       {
@@ -253,13 +209,13 @@
     // This test suite depends on having the schema available.
     TestCaseUtils.startServer();
 
+    // Create an internal connection
+    connection = new InternalClientConnection();
+    
     // Disable schema check
     schemaCheck = DirectoryServer.checkSchema();
     DirectoryServer.setCheckSchema(false);
 
-    // Create an internal connection
-    connection = new InternalClientConnection();
-
     // Create backend top level entries
     String[] topEntries = new String[2];
     topEntries[0] = "dn: dc=example,dc=com\n" + "objectClass: top\n"
@@ -277,7 +233,7 @@
           entry.getUserAttributes(), entry.getOperationalAttributes());
       addOp.setInternalOperation(true);
       addOp.run();
-      entryList.add(entry);
+      entryList.add(entry.getDN());
     }
 
     // top level synchro provider
@@ -335,47 +291,6 @@
   }
 
   /**
-   * Clean up the environment. return null;
-   *
-   * @throws Exception
-   *           If the environment could not be set up.
-   */
-  @AfterClass
-  public void classCleanUp() throws Exception
-  {
-    DirectoryServer.setCheckSchema(schemaCheck);
-
-    // WORKAROUND FOR BUG #639 - BEGIN -
-    DirectoryServer.deregisterSynchronizationProvider(mms);
-    mms.finalizeSynchronizationProvider();
-    // WORKAROUND FOR BUG #639 - END -
-
-    cleanEntries();
-  }
-
-  /**
-   * suppress all the entries created by the tests in this class
-   */
-  private void cleanEntries()
-  {
-    DeleteOperation op;
-    // Delete entries
-    Entry entries[] = entryList.toArray(new Entry[0]);
-    for (int i = entries.length - 1; i != 0; i--)
-    {
-      try
-      {
-        op = new DeleteOperation(connection, InternalClientConnection
-            .nextOperationID(), InternalClientConnection.nextMessageID(), null,
-            entries[i].getDN());
-        op.run();
-      } catch (Exception e)
-      {
-      }
-    }
-  }
-
-  /**
    * @return
    */
   private List<Modification> generatemods(String attrName, String attrValue)
@@ -391,68 +306,6 @@
     return mods;
   }
 
-  /**
-   * Open a changelog session to the local Changelog server.
-   *
-   */
-  private ChangelogBroker openChangelogSession(final DN baseDn, short serverId)
-          throws Exception, SocketException
-  {
-    PersistentServerState state = new PersistentServerState(baseDn);
-    state.loadState();
-    ChangelogBroker broker = new ChangelogBroker(state, baseDn,
-                                                 serverId, 0, 0, 0, 0, 100);
-    ArrayList<String> servers = new ArrayList<String>(1);
-    servers.add("localhost:8989");
-    broker.start(servers);
-    broker.setSoTimeout(5000);
-    return broker;
-  }
-
-  /**
-   * Configure the Synchronization for this test.
-   */
-  private void configureSynchronization() throws Exception
-  {
-    //
-    // Add the Multimaster synchronization plugin
-    DirectoryServer.getConfigHandler().addEntry(synchroPluginEntry, null);
-    entryList.add(synchroPluginEntry);
-    assertNotNull(DirectoryServer.getConfigEntry(DN
-        .decode(synchroPluginStringDN)),
-        "Unable to add the Multimaster synchronization plugin");
-
-    // WORKAROUND FOR BUG #639 - BEGIN -
-    DN dn = DN.decode(synchroPluginStringDN);
-    ConfigEntry mmsConfigEntry = DirectoryServer.getConfigEntry(dn);
-    mms = new MultimasterSynchronization();
-    try
-    {
-      mms.initializeSynchronizationProvider(mmsConfigEntry);
-    }
-    catch (ConfigException e)
-    {
-      assertTrue(false,
-          "Unable to initialize the Multimaster synchronization plugin");
-    }
-    DirectoryServer.registerSynchronizationProvider(mms);
-    // WORKAROUND FOR BUG #639 - END -
-
-    //
-    // Add the changelog server
-    DirectoryServer.getConfigHandler().addEntry(changeLogEntry, null);
-    assertNotNull(DirectoryServer.getConfigEntry(changeLogEntry.getDN()),
-        "Unable to add the changeLog server");
-    entryList.add(changeLogEntry);
-
-    //
-    // We also have a replicated suffix (synchronization domain)
-    DirectoryServer.getConfigHandler().addEntry(synchroServerEntry, null);
-    assertNotNull(DirectoryServer.getConfigEntry(synchroServerEntry.getDN()),
-        "Unable to add the synchronized server");
-    entryList.add(synchroServerEntry);
-  }
-
   private class BrokerWriter extends Thread
   {
     int count;
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SynchronizationTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SynchronizationTestCase.java
index 4346d6d..d06ab1f 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SynchronizationTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SynchronizationTestCase.java
@@ -26,8 +26,27 @@
  */
 package org.opends.server.synchronization;
 
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
+
+import java.net.SocketException;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.NoSuchElementException;
+
 import org.opends.server.DirectoryServerTestCase;
 import org.opends.server.TestCaseUtils;
+import org.opends.server.config.ConfigEntry;
+import org.opends.server.config.ConfigException;
+import org.opends.server.core.DeleteOperation;
+import org.opends.server.core.DirectoryServer;
+import org.opends.server.protocols.internal.InternalClientConnection;
+import org.opends.server.synchronization.plugin.ChangelogBroker;
+import org.opends.server.synchronization.plugin.MultimasterSynchronization;
+import org.opends.server.synchronization.plugin.PersistentServerState;
+import org.opends.server.types.DN;
+import org.opends.server.types.Entry;
+import org.testng.annotations.AfterClass;
 import org.testng.annotations.Test;
 
 import org.testng.annotations.BeforeClass;
@@ -40,6 +59,37 @@
 {
 
   /**
+  * The internal connection used for operation
+  */
+  protected InternalClientConnection connection;
+
+  /**
+   * Created entries that need to be deleted for cleanup
+   */
+  protected LinkedList<DN> entryList = new LinkedList<DN>();
+
+  protected Entry synchroPluginEntry;
+
+  protected Entry synchroServerEntry;
+
+  protected Entry changeLogEntry;
+
+  /**
+   * schema check flag
+   */
+  protected boolean schemaCheck;
+
+  /**
+   *
+   */
+  MultimasterSynchronization mms = null;
+
+  /**
+   * The synchronization plugin entry
+   */
+  protected String synchroPluginStringDN;
+
+  /**
    * Set up the environment for performing the tests in this suite.
    * 
    * @throws Exception
@@ -50,6 +100,134 @@
   {
     // This test suite depends on having the schema available.
     TestCaseUtils.startServer();
+    
+    // Create an internal connection
+    connection = new InternalClientConnection();
+  }
+  
+  /**
+   * Open a changelog session to the local Changelog server.
+   * @param window_size 
+   *
+   */
+  protected ChangelogBroker openChangelogSession(
+      final DN baseDn, short serverId, int window_size)
+          throws Exception, SocketException
+  {
+    PersistentServerState state = new PersistentServerState(baseDn);
+    state.loadState();
+    ChangelogBroker broker = new ChangelogBroker(
+        state, baseDn, serverId, 0, 0, 0, 0, window_size);
+    ArrayList<String> servers = new ArrayList<String>(1);
+    servers.add("localhost:8989");
+    broker.start(servers);
+    broker.setSoTimeout(1000);
+    /*
+     * loop receiving update until there is nothing left
+     * to make sure that message from previous tests have been consumed.
+     */
+    try
+    {
+      while (true)
+      {
+        broker.receive();
+      }
+    }
+    catch (Exception e)
+    { }
+    return broker;
+  }
+  
+  /**
+   * suppress all the entries created by the tests in this class
+   */
+  protected void cleanEntries()
+  {
+    DeleteOperation op;
+    // Delete entries
+    try
+    {
+      while (true)
+      {
+        DN dn = entryList.removeLast(); 
+        System.out.println("removing : " + dn);
+        op = new DeleteOperation(connection, InternalClientConnection
+            .nextOperationID(), InternalClientConnection.nextMessageID(), null,
+            dn);
+       
+        op.run();
+        System.out.println("removed : " + dn + " " + op.getResultCode());
+      }
+    }
+    catch (NoSuchElementException e) {
+      // done
+    }
+  }
+
+  /**
+   * Clean up the environment. return null;
+   *
+   * @throws Exception
+   *           If the environment could not be set up.
+   */
+  @AfterClass
+  public void classCleanUp() throws Exception
+  {
+    DirectoryServer.setCheckSchema(schemaCheck);
+  
+    // WORKAROUND FOR BUG #639 - BEGIN -
+    if (mms != null)
+    {
+      DirectoryServer.deregisterSynchronizationProvider(mms);
+      mms.finalizeSynchronizationProvider();
+    }
+    // WORKAROUND FOR BUG #639 - END -
+  
+    cleanEntries();
+  }
+
+  /**
+   * Configure the Synchronization for this test.
+   */
+  protected void configureSynchronization() throws Exception
+  {
+    //
+    // Add the Multimaster synchronization plugin
+    DirectoryServer.getConfigHandler().addEntry(synchroPluginEntry, null);
+    entryList.add(synchroPluginEntry.getDN());
+    assertNotNull(DirectoryServer.getConfigEntry(DN
+        .decode(synchroPluginStringDN)),
+        "Unable to add the Multimaster synchronization plugin");
+  
+    // WORKAROUND FOR BUG #639 - BEGIN -
+    DN dn = DN.decode(synchroPluginStringDN);
+    ConfigEntry mmsConfigEntry = DirectoryServer.getConfigEntry(dn);
+    mms = new MultimasterSynchronization();
+    try
+    {
+      mms.initializeSynchronizationProvider(mmsConfigEntry);
+    }
+    catch (ConfigException e)
+    {
+      assertTrue(false,
+          "Unable to initialize the Multimaster synchronization plugin");
+    }
+    DirectoryServer.registerSynchronizationProvider(mms);
+    // WORKAROUND FOR BUG #639 - END -
+  
+    //
+    // Add the changelog server
+    DirectoryServer.getConfigHandler().addEntry(changeLogEntry, null);
+    assertNotNull(DirectoryServer.getConfigEntry(changeLogEntry.getDN()),
+        "Unable to add the changeLog server");
+    entryList.add(changeLogEntry.getDN());
+  
+    //
+    // We also have a replicated suffix (synchronization domain)
+    DirectoryServer.getConfigHandler().addEntry(synchroServerEntry, null);
+    assertNotNull(DirectoryServer.getConfigEntry(synchroServerEntry.getDN()),
+        "Unable to add the synchronized server");
+    entryList.add(synchroServerEntry.getDN());
   }
 
 }
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/UpdateOperationTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/UpdateOperationTest.java
index 89609f1..31dc4cd 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/UpdateOperationTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/UpdateOperationTest.java
@@ -30,7 +30,6 @@
 import static org.opends.server.loggers.Error.logError;
 import static org.testng.Assert.*;
 
-import java.net.SocketException;
 import java.util.ArrayList;
 import java.util.LinkedHashSet;
 import java.util.List;
@@ -42,15 +41,11 @@
 import org.opends.server.schema.IntegerSyntax;
 import org.opends.server.synchronization.common.ChangeNumberGenerator;
 import org.opends.server.synchronization.plugin.ChangelogBroker;
-import org.opends.server.synchronization.plugin.MultimasterSynchronization;
-import org.opends.server.synchronization.plugin.PersistentServerState;
 import org.opends.server.synchronization.protocol.AddMsg;
 import org.opends.server.synchronization.protocol.DeleteMsg;
 import org.opends.server.synchronization.protocol.ModifyDNMsg;
 import org.opends.server.synchronization.protocol.ModifyMsg;
 import org.opends.server.synchronization.protocol.SynchronizationMessage;
-import org.opends.server.config.ConfigEntry;
-import org.opends.server.config.ConfigException;
 import org.opends.server.core.AddOperation;
 import org.opends.server.core.DeleteOperation;
 import org.opends.server.core.DirectoryServer;
@@ -61,7 +56,6 @@
 import org.opends.server.protocols.internal.InternalSearchOperation;
 import org.opends.server.protocols.ldap.LDAPFilter;
 import org.opends.server.types.*;
-import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
@@ -72,65 +66,12 @@
  */
 public class UpdateOperationTest extends SynchronizationTestCase
 {
-
-  /**
-   * The internal connection used for operation
-   */
-  private InternalClientConnection connection;
-
-  /**
-   * Created entries that need to be deleted for cleanup
-   */
-  private ArrayList<Entry> entryList = new ArrayList<Entry>();
-
-  /**
-   * The Synchronization config manager entry
-   */
-  private String synchroStringDN;
-
-  /**
-   * The synchronization plugin entry
-   */
-  private String synchroPluginStringDN;
-
-  private Entry synchroPluginEntry;
-
-  /**
-   * The Server synchro entry
-   */
-  private String synchroServerStringDN;
-
-  private Entry synchroServerEntry;
-
-  /**
-   * The Change log entry
-   */
-  private String changeLogStringDN;
-
-  private Entry changeLogEntry;
-
-  /**
-   * A "person" entry
-   */
-  private Entry personEntry;
-
   /**
    * An entry with a entryUUID
    */
   private Entry personWithUUIDEntry;
   private Entry personWithSecondUniqueID;
 
-  /**
-   * schema check flag
-   */
-  private boolean schemaCheck;
-
-  // WORKAROUND FOR BUG #639 - BEGIN -
-  /**
-   *
-   */
-  MultimasterSynchronization mms;
-
   private String baseUUID;
 
   private String user1dn;
@@ -138,8 +79,11 @@
   private String user1entrysecondUUID;
 
   private String user1entryUUID;
-
-  // WORKAROUND FOR BUG #639 - END -
+  
+  /**
+   * A "person" entry
+   */
+  protected Entry personEntry;
 
   /**
    * Set up the environment for performing the tests in this Class.
@@ -179,13 +123,13 @@
           entry.getUserAttributes(), entry.getOperationalAttributes());
       addOp.setInternalOperation(true);
       addOp.run();
-      entryList.add(entry);
+      entryList.add(entry.getDN());
     }
 
     baseUUID = getEntryUUID(DN.decode("ou=People,dc=example,dc=com"));
 
     // top level synchro provider
-    synchroStringDN = "cn=Synchronization Providers,cn=config";
+    String synchroStringDN = "cn=Synchronization Providers,cn=config";
 
     // Multimaster Synchro plugin
     synchroPluginStringDN = "cn=Multimaster Synchronization, "
@@ -200,7 +144,7 @@
     synchroPluginEntry = TestCaseUtils.entryFromLdifString(synchroPluginLdif);
 
     // Change log
-    changeLogStringDN = "cn=Changelog Server, " + synchroPluginStringDN;
+    String changeLogStringDN = "cn=Changelog Server, " + synchroPluginStringDN;
     String changeLogLdif = "dn: " + changeLogStringDN + "\n"
         + "objectClass: top\n"
         + "objectClass: ds-cfg-synchronization-changelog-server-config\n"
@@ -209,7 +153,7 @@
     changeLogEntry = TestCaseUtils.entryFromLdifString(changeLogLdif);
 
     // suffix synchronized
-    synchroServerStringDN = "cn=example, " + synchroPluginStringDN;
+    String synchroServerStringDN = "cn=example, " + synchroPluginStringDN;
     String synchroServerLdif = "dn: " + synchroServerStringDN + "\n"
         + "objectClass: top\n"
         + "objectClass: ds-cfg-synchronization-provider-config\n"
@@ -282,48 +226,6 @@
   }
 
   /**
-   * Clean up the environment. return null;
-   *
-   * @throws Exception
-   *           If the environment could not be set up.
-   */
-  @AfterClass
-  public void classCleanUp() throws Exception
-  {
-
-    DirectoryServer.setCheckSchema(schemaCheck);
-
-    // WORKAROUND FOR BUG #639 - BEGIN -
-    DirectoryServer.deregisterSynchronizationProvider(mms);
-    mms.finalizeSynchronizationProvider();
-    // WORKAROUND FOR BUG #639 - END -
-
-    cleanEntries();
-  }
-
-  /**
-   * suppress all the entries created by the tests in this class
-   */
-  private void cleanEntries()
-  {
-    DeleteOperation op;
-    // Delete entries
-    Entry entries[] = entryList.toArray(new Entry[0]);
-    for (int i = entries.length - 1; i != 0; i--)
-    {
-      try
-      {
-        op = new DeleteOperation(connection, InternalClientConnection
-            .nextOperationID(), InternalClientConnection.nextMessageID(), null,
-            entries[i].getDN());
-        op.run();
-      } catch (Exception e)
-      {
-      }
-    }
-  }
-
-  /**
    * Tests the naming conflict resolution code.
    * In this test, the local server act both as an LDAP server and
    * a changelog server that are inter-connected.
@@ -346,7 +248,7 @@
      * Open a session to the changelog server using the Changelog broker API.
      * This must use a serverId different from the LDAP server ID
      */
-    ChangelogBroker broker = openChangelogSession(baseDn, (short) 2);
+    ChangelogBroker broker = openChangelogSession(baseDn, (short) 2, 100);
 
     /*
      * Create a Change number generator to generate new changenumbers
@@ -375,7 +277,7 @@
     Entry resultEntry = getEntry(personWithUUIDEntry.getDN(), 10000, true);
     assertNotNull(resultEntry,
         "The send ADD synchronization message was not applied");
-    entryList.add(resultEntry);
+    entryList.add(resultEntry.getDN());
 
     // send a modify operation with the correct unique ID but another DN
     List<Modification> mods = generatemods("telephonenumber", "01 02 45");
@@ -412,7 +314,7 @@
     resultEntry = getEntry(personWithUUIDEntry.getDN(), 10000, true);
     assertNotNull(resultEntry,
         "The ADD synchronization message was not applied");
-    entryList.add(resultEntry);
+    entryList.add(resultEntry.getDN());
 
     // send a modify operation with a wrong unique ID but the same DN
     mods = generatemods("telephonenumber", "02 01 03 05");
@@ -464,7 +366,7 @@
     resultEntry = getEntry(personWithUUIDEntry.getDN(), 10000, true);
     assertNotNull(resultEntry,
         "The ADD synchronization message was not applied");
-    entryList.add(resultEntry);
+    entryList.add(resultEntry.getDN());
 
     //  create an entry with the same DN and another unique ID
     addMsg = new AddMsg(gen.NewChangeNumber(),
@@ -658,7 +560,7 @@
 
     cleanEntries();
 
-    ChangelogBroker broker = openChangelogSession(baseDn, (short) 27);
+    ChangelogBroker broker = openChangelogSession(baseDn, (short) 27, 100);
     try {
       ChangeNumberGenerator gen = new ChangeNumberGenerator((short) 27, 0);
 
@@ -688,7 +590,7 @@
           tmp.getObjectClasses(), tmp.getUserAttributes(),
           tmp.getOperationalAttributes());
       addOp.run();
-      entryList.add(personEntry);
+      entryList.add(personEntry.getDN());
       assertTrue(DirectoryServer.entryExists(personEntry.getDN()),
       "The Add Entry operation failed");
 
@@ -787,7 +689,7 @@
       Entry resultEntry = getEntry(personWithUUIDEntry.getDN(), 10000, true);
       assertNotNull(resultEntry,
       "The send ADD synchronization message was not applied");
-      entryList.add(resultEntry);
+      entryList.add(resultEntry.getDN());
 
       /*
        * Test the reception of Modify Msg
@@ -858,24 +760,6 @@
   }
 
   /**
-   * Open a changelog session to the local Changelog server.
-   *
-   */
-  private ChangelogBroker openChangelogSession(final DN baseDn, short serverId)
-          throws Exception, SocketException
-  {
-    PersistentServerState state = new PersistentServerState(baseDn);
-    state.loadState();
-    ChangelogBroker broker = new ChangelogBroker(state, baseDn,
-                                                 serverId, 0, 0, 0, 0, 100);
-    ArrayList<String> servers = new ArrayList<String>(1);
-    servers.add("localhost:8989");
-    broker.start(servers);
-    broker.setSoTimeout(1000);
-    return broker;
-  }
-
-  /**
    * Check that the entry with the given dn has the given valueString value
    * for the given attrTypeStr attribute type.
    */
@@ -1037,50 +921,6 @@
   }
 
   /**
-   * Configure the Synchronization for this test.
-   */
-  private void configureSynchronization() throws Exception
-  {
-    //
-    // Add the Multimaster synchronization plugin
-    DirectoryServer.getConfigHandler().addEntry(synchroPluginEntry, null);
-    entryList.add(synchroPluginEntry);
-    assertNotNull(DirectoryServer.getConfigEntry(DN
-        .decode(synchroPluginStringDN)),
-        "Unable to add the Multimaster synchronization plugin");
-
-    // WORKAROUND FOR BUG #639 - BEGIN -
-    DN dn = DN.decode(synchroPluginStringDN);
-    ConfigEntry mmsConfigEntry = DirectoryServer.getConfigEntry(dn);
-    mms = new MultimasterSynchronization();
-    try
-    {
-      mms.initializeSynchronizationProvider(mmsConfigEntry);
-    }
-    catch (ConfigException e)
-    {
-      assertTrue(false,
-          "Unable to initialize the Multimaster synchronization plugin");
-    }
-    DirectoryServer.registerSynchronizationProvider(mms);
-    // WORKAROUND FOR BUG #639 - END -
-
-    //
-    // Add the changelog server
-    DirectoryServer.getConfigHandler().addEntry(changeLogEntry, null);
-    assertNotNull(DirectoryServer.getConfigEntry(changeLogEntry.getDN()),
-        "Unable to add the changeLog server");
-    entryList.add(changeLogEntry);
-
-    //
-    // We also have a replicated suffix (synchronization domain)
-    DirectoryServer.getConfigHandler().addEntry(synchroServerEntry, null);
-    assertNotNull(DirectoryServer.getConfigEntry(synchroServerEntry.getDN()),
-        "Unable to add the syncrhonized server");
-    entryList.add(synchroServerEntry);
-  }
-
-  /**
    * Test case for
    * [Issue 635] NullPointerException when trying to access non existing entry.
    */
@@ -1116,7 +956,7 @@
     final DN baseDn = DN.decode("ou=People,dc=example,dc=com");
 
     Thread.sleep(2000);
-    ChangelogBroker broker = openChangelogSession(baseDn, (short) 11);
+    ChangelogBroker broker = openChangelogSession(baseDn, (short) 11, 100);
     try
     {
       ChangeNumberGenerator gen = new ChangeNumberGenerator((short) 11, 0);
@@ -1147,7 +987,7 @@
                             tmp.getOperationalAttributes());
       addOp.run();
       assertEquals(addOp.getResultCode(), ResultCode.SUCCESS);
-      entryList.add(tmp);
+      entryList.add(tmp.getDN());
 
       long initialCount = getReplayedUpdatesCount();
 

--
Gitblit v1.10.0