From d03a4043575eb981cae4124cf1dd6af74be498bd Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 24 Sep 2013 13:01:23 +0000
Subject: [PATCH] Replication tests cleanup and consolidation.

---
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/ReplicationServerFailoverTest.java      |   33 -
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/MonitorTest.java                        |   58 --
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/StateMachineTest.java                   |   28 -
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/service/ReplicationDomainTest.java             |   16 
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/GenerationIdTest.java                          |   54 --
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/HistoricalCsnOrderingTest.java          |    6 
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/TopologyViewTest.java                   |   36 -
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/AssuredReplicationServerTest.java       |  746 +++++++++--------------------------
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java              |   18 
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/GroupIdHandshakeTest.java               |   26 -
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/FractionalReplicationTest.java          |   12 
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/ReplicationServerLoadBalancingTest.java |   18 
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/DependencyTest.java                            |   35 -
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ReplicationTestCase.java                       |   28 +
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ReplicationServerTest.java              |   26 -
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/InitOnLineTest.java                            |   61 --
 16 files changed, 272 insertions(+), 929 deletions(-)

diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/DependencyTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/DependencyTest.java
index 8cc7a28..cb736d4 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/DependencyTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/DependencyTest.java
@@ -27,10 +27,6 @@
  */
 package org.opends.server.replication;
 
-import static org.opends.server.TestCaseUtils.*;
-import static org.testng.Assert.*;
-
-import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.util.LinkedList;
@@ -52,9 +48,11 @@
 import org.opends.server.replication.server.ReplicationServer;
 import org.opends.server.replication.service.ReplicationBroker;
 import org.opends.server.types.*;
-import org.opends.server.util.StaticUtils;
 import org.testng.annotations.Test;
 
+import static org.opends.server.TestCaseUtils.*;
+import static org.testng.Assert.*;
+
 /**
  * Test that the dependencies are computed correctly when replaying
  * sequences of operations that requires to follow a given order
@@ -225,11 +223,7 @@
     }
     finally
     {
-      if (replServer != null) {
-        replServer.remove();
-        StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-            replServer.getDbDirName()));
-      }
+      remove(replServer);
       if (domain != null)
         MultimasterReplication.deleteDomain(baseDn);
     }
@@ -342,12 +336,7 @@
     }
     finally
     {
-      if (replServer != null) {
-        replServer.remove();
-        StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-            replServer.getDbDirName()));
-      }
-
+      remove(replServer);
       if (domain != null)
         MultimasterReplication.deleteDomain(baseDn);
     }
@@ -501,12 +490,7 @@
     }
     finally
     {
-      if (replServer != null) {
-        replServer.remove();
-        StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-            replServer.getDbDirName()));
-      }
-
+      remove(replServer);
       if (domain != null)
         MultimasterReplication.deleteDomain(baseDn);
     }
@@ -609,12 +593,7 @@
     }
     finally
     {
-      if (replServer != null) {
-        replServer.remove();
-        StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-            replServer.getDbDirName()));
-      }
-
+      remove(replServer);
       if (domain != null)
         MultimasterReplication.deleteDomain(baseDn);
     }
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/GenerationIdTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/GenerationIdTest.java
index eb87cc4..cecdf6c 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/GenerationIdTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/GenerationIdTest.java
@@ -51,7 +51,6 @@
 import org.opends.server.replication.service.ReplicationBroker;
 import org.opends.server.tasks.LdifFileWriter;
 import org.opends.server.types.*;
-import org.opends.server.util.StaticUtils;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
@@ -735,11 +734,9 @@
       long genIdBeforeShut = replServer1.getGenerationId(baseDN);
 
       debugInfo("Shutdown replServer1");
-      broker2.stop();
-      broker2 = null;
-      broker3.stop();
-      broker3 = null;
-      replServer1.remove();
+      stop(broker2, broker3);
+      broker2 = broker3 = null;
+      remove(replServer1);
       replServer1 = null;
 
       debugInfo("Create again replServer1");
@@ -1176,46 +1173,14 @@
   {
     debugInfo("Post test cleaning.");
 
-    // Clean brokers
-    if (broker2 != null)
-      broker2.stop();
-    broker2 = null;
-    if (broker3 != null)
-      broker3.stop();
-    broker3 = null;
-
-    if (replServer1 != null)
-    {
-      replServer1.clearDb();
-      replServer1.remove();
-      StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-               replServer1.getDbDirName()));
-      replServer1 = null;
-    }
-    if (replServer2 != null)
-    {
-      replServer2.clearDb();
-      replServer2.remove();
-      StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-            replServer2.getDbDirName()));
-      replServer2 = null;
-    }
-    if (replServer3 != null)
-    {
-      replServer3.clearDb();
-      replServer3.remove();
-      StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-             replServer3.getDbDirName()));
-      replServer3 = null;
-    }
+    stop(broker2, broker3);
+    broker2 = broker3 = null;
+    remove(replServer1, replServer2, replServer3);
+    replServer1 = replServer2 = replServer3 = null;
 
     super.cleanRealEntries();
 
-    // Clean replication server ports
-    for (int i = 0; i < replServerPort.length; i++)
-    {
-      replServerPort[i] = 0;
-    }
+    Arrays.fill(replServerPort, 0);
 
     debugInfo("Clearing DS backend");
     try
@@ -1312,8 +1277,7 @@
       }
     } finally
     {
-      if (broker != null)
-        broker.stop();
+      stop(broker);
       postTest();
     }
   }
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/InitOnLineTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/InitOnLineTest.java
index ec5c490..17f61b3 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/InitOnLineTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/InitOnLineTest.java
@@ -27,7 +27,6 @@
  */
 package org.opends.server.replication;
 
-import java.io.File;
 import java.net.SocketTimeoutException;
 import java.util.*;
 
@@ -53,7 +52,6 @@
 import org.opends.server.schema.DirectoryStringSyntax;
 import org.opends.server.types.*;
 import org.opends.server.util.Base64;
-import org.opends.server.util.StaticUtils;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
@@ -1091,10 +1089,7 @@
 
     } finally
     {
-      if (broker2 != null)
-        broker2.stop();
-      if (broker3 != null)
-        broker3.stop();
+      stop(broker2, broker3);
       afterTest(testCase);
     }
   }
@@ -1452,7 +1447,6 @@
    */
   private void afterTest(String testCase)
   {
-
     // Check that the domain has completed the import/export task.
     if (replDomain != null)
     {
@@ -1474,55 +1468,16 @@
     super.cleanConfigEntries();
     replDomain = null;
 
-    // Clean brokers
-    if (server2 != null)
-    {
-      server2.stop();
-      sleep(100); // give some time to the broker to disconnect
-      // from the replicationServer.
-      server2 = null;
-    }
-    if (server3 != null)
-    {
-      server3.stop();
-      sleep(100); // give some time to the broker to disconnect
-      // from the replicationServer.
-      server3 = null;
-    }
+    stop(server2, server3);
+    sleep(100); // give some time to the brokers to disconnect from the replicationServer.
+    server2 = server3 = null;
+
     super.cleanRealEntries();
 
-    if (changelog1 != null)
-    {
-        changelog1.clearDb();
-        changelog1.remove();
-        StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-             changelog1.getDbDirName()));
-        changelog1 = null;
-    }
+    remove(changelog1, changelog2, changelog3);
+    changelog1 = changelog2 = changelog3 = null;
 
-    if (changelog2 != null)
-    {
-        changelog2.clearDb();
-        changelog2.remove();
-        StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-             changelog2.getDbDirName()));
-        changelog2 = null;
-    }
-
-    if (changelog3 != null)
-    {
-        changelog3.clearDb();
-        changelog3.remove();
-        StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-             changelog3.getDbDirName()));
-        changelog3 = null;
-    }
-
-    // Clean replication server ports
-    for (int i = 0; i < replServerPort.length; i++)
-    {
-      replServerPort[i] = 0;
-    }
+    Arrays.fill(replServerPort, 0);
     log("Successfully cleaned " + testCase);
   }
 
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ReplicationTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ReplicationTestCase.java
index a6d3d36..03fa0d8 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ReplicationTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ReplicationTestCase.java
@@ -64,7 +64,6 @@
 import org.opends.server.schema.DirectoryStringSyntax;
 import org.opends.server.schema.IntegerSyntax;
 import org.opends.server.types.*;
-import org.opends.server.util.StaticUtils;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
@@ -510,8 +509,31 @@
    */
   protected void removeReplicationServerDB() {
     for (ReplicationServer rs : ReplicationServer.getAllInstances()) {
-      StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-               rs.getDbDirName()));
+      recursiveDelete(new File(DirectoryServer.getInstanceRoot(), rs.getDbDirName()));
+    }
+  }
+
+  protected void remove(ReplicationServer... replicationServers)
+  {
+    for (ReplicationServer rs : replicationServers)
+    {
+      if (rs != null)
+      {
+        rs.clearDb();
+        rs.remove();
+        recursiveDelete(new File(DirectoryServer.getInstanceRoot(), rs.getDbDirName()));
+      }
+    }
+  }
+
+  protected void stop(ReplicationBroker... brokers)
+  {
+    for (ReplicationBroker broker : brokers)
+    {
+      if (broker != null)
+      {
+        broker.stop();
+      }
     }
   }
 
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/FractionalReplicationTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/FractionalReplicationTest.java
index 2c9d6a3..09f688e 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/FractionalReplicationTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/FractionalReplicationTest.java
@@ -27,7 +27,6 @@
  */
 package org.opends.server.replication.plugin;
 
-import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -56,7 +55,6 @@
 import org.opends.server.replication.server.ReplicationServer;
 import org.opends.server.replication.service.ReplicationDomain;
 import org.opends.server.types.*;
-import org.opends.server.util.StaticUtils;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
@@ -418,14 +416,8 @@
       fractionalDomainCfgEntry = null;
     }
 
-    if (replicationServer != null)
-    {
-      replicationServer.clearDb();
-      replicationServer.remove();
-      StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-                 replicationServer.getDbDirName()));
-      replicationServer = null;
-    }
+    remove(replicationServer);
+    replicationServer = null;
   }
 
   /**
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/GroupIdHandshakeTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/GroupIdHandshakeTest.java
index c42c61b..34e98b1 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/GroupIdHandshakeTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/GroupIdHandshakeTest.java
@@ -27,7 +27,6 @@
  */
 package org.opends.server.replication.plugin;
 
-import java.io.File;
 import java.io.IOException;
 import java.util.SortedSet;
 import java.util.TreeSet;
@@ -36,14 +35,12 @@
 import org.opends.messages.Message;
 import org.opends.messages.Severity;
 import org.opends.server.TestCaseUtils;
-import org.opends.server.core.DirectoryServer;
 import org.opends.server.loggers.debug.DebugTracer;
 import org.opends.server.replication.ReplicationTestCase;
 import org.opends.server.replication.server.ReplServerFakeConfiguration;
 import org.opends.server.replication.server.ReplicationServer;
 import org.opends.server.types.DN;
 import org.opends.server.types.HostPort;
-import org.opends.server.util.StaticUtils;
 import org.testng.annotations.Test;
 
 import static org.opends.server.TestCaseUtils.*;
@@ -112,28 +109,11 @@
 
     // Clear any reference to a domain in synchro plugin
     MultimasterReplication.deleteDomain(DN.decode(TEST_ROOT_DN_STRING));
-
-    rs1 = clear(rs1);
-    rs2 = clear(rs2);
-    rs3 = clear(rs3);
-    rs1Port = -1;
-    rs2Port = -1;
-    rs3Port = -1;
+    remove(rs1, rs2, rs3);
+    rs1 = rs2 = rs3 = null;
+    rs1Port = rs2Port = rs3Port = -1;
   }
 
-  private ReplicationServer clear(ReplicationServer rs)
-  {
-    if (rs != null)
-    {
-      rs.clearDb();
-      rs.remove();
-      StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-          rs.getDbDirName()));
-    }
-    return null;
-  }
-
-
   /**
    * Check connection of the provided replication domain to the provided
    * replication server. Waits for connection to be ok up to secTimeout seconds
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/HistoricalCsnOrderingTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/HistoricalCsnOrderingTest.java
index 6169744..d15bce3 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/HistoricalCsnOrderingTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/HistoricalCsnOrderingTest.java
@@ -27,7 +27,6 @@
  */
 package org.opends.server.replication.plugin;
 
-import java.io.File;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.SortedSet;
@@ -47,7 +46,6 @@
 import org.opends.server.replication.server.ReplicationServer;
 import org.opends.server.replication.service.ReplicationBroker;
 import org.opends.server.types.*;
-import org.opends.server.util.StaticUtils;
 import org.opends.server.util.TimeThread;
 import org.testng.annotations.Test;
 
@@ -217,9 +215,7 @@
     finally
     {
       MultimasterReplication.deleteDomain(baseDn);
-      rs.remove();
-      StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-                 rs.getDbDirName()));
+      remove(rs);
     }
   }
 
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/ReplicationServerFailoverTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/ReplicationServerFailoverTest.java
index 67f22ee..086fc32 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/ReplicationServerFailoverTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/ReplicationServerFailoverTest.java
@@ -27,7 +27,6 @@
  */
 package org.opends.server.replication.plugin;
 
-import java.io.File;
 import java.io.IOException;
 import java.util.SortedSet;
 import java.util.TreeSet;
@@ -37,14 +36,12 @@
 import org.opends.messages.Severity;
 import org.opends.server.TestCaseUtils;
 import org.opends.server.config.ConfigException;
-import org.opends.server.core.DirectoryServer;
 import org.opends.server.loggers.debug.DebugTracer;
 import org.opends.server.replication.ReplicationTestCase;
 import org.opends.server.replication.server.ReplServerFakeConfiguration;
 import org.opends.server.replication.server.ReplicationServer;
 import org.opends.server.types.DN;
 import org.opends.server.types.HostPort;
-import org.opends.server.util.StaticUtils;
 import org.testng.annotations.Test;
 
 import static org.opends.server.TestCaseUtils.*;
@@ -84,12 +81,9 @@
 
   private void initTest() throws IOException
   {
-    rs1Port = -1;
-    rs2Port = -1;
-    rd1 = null;
-    rd2 = null;
-    rs1 = null;
-    rs2 = null;
+    rs1Port = rs2Port = -1;
+    rd1 = rd2 = null;
+    rs1 = rs2 = null;
     findFreePorts();
   }
 
@@ -109,24 +103,9 @@
 
     // Clear any reference to a domain in synchro plugin
     MultimasterReplication.deleteDomain(DN.decode(TEST_ROOT_DN_STRING));
-
-    rs1 = clear(rs1);
-    rs2 = clear(rs2);
-
-    rs1Port = -1;
-    rs2Port = -1;
-  }
-
-  private ReplicationServer clear(ReplicationServer rs)
-  {
-    if (rs != null)
-    {
-      rs.clearDb();
-      rs.remove();
-      StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-          rs.getDbDirName()));
-    }
-    return null;
+    remove(rs1, rs2);
+    rs1 = rs2 = null;
+    rs1Port = rs2Port = -1;
   }
 
   /**
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/ReplicationServerLoadBalancingTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/ReplicationServerLoadBalancingTest.java
index 0459a55..c975942 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/ReplicationServerLoadBalancingTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/ReplicationServerLoadBalancingTest.java
@@ -27,7 +27,6 @@
  */
 package org.opends.server.replication.plugin;
 
-import java.io.File;
 import java.util.*;
 
 import org.opends.messages.Category;
@@ -35,14 +34,12 @@
 import org.opends.messages.Severity;
 import org.opends.server.TestCaseUtils;
 import org.opends.server.admin.std.server.ReplicationServerCfg;
-import org.opends.server.core.DirectoryServer;
 import org.opends.server.loggers.debug.DebugTracer;
 import org.opends.server.replication.ReplicationTestCase;
 import org.opends.server.replication.server.ReplServerFakeConfiguration;
 import org.opends.server.replication.server.ReplicationServer;
 import org.opends.server.replication.server.ReplicationServerDomain;
 import org.opends.server.types.DN;
-import org.opends.server.util.StaticUtils;
 import org.testng.annotations.Test;
 
 import static org.opends.server.TestCaseUtils.*;
@@ -103,18 +100,9 @@
 
     // Clear any reference to a domain in synchro plugin
     MultimasterReplication.deleteDomain(DN.decode(TEST_ROOT_DN_STRING));
-
-    for (int i = 0; i < NRS; i++)
-    {
-      if (rs[i] != null)
-      {
-        stopRs(i);
-        StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-                 rs[i].getDbDirName()));
-        rs[i] = null;
-      }
-      rsPort[i] = -1;
-    }
+    remove(rs);
+    Arrays.fill(rs, null);
+    Arrays.fill(rsPort, -1);
     debugInfo("endTest done");
   }
 
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/StateMachineTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/StateMachineTest.java
index ab0835d..84fad9b 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/StateMachineTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/StateMachineTest.java
@@ -27,7 +27,6 @@
  */
 package org.opends.server.replication.plugin;
 
-import java.io.File;
 import java.io.IOException;
 import java.net.SocketTimeoutException;
 import java.util.ArrayList;
@@ -57,7 +56,6 @@
 import org.opends.server.types.Attribute;
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
-import org.opends.server.util.StaticUtils;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.DataProvider;
@@ -119,28 +117,10 @@
 
     // Clear any reference to a domain in synchro plugin
     MultimasterReplication.deleteDomain(EXAMPLE_DN_);
-
-    if (ds2 != null)
-    {
-      ds2.stop();
-      ds2 = null;
-    }
-
-     if (ds3 != null)
-    {
-      ds3.stop();
-      ds3 = null;
-    }
-
-    if (rs1 != null)
-    {
-      rs1.clearDb();
-      rs1.remove();
-      StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-                 rs1.getDbDirName()));
-      rs1 = null;
-    }
-
+    stop(ds2, ds3);
+    ds2 = ds3 = null;
+    remove(rs1);
+    rs1 = null;
     rs1Port = -1;
   }
 
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/TopologyViewTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/TopologyViewTest.java
index 65908b5..60c1299 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/TopologyViewTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/TopologyViewTest.java
@@ -27,7 +27,6 @@
  */
 package org.opends.server.replication.plugin;
 
-import java.io.File;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.*;
@@ -38,7 +37,6 @@
 import org.opends.server.TestCaseUtils;
 import org.opends.server.admin.std.meta.ReplicationDomainCfgDefn.AssuredType;
 import org.opends.server.config.ConfigException;
-import org.opends.server.core.DirectoryServer;
 import org.opends.server.loggers.debug.DebugTracer;
 import org.opends.server.replication.ReplicationTestCase;
 import org.opends.server.replication.common.AssuredMode;
@@ -50,7 +48,6 @@
 import org.opends.server.replication.server.ReplicationServer;
 import org.opends.server.types.DN;
 import org.opends.server.types.HostPort;
-import org.opends.server.util.StaticUtils;
 import org.testng.annotations.Test;
 
 import static org.opends.server.TestCaseUtils.*;
@@ -213,36 +210,9 @@
 
     // Clear any reference to a domain in synchro plugin
     MultimasterReplication.deleteDomain(DN.decode(TEST_ROOT_DN_STRING));
-
-    if (rs1 != null)
-    {
-      rs1.clearDb();
-      rs1.remove();
-      StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-            rs1.getDbDirName()));
-      rs1 = null;
-    }
-
-    if (rs2 != null)
-    {
-      rs2.clearDb();
-      rs2.remove();
-      StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-            rs2.getDbDirName()));
-      rs2 = null;
-    }
-
-    if (rs3 != null)
-    {
-      rs3.clearDb();
-      rs3.remove();
-      StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-            rs3.getDbDirName()));
-      rs3 = null;
-    }
-    rs1Port = -1;
-    rs2Port = -1;
-    rs3Port = -1;
+    remove(rs1, rs2, rs3);
+    rs1 = rs2 = rs3 = null;
+    rs1Port = rs2Port = rs3Port = -1;
   }
 
   /**
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/AssuredReplicationServerTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/AssuredReplicationServerTest.java
index 976814a..93c1a8f 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/AssuredReplicationServerTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/AssuredReplicationServerTest.java
@@ -27,7 +27,6 @@
  */
 package org.opends.server.replication.server;
 
-import java.io.File;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.InetSocketAddress;
@@ -42,7 +41,6 @@
 import org.opends.messages.Severity;
 import org.opends.server.TestCaseUtils;
 import org.opends.server.config.ConfigException;
-import org.opends.server.core.DirectoryServer;
 import org.opends.server.loggers.debug.DebugTracer;
 import org.opends.server.replication.ReplicationTestCase;
 import org.opends.server.replication.common.*;
@@ -52,11 +50,12 @@
 import org.opends.server.types.DN;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.HostPort;
-import org.opends.server.util.StaticUtils;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
+import static java.util.Arrays.*;
+
 import static org.opends.server.TestCaseUtils.*;
 import static org.opends.server.loggers.ErrorLogger.*;
 import static org.opends.server.loggers.debug.DebugLogger.*;
@@ -74,10 +73,7 @@
   private String testName = this.getClass().getSimpleName();
   /** The tracer object for the debug logger */
   private static final DebugTracer TRACER = getTracer();
-  private int rs1Port = -1;
-  private int rs2Port = -1;
-  private int rs3Port = -1;
-  private int rs4Port = -1;
+  private int[] rsPorts;
   private static final int FDS1_ID = 1;
   private static final int FDS2_ID = 2;
   private static final int FDS3_ID = 3;
@@ -98,18 +94,11 @@
   private static final int RS2_ID = 102;
   private static final int RS3_ID = 103;
   private static final int RS4_ID = 104;
-  private FakeReplicationDomain fakeRd1 = null;
-  private FakeReplicationDomain fakeRd2 = null;
-  private FakeReplicationDomain fakeRd3 = null;
-  private FakeReplicationDomain fakeRd4 = null;
-  private FakeReplicationDomain fakeRd5 = null;
-  private FakeReplicationDomain fakeRd6 = null;
-  private FakeReplicationDomain fakeRd7 = null;
-  private FakeReplicationDomain fakeRd8 = null;
-  private FakeReplicationDomain fakeRd9 = null;
-  private FakeReplicationDomain fakeRd10 = null;
-  private FakeReplicationDomain fakeRd11 = null;
-  private FakeReplicationDomain fakeRd12 = null;
+  /**
+   * We don't use index 0 to stay consistent with what old code was doing
+   * <code>fakeRd1 == fakeRDs[1]</code>, etc.
+   */
+  private FakeReplicationDomain[] fakeRDs;
   private FakeReplicationServer fakeRs1 = null;
   private FakeReplicationServer fakeRs2 = null;
   private FakeReplicationServer fakeRs3 = null;
@@ -202,169 +191,48 @@
   {
     super.setUp();
 
-    int[] ports = TestCaseUtils.findFreePorts(4);
-    int i = 0;
-    rs1Port = ports[i++];
-    rs2Port = ports[i++];
-    rs3Port = ports[i++];
-    rs4Port = ports[i++];
+    rsPorts = TestCaseUtils.findFreePorts(4);
   }
 
   private void initTest()
   {
-    fakeRd1 = null;
-    fakeRd2 = null;
-    fakeRd3 = null;
-    fakeRd4 = null;
-    fakeRd5 = null;
-    fakeRd6 = null;
-    fakeRd7 = null;
-    fakeRd8 = null;
-    fakeRd9 = null;
-    fakeRd10 = null;
-    fakeRd11 = null;
-    fakeRd12 = null;
-    fakeRs1 = null;
-    fakeRs2 = null;
-    fakeRs3 = null;
-    rs1 = null;
-    rs2 = null;
-    rs3 = null;
-    rs4 = null;
+    fakeRDs = new FakeReplicationDomain[13];
+    fakeRs1 = fakeRs2 = fakeRs3 = null;
+    rs1 = rs2 = rs3 = rs4 = null;
   }
 
   private void endTest()
   {
-    // Shutdown fake DSs
+    disableService(fakeRDs);
+    Arrays.fill(fakeRDs, null);
+    shutdown(fakeRs1, fakeRs2, fakeRs3);
+    fakeRs1 = fakeRs2 = fakeRs3 = null;
+    remove(rs1, rs2, rs3, rs4);
+    rs1 = rs2 = rs3 = rs4 = null;
+  }
 
-    if (fakeRd1 != null)
+  private void disableService(FakeReplicationDomain... fakeRDs)
+  {
+    for (FakeReplicationDomain fakeRd : fakeRDs)
     {
-      fakeRd1.disableService();
-      fakeRd1 = null;
-    }
-
-    if (fakeRd2 != null)
-    {
-      fakeRd2.disableService();
-      fakeRd2 = null;
-    }
-
-    if (fakeRd3 != null)
-    {
-      fakeRd3.disableService();
-      fakeRd3 = null;
-    }
-
-    if (fakeRd4 != null)
-    {
-      fakeRd4.disableService();
-      fakeRd4 = null;
-    }
-
-    if (fakeRd5 != null)
-    {
-      fakeRd5.disableService();
-      fakeRd5 = null;
-    }
-
-    if (fakeRd6 != null)
-    {
-      fakeRd6.disableService();
-      fakeRd6 = null;
-    }
-
-    if (fakeRd7 != null)
-    {
-      fakeRd7.disableService();
-      fakeRd7 = null;
-    }
-
-    if (fakeRd8 != null)
-    {
-      fakeRd8.disableService();
-      fakeRd8 = null;
-    }
-
-    if (fakeRd9 != null)
-    {
-      fakeRd9.disableService();
-      fakeRd9 = null;
-    }
-
-    if (fakeRd10 != null)
-    {
-      fakeRd10.disableService();
-      fakeRd10 = null;
-    }
-
-    if (fakeRd11 != null)
-    {
-      fakeRd11.disableService();
-      fakeRd11 = null;
-    }
-
-    if (fakeRd12 != null)
-    {
-      fakeRd12.disableService();
-      fakeRd12 = null;
-    }
-
-    // Shutdown fake RSs
-
-    if (fakeRs1 != null)
-    {
-      fakeRs1.shutdown();
-      fakeRs1 = null;
-    }
-
-    if (fakeRs2 != null)
-    {
-      fakeRs2.shutdown();
-      fakeRs2 = null;
-    }
-
-    if (fakeRs3 != null)
-    {
-      fakeRs3.shutdown();
-      fakeRs3 = null;
-    }
-
-    // Shutdown RSs
-
-    if (rs1 != null)
-    {
-      rs1.clearDb();
-      rs1.remove();
-      StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-               rs1.getDbDirName()));
-      rs1 = null;
-    }
-
-    if (rs2 != null)
-    {
-      rs2.clearDb();
-      rs2.remove();
-      StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-               rs2.getDbDirName()));
-      rs2 = null;
-    }
-    if (rs3 != null)
-    {
-      rs3.clearDb();
-      rs3.remove();
-      StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-               rs3.getDbDirName()));
-      rs3 = null;
-    }
-    if (rs4 != null)
-    {
-      rs4.clearDb();
-      rs4.remove();
-      StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-               rs4.getDbDirName()));
-      rs4 = null;
+      if (fakeRd != null)
+      {
+        fakeRd.disableService();
+      }
     }
   }
+
+  private void shutdown(FakeReplicationServer... fakeRSs)
+  {
+    for (FakeReplicationServer fakeRs : fakeRSs)
+    {
+      if (fakeRs != null)
+      {
+        fakeRs.shutdown();
+      }
+    }
+  }
+
   /**
    * Creates and connects a new fake replication domain, using the passed scenario
    * (no server state constructor version)
@@ -379,40 +247,9 @@
       assuredMode, safeDataLevel, assuredTimeout, scenario, new ServerState(), true, 100);
   }
 
-  /**
-   * Creates and connects a new fake replication domain, using the passed scenario.
-   */
-  private FakeReplicationDomain createFakeReplicationDomain(int serverId,
-    int groupId, int rsId, long generationId, boolean assured,
-    AssuredMode assuredMode, int safeDataLevel, long assuredTimeout,
-    int scenario, ServerState serverState)
-      throws Exception
-  {
-   return createFakeReplicationDomain(serverId, groupId, rsId, generationId, assured,
-    assuredMode, safeDataLevel, assuredTimeout, scenario, serverState, true, 100);
-  }
-
   private int getRsPort(int rsId)
   {
-    int rsPort = -1;
-    switch (rsId)
-    {
-      case RS1_ID:
-        rsPort = rs1Port;
-        break;
-      case RS2_ID:
-        rsPort = rs2Port;
-        break;
-      case RS3_ID:
-        rsPort = rs3Port;
-        break;
-      case RS4_ID:
-        rsPort = rs4Port;
-        break;
-      default:
-        fail("Unknown RS id: " + rsId);
-    }
-    return rsPort;
+    return rsPorts[rsId - 101];
   }
 
   /**
@@ -540,14 +377,14 @@
     SortedSet<String> replServers = new TreeSet<String>();
     if (totalNbRS >= 2)
     {
-      addIfNotSame(replServers, rs1Port, excludedRsPort);
-      addIfNotSame(replServers, rs2Port, excludedRsPort);
+      addIfNotSame(replServers, rsPorts[0], excludedRsPort);
+      addIfNotSame(replServers, rsPorts[1], excludedRsPort);
       if (totalNbRS >= 3)
       {
-        addIfNotSame(replServers, rs3Port, excludedRsPort);
+        addIfNotSame(replServers, rsPorts[2], excludedRsPort);
         if (totalNbRS >= 4)
         {
-          addIfNotSame(replServers, rs4Port, excludedRsPort);
+          addIfNotSame(replServers, rsPorts[3], excludedRsPort);
         }
       }
     }
@@ -1209,10 +1046,9 @@
 
       // Create and connect fake domain 1 to RS 1
       // Assured mode: SD, level 1
-      fakeRd1 = createFakeReplicationDomain(FDS1_ID, mainDsGid, RS1_ID,
+      fakeRDs[1] = createFakeReplicationDomain(FDS1_ID, mainDsGid, RS1_ID,
         DEFAULT_GENID, true, AssuredMode.SAFE_DATA_MODE, 1, LONG_TIMEOUT,
         TIMEOUT_DS_SCENARIO);
-      assertNotNull(fakeRd1);
 
       /*
        * Start one other fake DS
@@ -1226,10 +1062,9 @@
         // by mistake sends an assured error and expects an ack from this DS:
         // this would timeout. If main DS group id is not the same as the real RS one,
         // the update will even not come to real RS as assured
-        fakeRd2 = createFakeReplicationDomain(FDS2_ID, otherFakeDsGid, RS1_ID,
+        fakeRDs[2] = createFakeReplicationDomain(FDS2_ID, otherFakeDsGid, RS1_ID,
           DEFAULT_GENID, false, AssuredMode.SAFE_DATA_MODE, 1, LONG_TIMEOUT,
           TIMEOUT_DS_SCENARIO);
-        assertNotNull(fakeRd2);
       }
 
       /*
@@ -1246,10 +1081,10 @@
         // the update will even not come to real RS as assured
         fakeRs1 = createFakeReplicationServer(FRS1_ID, fakeRsGid, RS1_ID,
           DEFAULT_GENID, false, AssuredMode.SAFE_DATA_MODE, 1, new ServerState(), TIMEOUT_RS_SCENARIO);
-        assertNotNull(fakeRs1);
       }
 
       // Send update from DS 1
+      final FakeReplicationDomain fakeRd1 = fakeRDs[1];
       long startTime = System.currentTimeMillis();
       fakeRd1.sendNewFakeUpdate();
 
@@ -1283,6 +1118,7 @@
       assertTrue(fakeRd1.receivedUpdatesOk());
       if (otherFakeDS)
       {
+        final FakeReplicationDomain fakeRd2 = fakeRDs[2];
         assertEquals(fakeRd2.getReceivedUpdates(), 1);
         assertTrue(fakeRd2.receivedUpdatesOk());
       }
@@ -1558,10 +1394,9 @@
        */
 
       // Create and connect fake domain 1 to RS 1
-      fakeRd1 = createFakeReplicationDomain(FDS1_ID, DEFAULT_GID, RS1_ID,
+      fakeRDs[1] = createFakeReplicationDomain(FDS1_ID, DEFAULT_GID, RS1_ID,
         DEFAULT_GENID, true, AssuredMode.SAFE_DATA_MODE, sdLevel, LONG_TIMEOUT,
         TIMEOUT_DS_SCENARIO);
-      assertNotNull(fakeRd1);
 
       /*
        * Start one other fake DS
@@ -1570,10 +1405,9 @@
       // Put another fake domain connected to real RS ?
       if (otherFakeDS)
       {
-        fakeRd2 = createFakeReplicationDomain(FDS2_ID, otherFakeDsGid, RS1_ID,
+        fakeRDs[2] = createFakeReplicationDomain(FDS2_ID, otherFakeDsGid, RS1_ID,
           otherFakeDsGenId, false, AssuredMode.SAFE_DATA_MODE, sdLevel, LONG_TIMEOUT,
           TIMEOUT_DS_SCENARIO);
-        assertNotNull(fakeRd2);
       }
 
       /*
@@ -1584,22 +1418,20 @@
       fakeRs1 = createFakeReplicationServer(FRS1_ID, fakeRs1Gid, RS1_ID,
         fakeRs1GenId, fakeRs1Gid == DEFAULT_GID, AssuredMode.SAFE_DATA_MODE, sdLevel,
         new ServerState(), fakeRs1Scen);
-      assertNotNull(fakeRs1);
 
       // Put a fake RS 2 connected to real RS
       fakeRs2 = createFakeReplicationServer(FRS2_ID, fakeRs2Gid, RS1_ID,
         fakeRs2GenId, fakeRs2Gid == DEFAULT_GID, AssuredMode.SAFE_DATA_MODE, sdLevel,
         new ServerState(), fakeRs2Scen);
-      assertNotNull(fakeRs2);
 
       // Put a fake RS 3 connected to real RS
       fakeRs3 = createFakeReplicationServer(FRS3_ID, fakeRs3Gid, RS1_ID,
         fakeRs3GenId, fakeRs3Gid == DEFAULT_GID, AssuredMode.SAFE_DATA_MODE, sdLevel,
         new ServerState(), fakeRs3Scen);
-      assertNotNull(fakeRs3);
 
       // Wait for connections to be finished
       // DS must see expected numbers of fake DSs and RSs
+      final FakeReplicationDomain fakeRd1 = fakeRDs[1];
       waitForStableTopo(fakeRd1, (otherFakeDS ? 1 : 0), 4);
 
       /***********************************************************************
@@ -1730,6 +1562,9 @@
    */
   private void checkWhatHasBeenReceivedSafeData(int nSentUpdates, boolean otherFakeDS, long otherFakeDsGenId, long fakeRs1GenId, long fakeRs2GenId, long fakeRs3GenId, List<Integer> expectedServers)
   {
+    final FakeReplicationDomain fakeRd1 = fakeRDs[1];
+    final FakeReplicationDomain fakeRd2 = fakeRDs[2];
+
     // We should not receive our own update
     assertEquals(fakeRd1.getReceivedUpdates(), 0);
     assertTrue(fakeRd1.receivedUpdatesOk());
@@ -1780,10 +1615,7 @@
     else
       assertEquals(fakeRs.getReceivedUpdates(), nSentUpdates);
     assertTrue(fakeRs.receivedUpdatesOk());
-    if (expectedServers.contains(fakeRsId))
-      assertTrue(fakeRs.ackReplied());
-    else
-      assertFalse(fakeRs.ackReplied());
+    assertEquals(fakeRs.ackReplied(), expectedServers.contains(fakeRsId));
   }
 
   /**
@@ -1793,6 +1625,7 @@
   private void checkTimeAndMonitoringSafeData(int nSentUpdates, int prevNAckUpdates, int prevNTimeoutUpdates, Map<Integer,Integer> prevNServerErrors, long sendUpdateTime,
     int nWishedServers, List<Integer> eligibleServers, List<Integer> expectedServers)
   {
+    final FakeReplicationDomain fakeRd1 = fakeRDs[1];
     assertEquals(fakeRd1.getAssuredSdSentUpdates(), nSentUpdates);
     if (eligibleServers.size() >= nWishedServers) // Enough eligible servers
     {
@@ -2074,7 +1907,6 @@
       fakeRs2 = createFakeReplicationServer(FRS2_ID, DEFAULT_GID, RS1_ID,
         DEFAULT_GENID, false, AssuredMode.SAFE_DATA_MODE, 10,
         new ServerState(), TIMEOUT_RS_SCENARIO);
-      assertNotNull(fakeRs2);
 
       /*
        * Start fake RS to send updates
@@ -2084,7 +1916,6 @@
       fakeRs1 = createFakeReplicationServer(FRS1_ID, fakeRsGid, RS1_ID,
         fakeRsGenId, sendInAssured, AssuredMode.SAFE_DATA_MODE, sdLevel,
         new ServerState(), SENDER_RS_SCENARIO);
-      assertNotNull(fakeRs1);
 
       /*
        * Send an assured update using configured assured parameters
@@ -2188,13 +2019,13 @@
 
       // Wait for RSs to connect together
       // Create and connect fake domain 1 to RS 1
-      fakeRd1 = createFakeReplicationDomain(FDS1_ID, DEFAULT_GID, RS1_ID,
+      fakeRDs[1] = createFakeReplicationDomain(FDS1_ID, DEFAULT_GID, RS1_ID,
         DEFAULT_GENID, true, AssuredMode.SAFE_DATA_MODE, sdLevel, LONG_TIMEOUT,
         TIMEOUT_DS_SCENARIO);
-      assertNotNull(fakeRd1);
 
       // Wait for RSs connections to be finished
       // DS must see expected numbers of RSs
+      final FakeReplicationDomain fakeRd1 = fakeRDs[1];
       waitForStableTopo(fakeRd1, 0, 3);
 
       /*
@@ -2250,14 +2081,14 @@
 
       // Create and connect DS 1 to RS 1
       // Assured mode: SR
-      fakeRd1 = createFakeReplicationDomain(FDS1_ID, DEFAULT_GID, RS1_ID,
+      fakeRDs[1] = createFakeReplicationDomain(FDS1_ID, DEFAULT_GID, RS1_ID,
         DEFAULT_GENID, true, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         TIMEOUT_DS_SCENARIO);
-      assertNotNull(fakeRd1);
 
       /*
        * Send a first assured safe read update
        */
+      final FakeReplicationDomain fakeRd1 = fakeRDs[1];
       long startTime = System.currentTimeMillis();
       fakeRd1.sendNewFakeUpdate();
       long sendUpdateTime = System.currentTimeMillis() - startTime;
@@ -2267,16 +2098,7 @@
 
       // Check monitoring values (check that ack has been correctly received)
       Thread.sleep(500); // Sleep a while as counters are updated just after sending thread is unblocked
-      assertEquals(fakeRd1.getAssuredSrSentUpdates(), 1);
-      assertEquals(fakeRd1.getAssuredSrAcknowledgedUpdates(), 1);
-      assertEquals(fakeRd1.getAssuredSrNotAcknowledgedUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrTimeoutUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrWrongStatusUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrReplayErrorUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrServerNotAcknowledgedUpdates().size(), 0);
-      assertEquals(fakeRd1.getAssuredSrReceivedUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrReceivedUpdatesAcked(), 0);
-      assertEquals(fakeRd1.getAssuredSrReceivedUpdatesNotAcked(), 0);
+      checkDSSentAndAcked(fakeRd1, 1);
 
       // Sanity check
       assertEquals(fakeRd1.getReceivedUpdates(), 0);
@@ -2289,10 +2111,9 @@
       // Create and connect DS 2 to RS 1
       // Assured mode: SR
       ServerState serverState = fakeRd1.getServerState();
-      fakeRd2 = createFakeReplicationDomain(FDS2_ID, DEFAULT_GID, RS1_ID,
+      fakeRDs[2] = createFakeReplicationDomain(FDS2_ID, DEFAULT_GID, RS1_ID,
         DEFAULT_GENID, true, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
-        REPLY_OK_DS_SCENARIO, serverState);
-      assertNotNull(fakeRd2);
+        REPLY_OK_DS_SCENARIO, serverState, true, 100);
 
       // Wait for connections to be established
       waitForStableTopo(fakeRd1, 1, 1);
@@ -2309,27 +2130,10 @@
 
       // Check monitoring values (check that ack has been correctly received)
       Thread.sleep(500); // Sleep a while as counters are updated just after sending thread is unblocked
-      assertEquals(fakeRd1.getAssuredSrSentUpdates(), 2);
-      assertEquals(fakeRd1.getAssuredSrAcknowledgedUpdates(), 2);
-      assertEquals(fakeRd1.getAssuredSrNotAcknowledgedUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrTimeoutUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrWrongStatusUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrReplayErrorUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrServerNotAcknowledgedUpdates().size(), 0);
-      assertEquals(fakeRd1.getAssuredSrReceivedUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrReceivedUpdatesAcked(), 0);
-      assertEquals(fakeRd1.getAssuredSrReceivedUpdatesNotAcked(), 0);
+      checkDSSentAndAcked(fakeRd1, 2);
 
-      assertEquals(fakeRd2.getAssuredSrSentUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrAcknowledgedUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrNotAcknowledgedUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrTimeoutUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrWrongStatusUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrReplayErrorUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrServerNotAcknowledgedUpdates().size(), 0);
-      assertEquals(fakeRd2.getAssuredSrReceivedUpdates(), 1);
-      assertEquals(fakeRd2.getAssuredSrReceivedUpdatesAcked(), 1);
-      assertEquals(fakeRd2.getAssuredSrReceivedUpdatesNotAcked(), 0);
+      final FakeReplicationDomain fakeRd2 = fakeRDs[2];
+      checkDSReceivedAndAcked(fakeRd2, 1);
 
       // Sanity check
       assertEquals(fakeRd1.getReceivedUpdates(), 0);
@@ -2345,7 +2149,6 @@
       fakeRs1 = createFakeReplicationServer(FRS1_ID, DEFAULT_GID, RS1_ID,
         DEFAULT_GENID, true, AssuredMode.SAFE_READ_MODE, 1,
         fakeRd1.getServerState(), REPLY_OK_RS_SCENARIO);
-      assertNotNull(fakeRs1);
 
       // Wait for connections to be established
       waitForStableTopo(fakeRd1, 1, 2);
@@ -2362,27 +2165,8 @@
 
       // Check monitoring values (check that ack has been correctly received)
       Thread.sleep(500); // Sleep a while as counters are updated just after sending thread is unblocked
-      assertEquals(fakeRd1.getAssuredSrSentUpdates(), 3);
-      assertEquals(fakeRd1.getAssuredSrAcknowledgedUpdates(), 3);
-      assertEquals(fakeRd1.getAssuredSrNotAcknowledgedUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrTimeoutUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrWrongStatusUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrReplayErrorUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrServerNotAcknowledgedUpdates().size(), 0);
-      assertEquals(fakeRd1.getAssuredSrReceivedUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrReceivedUpdatesAcked(), 0);
-      assertEquals(fakeRd1.getAssuredSrReceivedUpdatesNotAcked(), 0);
-
-      assertEquals(fakeRd2.getAssuredSrSentUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrAcknowledgedUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrNotAcknowledgedUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrTimeoutUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrWrongStatusUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrReplayErrorUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrServerNotAcknowledgedUpdates().size(), 0);
-      assertEquals(fakeRd2.getAssuredSrReceivedUpdates(), 2);
-      assertEquals(fakeRd2.getAssuredSrReceivedUpdatesAcked(), 2);
-      assertEquals(fakeRd2.getAssuredSrReceivedUpdatesNotAcked(), 0);
+      checkDSSentAndAcked(fakeRd1, 3);
+      checkDSReceivedAndAcked(fakeRd2, 2);
 
       // Sanity check
       assertEquals(fakeRd1.getReceivedUpdates(), 0);
@@ -2400,7 +2184,6 @@
 
       // Shutdown fake DS 2
       fakeRd2.disableService();
-      fakeRd2 = null;
 
       // Wait for disconnection to be finished
       waitForStableTopo(fakeRd1, 0, 2);
@@ -2417,16 +2200,7 @@
 
       // Check monitoring values (check that ack has been correctly received)
       Thread.sleep(500); // Sleep a while as counters are updated just after sending thread is unblocked
-      assertEquals(fakeRd1.getAssuredSrSentUpdates(), 4);
-      assertEquals(fakeRd1.getAssuredSrAcknowledgedUpdates(), 4);
-      assertEquals(fakeRd1.getAssuredSrNotAcknowledgedUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrTimeoutUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrWrongStatusUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrReplayErrorUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrServerNotAcknowledgedUpdates().size(), 0);
-      assertEquals(fakeRd1.getAssuredSrReceivedUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrReceivedUpdatesAcked(), 0);
-      assertEquals(fakeRd1.getAssuredSrReceivedUpdatesNotAcked(), 0);
+      checkDSSentAndAcked(fakeRd1, 4);
 
       // Sanity check
       assertEquals(fakeRd1.getReceivedUpdates(), 0);
@@ -2458,16 +2232,7 @@
 
       // Check monitoring values (check that ack has been correctly received)
       Thread.sleep(500); // Sleep a while as counters are updated just after sending thread is unblocked
-      assertEquals(fakeRd1.getAssuredSrSentUpdates(), 5);
-      assertEquals(fakeRd1.getAssuredSrAcknowledgedUpdates(), 5);
-      assertEquals(fakeRd1.getAssuredSrNotAcknowledgedUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrTimeoutUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrWrongStatusUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrReplayErrorUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrServerNotAcknowledgedUpdates().size(), 0);
-      assertEquals(fakeRd1.getAssuredSrReceivedUpdates(), 0);
-      assertEquals(fakeRd1.getAssuredSrReceivedUpdatesAcked(), 0);
-      assertEquals(fakeRd1.getAssuredSrReceivedUpdatesNotAcked(), 0);
+      checkDSSentAndAcked(fakeRd1, 5);
 
       // Sanity check
       assertEquals(fakeRd1.getReceivedUpdates(), 0);
@@ -2576,50 +2341,41 @@
       /*
        * Start main DS 1 (the one which sends updates)
        */
-
-      fakeRd1 = createFakeReplicationDomain(FDS1_ID, DEFAULT_GID, RS1_ID,
+      fakeRDs[1] = createFakeReplicationDomain(FDS1_ID, DEFAULT_GID, RS1_ID,
         DEFAULT_GENID, true, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         TIMEOUT_DS_SCENARIO);
-      assertNotNull(fakeRd1);
 
       /*
        * Start another fake DS 2 connected to RS
        */
-
-      fakeRd2 = createFakeReplicationDomain(FDS2_ID, DEFAULT_GID, RS1_ID,
+      fakeRDs[2] = createFakeReplicationDomain(FDS2_ID, DEFAULT_GID, RS1_ID,
         DEFAULT_GENID, true, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         REPLY_OK_DS_SCENARIO);
-      assertNotNull(fakeRd2);
 
       /*
        * Start another fake DS 3 connected to RS
        */
-
-      fakeRd3 = createFakeReplicationDomain(FDS3_ID, otherFakeDsGid, RS1_ID,
+      fakeRDs[3] = createFakeReplicationDomain(FDS3_ID, otherFakeDsGid, RS1_ID,
         otherFakeDsGenId, (otherFakeDsGid == DEFAULT_GID),
         AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         otherFakeDsScen);
-      assertNotNull(fakeRd3);
 
       /*
        * Start fake RS (RS 1) connected to RS
        */
-
       fakeRs1 = createFakeReplicationServer(FRS1_ID, DEFAULT_GID, RS1_ID,
         DEFAULT_GENID, true, AssuredMode.SAFE_READ_MODE, 1,
         new ServerState(), REPLY_OK_RS_SCENARIO);
-      assertNotNull(fakeRs1);
 
       /*
        * Start another fake RS (RS 2) connected to RS
        */
-
       fakeRs2 = createFakeReplicationServer(FRS2_ID, otherFakeRsGid, RS1_ID,
         otherFakeRsGenId, (otherFakeRsGid == DEFAULT_GID),
         AssuredMode.SAFE_READ_MODE, 1, new ServerState(), otherFakeRsScen);
-      assertNotNull(fakeRs2);
 
       // Wait for connections to be established
+      final FakeReplicationDomain fakeRd1 = fakeRDs[1];
       waitForStableTopo(fakeRd1, 2, 3);
 
       /*
@@ -2758,19 +2514,12 @@
 
       // Check monitoring values in DS 2
       //
-      assertEquals(fakeRd2.getAssuredSrSentUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrAcknowledgedUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrNotAcknowledgedUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrTimeoutUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrWrongStatusUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrReplayErrorUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrServerNotAcknowledgedUpdates().size(), 0);
-      assertEquals(fakeRd2.getAssuredSrReceivedUpdates(), 1);
-      assertEquals(fakeRd2.getAssuredSrReceivedUpdatesAcked(), 1);
-      assertEquals(fakeRd2.getAssuredSrReceivedUpdatesNotAcked(), 0);
+      final FakeReplicationDomain fakeRd2 = fakeRDs[2];
+      checkDSReceivedAndAcked(fakeRd2, 1);
 
       // Check monitoring values in DS 3
       //
+      final FakeReplicationDomain fakeRd3 = fakeRDs[3];
       assertEquals(fakeRd3.getAssuredSrSentUpdates(), 0);
       assertEquals(fakeRd3.getAssuredSrAcknowledgedUpdates(), 0);
       assertEquals(fakeRd3.getAssuredSrNotAcknowledgedUpdates(), 0);
@@ -2917,15 +2666,15 @@
 
       // Wait for RSs to connect together
       // Create and connect fake domain 1 to RS 1
-      fakeRd1 = createFakeReplicationDomain(FDS1_ID, DEFAULT_GID, RS1_ID,
+      fakeRDs[1] = createFakeReplicationDomain(FDS1_ID, DEFAULT_GID, RS1_ID,
         DEFAULT_GENID, true, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         TIMEOUT_DS_SCENARIO);
-      assertNotNull(fakeRd1);
 
       // Wait for connections to be finished
       // DS must see expected numbers of DSs/RSs
       // -> if everybody is connected we are sure a GENID is set in every RSs and
       // we can connect the fake RS with a different GENID
+      final FakeReplicationDomain fakeRd1 = fakeRDs[1];
       waitForStableTopo(fakeRd1, 0, 4);
 
       /*
@@ -2936,41 +2685,35 @@
       fakeRs1 = createFakeReplicationServer(FRS1_ID, DEFAULT_GID, RS1_ID,
         OTHER_GENID, false, AssuredMode.SAFE_READ_MODE, 1, new ServerState(),
         TIMEOUT_RS_SCENARIO);
-      assertNotNull(fakeRs1);
 
       // Put a fake RS 2 connected to real RS 3 (different GID 2)
       fakeRs2 = createFakeReplicationServer(FRS2_ID, OTHER_GID_BIS, RS1_ID,
         DEFAULT_GENID, false, AssuredMode.SAFE_READ_MODE, 1, new ServerState(),
         TIMEOUT_RS_SCENARIO);
-      assertNotNull(fakeRs2);
 
       /*
        * Start DSs that will receive and ack the updates from DS 1
        */
 
       // DS 2 connected to RS 1
-      fakeRd2 = createFakeReplicationDomain(FDS2_ID, DEFAULT_GID, RS1_ID,
+      fakeRDs[2] = createFakeReplicationDomain(FDS2_ID, DEFAULT_GID, RS1_ID,
         DEFAULT_GENID, true, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         REPLY_OK_DS_SCENARIO);
-      assertNotNull(fakeRd2);
 
       // DS 3 connected to RS 2
-      fakeRd3 = createFakeReplicationDomain(FDS3_ID, DEFAULT_GID, RS2_ID,
+      fakeRDs[3] = createFakeReplicationDomain(FDS3_ID, DEFAULT_GID, RS2_ID,
         DEFAULT_GENID, true, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         REPLY_OK_DS_SCENARIO);
-      assertNotNull(fakeRd3);
 
       // DS 4 connected to RS 3
-      fakeRd4 = createFakeReplicationDomain(FDS4_ID, DEFAULT_GID, RS3_ID,
+      fakeRDs[4] = createFakeReplicationDomain(FDS4_ID, DEFAULT_GID, RS3_ID,
         DEFAULT_GENID, true, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         REPLY_OK_DS_SCENARIO);
-      assertNotNull(fakeRd4);
 
       // DS 5 connected to RS 3
-      fakeRd5 = createFakeReplicationDomain(FDS5_ID, DEFAULT_GID, RS3_ID,
+      fakeRDs[5] = createFakeReplicationDomain(FDS5_ID, DEFAULT_GID, RS3_ID,
         DEFAULT_GENID, true, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         REPLY_OK_DS_SCENARIO);
-      assertNotNull(fakeRd5);
 
       /*
        * Start DSs that will not receive updates from DS 1 as assured because
@@ -2978,28 +2721,24 @@
        */
 
       // DS 6 connected to RS 1
-      fakeRd6 = createFakeReplicationDomain(FDS6_ID, OTHER_GID, RS1_ID,
+      fakeRDs[6] = createFakeReplicationDomain(FDS6_ID, OTHER_GID, RS1_ID,
         DEFAULT_GENID, false, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         TIMEOUT_DS_SCENARIO);
-      assertNotNull(fakeRd6);
 
       // DS 7 connected to RS 2
-      fakeRd7 = createFakeReplicationDomain(FDS7_ID, OTHER_GID, RS2_ID,
+      fakeRDs[7] = createFakeReplicationDomain(FDS7_ID, OTHER_GID, RS2_ID,
         DEFAULT_GENID, false, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         TIMEOUT_DS_SCENARIO);
-      assertNotNull(fakeRd7);
 
       // DS 8 connected to RS 3
-      fakeRd8 = createFakeReplicationDomain(FDS8_ID, OTHER_GID, RS3_ID,
+      fakeRDs[8] = createFakeReplicationDomain(FDS8_ID, OTHER_GID, RS3_ID,
         DEFAULT_GENID, false, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         TIMEOUT_DS_SCENARIO);
-      assertNotNull(fakeRd8);
 
       // DS 9 (GID 2) connected to RS 4
-      fakeRd9 = createFakeReplicationDomain(FDS9_ID, OTHER_GID_BIS, RS4_ID,
+      fakeRDs[9] = createFakeReplicationDomain(FDS9_ID, OTHER_GID_BIS, RS4_ID,
         DEFAULT_GENID, false, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         TIMEOUT_DS_SCENARIO);
-      assertNotNull(fakeRd9);
 
       /*
        * Start DSs that will not receive updates from DS 1 because
@@ -3007,22 +2746,19 @@
        */
 
       // DS 10 connected to RS 1
-      fakeRd10 = createFakeReplicationDomain(FDS10_ID, DEFAULT_GID, RS1_ID,
+      fakeRDs[10] = createFakeReplicationDomain(FDS10_ID, DEFAULT_GID, RS1_ID,
         OTHER_GENID, false, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         TIMEOUT_DS_SCENARIO);
-      assertNotNull(fakeRd10);
 
       // DS 11 connected to RS 2
-      fakeRd11 = createFakeReplicationDomain(FDS11_ID, DEFAULT_GID, RS2_ID,
+      fakeRDs[11] = createFakeReplicationDomain(FDS11_ID, DEFAULT_GID, RS2_ID,
         OTHER_GENID, false, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         TIMEOUT_DS_SCENARIO);
-      assertNotNull(fakeRd11);
 
       // DS 12 connected to RS 3
-      fakeRd12 = createFakeReplicationDomain(FDS12_ID, DEFAULT_GID, RS3_ID,
+      fakeRDs[12] = createFakeReplicationDomain(FDS12_ID, DEFAULT_GID, RS3_ID,
         OTHER_GENID, false, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         TIMEOUT_DS_SCENARIO);
-      assertNotNull(fakeRd12);
 
       // Wait for connections to be finished
       // DS must see expected numbers of DSs/RSs
@@ -3043,62 +2779,20 @@
 
       checkDSSentAndAcked(fakeRd1, 1);
 
-      //   normal DSs
-      checkDSReceivedAndAcked(fakeRd2, 1);
-      checkDSReceivedAndAcked(fakeRd3, 1);
-      checkDSReceivedAndAcked(fakeRd4, 1);
-      checkDSReceivedAndAcked(fakeRd5, 1);
-
-      //   different GID DSs
-      checkDSReceivedAndAcked(fakeRd6, 0);
-      checkDSReceivedAndAcked(fakeRd7, 0);
-      checkDSReceivedAndAcked(fakeRd8, 0);
-      checkDSReceivedAndAcked(fakeRd9, 0);
-
-      //   different GENID DSs
-      checkDSReceivedAndAcked(fakeRd10, 0);
-      checkDSReceivedAndAcked(fakeRd11, 0);
-      checkDSReceivedAndAcked(fakeRd12, 0);
+      assertFakeDSReceivedAndAcked(1, asList(2, 3, 4, 5)); // normal DSs
+      assertFakeDSReceivedAndAcked(0, asList(6, 7, 8, 9)); // different GID DSs
+      assertFakeDSReceivedAndAcked(0, asList(10, 11, 12)); // different GENID DSs
 
       // Sanity check
       assertEquals(fakeRd1.getReceivedUpdates(), 0);
       assertTrue(fakeRd1.receivedUpdatesOk());
 
-      //   normal DSs
-      assertEquals(fakeRd2.getReceivedUpdates(), 1);
-      assertTrue(fakeRd2.receivedUpdatesOk());
-      assertEquals(fakeRd3.getReceivedUpdates(), 1);
-      assertTrue(fakeRd3.receivedUpdatesOk());
-      assertEquals(fakeRd4.getReceivedUpdates(), 1);
-      assertTrue(fakeRd4.receivedUpdatesOk());
-      assertEquals(fakeRd5.getReceivedUpdates(), 1);
-      assertTrue(fakeRd5.receivedUpdatesOk());
+      assertFakeRDNbReceivedUpdates(1, asList(2, 3, 4, 5)); // normal DSs
+      assertFakeRDNbReceivedUpdates(1, asList(6, 7, 8, 9)); // different GID DSs
+      assertFakeRDNbReceivedUpdates(0, asList(10, 11, 12)); // different GENID DSs
 
-      //   different GID DSs
-      assertEquals(fakeRd6.getReceivedUpdates(), 1);
-      assertTrue(fakeRd6.receivedUpdatesOk());
-      assertEquals(fakeRd7.getReceivedUpdates(), 1);
-      assertTrue(fakeRd7.receivedUpdatesOk());
-      assertEquals(fakeRd8.getReceivedUpdates(), 1);
-      assertTrue(fakeRd8.receivedUpdatesOk());
-      assertEquals(fakeRd9.getReceivedUpdates(), 1);
-      assertTrue(fakeRd9.receivedUpdatesOk());
-
-      //   different GENID DSs
-      assertEquals(fakeRd10.getReceivedUpdates(), 0);
-      assertTrue(fakeRd10.receivedUpdatesOk());
-      assertEquals(fakeRd11.getReceivedUpdates(), 0);
-      assertTrue(fakeRd11.receivedUpdatesOk());
-      assertEquals(fakeRd12.getReceivedUpdates(), 0);
-      assertTrue(fakeRd12.receivedUpdatesOk());
-
-      //   fake RSs
-      assertEquals(fakeRs1.getReceivedUpdates(), 0);
-      assertTrue(fakeRs1.receivedUpdatesOk());
-      assertFalse(fakeRs1.ackReplied());
-      assertEquals(fakeRs2.getReceivedUpdates(), 1);
-      assertTrue(fakeRs2.receivedUpdatesOk());
-      assertFalse(fakeRs2.ackReplied());
+      assertFakeRSNbReceivedUpdates(fakeRs1, 0);
+      assertFakeRSNbReceivedUpdates(fakeRs2, 1);
 
       /*
        * Send a second update from DS 1 and check result
@@ -3115,68 +2809,50 @@
 
       checkDSSentAndAcked(fakeRd1, 2);
 
-      //   normal DSs
-      checkDSReceivedAndAcked(fakeRd2, 2);
-      checkDSReceivedAndAcked(fakeRd3, 2);
-      checkDSReceivedAndAcked(fakeRd4, 2);
-      checkDSReceivedAndAcked(fakeRd5, 2);
-
-      //   different GID DSs
-      checkDSReceivedAndAcked(fakeRd6, 0);
-      checkDSReceivedAndAcked(fakeRd7, 0);
-      checkDSReceivedAndAcked(fakeRd8, 0);
-      checkDSReceivedAndAcked(fakeRd9, 0);
-
-      //   different GENID DSs
-      checkDSReceivedAndAcked(fakeRd10, 0);
-      checkDSReceivedAndAcked(fakeRd11, 0);
-      checkDSReceivedAndAcked(fakeRd12, 0);
+      assertFakeDSReceivedAndAcked(2, asList(2, 3, 4, 5)); // normal DSs
+      assertFakeDSReceivedAndAcked(0, asList(6, 7, 8, 9)); // different GID DSs
+      assertFakeDSReceivedAndAcked(0, asList(10, 11, 12)); // different GENID DSs
 
       // Sanity check
       assertEquals(fakeRd1.getReceivedUpdates(), 0);
       assertTrue(fakeRd1.receivedUpdatesOk());
 
-      //   normal DSs
-      assertEquals(fakeRd2.getReceivedUpdates(), 2);
-      assertTrue(fakeRd2.receivedUpdatesOk());
-      assertEquals(fakeRd3.getReceivedUpdates(), 2);
-      assertTrue(fakeRd3.receivedUpdatesOk());
-      assertEquals(fakeRd4.getReceivedUpdates(), 2);
-      assertTrue(fakeRd4.receivedUpdatesOk());
-      assertEquals(fakeRd5.getReceivedUpdates(), 2);
-      assertTrue(fakeRd5.receivedUpdatesOk());
+      assertFakeRDNbReceivedUpdates(2, asList(2, 3, 4, 5)); // normal DSs
+      assertFakeRDNbReceivedUpdates(2, asList(6, 7, 8, 9)); // different GID DSs
+      assertFakeRDNbReceivedUpdates(0, asList(10, 11, 12)); // different GENID DSs
 
-      //   different GID DSs
-      assertEquals(fakeRd6.getReceivedUpdates(), 2);
-      assertTrue(fakeRd6.receivedUpdatesOk());
-      assertEquals(fakeRd7.getReceivedUpdates(), 2);
-      assertTrue(fakeRd7.receivedUpdatesOk());
-      assertEquals(fakeRd8.getReceivedUpdates(), 2);
-      assertTrue(fakeRd8.receivedUpdatesOk());
-      assertEquals(fakeRd9.getReceivedUpdates(), 2);
-      assertTrue(fakeRd9.receivedUpdatesOk());
-
-      //   different GENID DSs
-      assertEquals(fakeRd10.getReceivedUpdates(), 0);
-      assertTrue(fakeRd10.receivedUpdatesOk());
-      assertEquals(fakeRd11.getReceivedUpdates(), 0);
-      assertTrue(fakeRd11.receivedUpdatesOk());
-      assertEquals(fakeRd12.getReceivedUpdates(), 0);
-      assertTrue(fakeRd12.receivedUpdatesOk());
-
-      //   fake RSs
-      assertEquals(fakeRs1.getReceivedUpdates(), 0);
-      assertTrue(fakeRs1.receivedUpdatesOk());
-      assertFalse(fakeRs1.ackReplied());
-      assertEquals(fakeRs2.getReceivedUpdates(), 2);
-      assertTrue(fakeRs2.receivedUpdatesOk());
-      assertFalse(fakeRs2.ackReplied());
+      assertFakeRSNbReceivedUpdates(fakeRs1, 0);
+      assertFakeRSNbReceivedUpdates(fakeRs2, 2);
     } finally
     {
       endTest();
     }
   }
 
+  private void assertFakeDSReceivedAndAcked(int nPacket, List<Integer> fakeDSIndexes)
+  {
+    for (int i : fakeDSIndexes)
+    {
+      checkDSReceivedAndAcked(fakeRDs[i], nPacket);
+    }
+  }
+
+  private void assertFakeRDNbReceivedUpdates(int expectedNbReceived, List<Integer> fakeDSIndexes)
+  {
+    for (int i : fakeDSIndexes)
+    {
+      assertEquals(fakeRDs[i].getReceivedUpdates(), expectedNbReceived);
+      assertTrue(fakeRDs[i].receivedUpdatesOk());
+    }
+  }
+
+  private void assertFakeRSNbReceivedUpdates(FakeReplicationServer fakeRs, int expectedNbReceived)
+  {
+    assertEquals(fakeRs.getReceivedUpdates(), expectedNbReceived);
+    assertTrue(fakeRs.receivedUpdatesOk());
+    assertFalse(fakeRs.ackReplied());
+  }
+
   /** Helper method for some safe read test methods */
   private void checkDSReceivedAndAcked(FakeReplicationDomain fakeRd, int nPacket)
   {
@@ -3207,6 +2883,20 @@
     assertEquals(fakeRd.getAssuredSrReceivedUpdatesNotAcked(), 0);
   }
 
+  private void checkDSNothingReceivedOrSent(final FakeReplicationDomain fakeRd)
+  {
+    assertEquals(fakeRd.getAssuredSrSentUpdates(), 0);
+    assertEquals(fakeRd.getAssuredSrAcknowledgedUpdates(), 0);
+    assertEquals(fakeRd.getAssuredSrNotAcknowledgedUpdates(), 0);
+    assertEquals(fakeRd.getAssuredSrTimeoutUpdates(), 0);
+    assertEquals(fakeRd.getAssuredSrWrongStatusUpdates(), 0);
+    assertEquals(fakeRd.getAssuredSrReplayErrorUpdates(), 0);
+    assertEquals(fakeRd.getAssuredSrServerNotAcknowledgedUpdates().size(), 0);
+    assertEquals(fakeRd.getAssuredSrReceivedUpdates(), 0);
+    assertEquals(fakeRd.getAssuredSrReceivedUpdatesAcked(), 0);
+    assertEquals(fakeRd.getAssuredSrReceivedUpdatesNotAcked(), 0);
+  }
+
   /**
    * Test that a safe read update does not cross different group id topologies
    * in assured mode.
@@ -3245,42 +2935,38 @@
        */
 
       // DS 1 connected to RS 1
-      fakeRd1 = createFakeReplicationDomain(FDS1_ID, DEFAULT_GID, RS1_ID,
+      fakeRDs[1] = createFakeReplicationDomain(FDS1_ID, DEFAULT_GID, RS1_ID,
         DEFAULT_GENID, true, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         TIMEOUT_DS_SCENARIO);
-      assertNotNull(fakeRd1);
 
       // DS 2 connected to RS 1
-      fakeRd2 = createFakeReplicationDomain(FDS2_ID, DEFAULT_GID, RS1_ID,
+      fakeRDs[2] = createFakeReplicationDomain(FDS2_ID, DEFAULT_GID, RS1_ID,
         DEFAULT_GENID, true, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         REPLY_OK_DS_SCENARIO);
-      assertNotNull(fakeRd2);
 
       /*
        * Start DSs with GID=OTHER_GID, connected to RS2
        */
 
       // DS 3 connected to RS 2
-      fakeRd3 = createFakeReplicationDomain(FDS3_ID, OTHER_GID, RS2_ID,
+      fakeRDs[3] = createFakeReplicationDomain(FDS3_ID, OTHER_GID, RS2_ID,
         DEFAULT_GENID, false, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         REPLY_OK_DS_SCENARIO);
-      assertNotNull(fakeRd3);
 
       // DS 4 connected to RS 3
-      fakeRd4 = createFakeReplicationDomain(FDS4_ID, OTHER_GID, RS2_ID,
+      fakeRDs[4] = createFakeReplicationDomain(FDS4_ID, OTHER_GID, RS2_ID,
         DEFAULT_GENID, false, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         REPLY_OK_DS_SCENARIO);
-      assertNotNull(fakeRd4);
 
       // Wait for connections to be finished
       // DS must see expected numbers of DSs/RSs
-      waitForStableTopo(fakeRd1, 3, 2);
+      waitForStableTopo(fakeRDs[1], 3, 2);
 
       /*
        * Send update from DS 1 and check result
        */
       long startTime = System.currentTimeMillis();
-      fakeRd1.sendNewFakeUpdate();
+      fakeRDs[1].sendNewFakeUpdate();
       long sendUpdateTime = System.currentTimeMillis() - startTime;
 
       // Check call time
@@ -3289,41 +2975,21 @@
       // Check monitoring values (check that ack has been correctly received)
       Thread.sleep(500); // Sleep a while as counters are updated just after sending thread is unblocked
 
-      checkDSSentAndAcked(fakeRd1, 1);
+      checkDSSentAndAcked(fakeRDs[1], 1);
+      checkDSReceivedAndAcked(fakeRDs[2], 1);
+      checkDSNothingReceivedOrSent(fakeRDs[3]);
+      checkDSNothingReceivedOrSent(fakeRDs[4]);
 
-      checkDSReceivedAndAcked(fakeRd2, 1);
-
-      assertEquals(fakeRd3.getAssuredSrSentUpdates(), 0);
-      assertEquals(fakeRd3.getAssuredSrAcknowledgedUpdates(), 0);
-      assertEquals(fakeRd3.getAssuredSrNotAcknowledgedUpdates(), 0);
-      assertEquals(fakeRd3.getAssuredSrTimeoutUpdates(), 0);
-      assertEquals(fakeRd3.getAssuredSrWrongStatusUpdates(), 0);
-      assertEquals(fakeRd3.getAssuredSrReplayErrorUpdates(), 0);
-      assertEquals(fakeRd3.getAssuredSrServerNotAcknowledgedUpdates().size(), 0);
-      assertEquals(fakeRd3.getAssuredSrReceivedUpdates(), 0);
-      assertEquals(fakeRd3.getAssuredSrReceivedUpdatesAcked(), 0);
-      assertEquals(fakeRd3.getAssuredSrReceivedUpdatesNotAcked(), 0);
-
-      assertEquals(fakeRd4.getAssuredSrSentUpdates(), 0);
-      assertEquals(fakeRd4.getAssuredSrAcknowledgedUpdates(), 0);
-      assertEquals(fakeRd4.getAssuredSrNotAcknowledgedUpdates(), 0);
-      assertEquals(fakeRd4.getAssuredSrTimeoutUpdates(), 0);
-      assertEquals(fakeRd4.getAssuredSrWrongStatusUpdates(), 0);
-      assertEquals(fakeRd4.getAssuredSrReplayErrorUpdates(), 0);
-      assertEquals(fakeRd4.getAssuredSrServerNotAcknowledgedUpdates().size(), 0);
-      assertEquals(fakeRd4.getAssuredSrReceivedUpdates(), 0);
-      assertEquals(fakeRd4.getAssuredSrReceivedUpdatesAcked(), 0);
-      assertEquals(fakeRd4.getAssuredSrReceivedUpdatesNotAcked(), 0);
-
-      assertEquals(fakeRd1.getReceivedUpdates(), 0);
-      assertTrue(fakeRd1.receivedUpdatesOk());
-      assertEquals(fakeRd2.getReceivedUpdates(), 1);
-      assertTrue(fakeRd2.receivedUpdatesOk());
-      assertEquals(fakeRd3.getReceivedUpdates(), 1);
-      assertTrue(fakeRd3.receivedUpdatesOk());
-      assertEquals(fakeRd4.getReceivedUpdates(), 1);
-      assertTrue(fakeRd4.receivedUpdatesOk());
-      } finally
+      assertEquals(fakeRDs[1].getReceivedUpdates(), 0);
+      assertTrue(fakeRDs[1].receivedUpdatesOk());
+      assertEquals(fakeRDs[2].getReceivedUpdates(), 1);
+      assertTrue(fakeRDs[2].receivedUpdatesOk());
+      assertEquals(fakeRDs[3].getReceivedUpdates(), 1);
+      assertTrue(fakeRDs[3].receivedUpdatesOk());
+      assertEquals(fakeRDs[4].getReceivedUpdates(), 1);
+      assertTrue(fakeRDs[4].receivedUpdatesOk());
+    }
+    finally
     {
       endTest();
     }
@@ -3382,19 +3048,18 @@
        */
 
       // DS 1 connected to RS 1
-      fakeRd1 = createFakeReplicationDomain(FDS1_ID, DEFAULT_GID, RS1_ID,
+      fakeRDs[1] = createFakeReplicationDomain(FDS1_ID, DEFAULT_GID, RS1_ID,
         DEFAULT_GENID, true, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         TIMEOUT_DS_SCENARIO);
-      assertNotNull(fakeRd1);
 
       // DS 2 connected to RS 2
-      fakeRd2 = createFakeReplicationDomain(FDS2_ID, fakeDsGid, RS2_ID,
+      fakeRDs[2] = createFakeReplicationDomain(FDS2_ID, fakeDsGid, RS2_ID,
         fakeDsGenId, (fakeDsGid == DEFAULT_GID),
         AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT, fakeDsScen);
-      assertNotNull(fakeRd2);
 
       // Wait for connections to be finished
       // DS must see expected numbers of DSs/RSs
+      final FakeReplicationDomain fakeRd1 = fakeRDs[1];
       waitForStableTopo(fakeRd1, 1, 2);
 
       /*
@@ -3417,6 +3082,7 @@
       // Check monitoring values (check that ack has been correctly received)
       Thread.sleep(500); // Sleep a while as counters are updated just after sending thread is unblocked
 
+      final FakeReplicationDomain fakeRd2 = fakeRDs[2];
       if (fakeDsIsEligible)
       {
         switch (fakeDsScen)
@@ -3432,11 +3098,7 @@
             assertEquals(fakeRd1.getAssuredSrTimeoutUpdates(), 1);
             assertEquals(fakeRd1.getAssuredSrWrongStatusUpdates(), 0);
             assertEquals(fakeRd1.getAssuredSrReplayErrorUpdates(), 0);
-            Map<Integer, Integer> failedServer = fakeRd1.getAssuredSrServerNotAcknowledgedUpdates();
-            assertEquals(failedServer.size(), 1);
-            Integer nError = failedServer.get(FDS2_ID);
-            assertNotNull(nError);
-            assertEquals(nError.intValue(), 1);
+            assertContainsOnly(fakeRd1.getAssuredSrServerNotAcknowledgedUpdates(), FDS2_ID, 1);
             assertEquals(fakeRd1.getAssuredSrReceivedUpdates(), 0);
             assertEquals(fakeRd1.getAssuredSrReceivedUpdatesAcked(), 0);
             assertEquals(fakeRd1.getAssuredSrReceivedUpdatesNotAcked(), 0);
@@ -3459,11 +3121,7 @@
             assertEquals(fakeRd1.getAssuredSrTimeoutUpdates(), 0);
             assertEquals(fakeRd1.getAssuredSrWrongStatusUpdates(), 0);
             assertEquals(fakeRd1.getAssuredSrReplayErrorUpdates(), 1);
-            failedServer = fakeRd1.getAssuredSrServerNotAcknowledgedUpdates();
-            assertEquals(failedServer.size(), 1);
-            nError = failedServer.get(FDS2_ID);
-            assertNotNull(nError);
-            assertEquals(nError.intValue(), 1);
+            assertContainsOnly(fakeRd1.getAssuredSrServerNotAcknowledgedUpdates(), FDS2_ID, 1);
             assertEquals(fakeRd1.getAssuredSrReceivedUpdates(), 0);
             assertEquals(fakeRd1.getAssuredSrReceivedUpdatesAcked(), 0);
             assertEquals(fakeRd1.getAssuredSrReceivedUpdatesNotAcked(), 0);
@@ -3524,7 +3182,7 @@
       // Create real RS
       String dir = testName + RS1_ID + testCase + "Db";
       ReplServerFakeConfiguration conf =
-          new ReplServerFakeConfiguration(rs1Port, dir, 0, RS1_ID, 0, 100,
+          new ReplServerFakeConfiguration(rsPorts[0], dir, 0, RS1_ID, 0, 100,
               new TreeSet<String>(), DEFAULT_GID, SMALL_TIMEOUT, 1);
       rs1 = new ReplicationServer(conf);
 
@@ -3533,19 +3191,18 @@
        */
 
       // DS 1 connected to RS 1
-      fakeRd1 = createFakeReplicationDomain(FDS1_ID, DEFAULT_GID, RS1_ID,
+      fakeRDs[1] = createFakeReplicationDomain(FDS1_ID, DEFAULT_GID, RS1_ID,
         DEFAULT_GENID, true, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         TIMEOUT_DS_SCENARIO);
-      assertNotNull(fakeRd1);
 
       // DS 2 connected to RS 1 with low window to easily put it in DEGRADED status
-      fakeRd2 = createFakeReplicationDomain(FDS2_ID, DEFAULT_GID, RS1_ID,
+      fakeRDs[2] = createFakeReplicationDomain(FDS2_ID, DEFAULT_GID, RS1_ID,
         DEFAULT_GENID, true, AssuredMode.SAFE_READ_MODE, 1, LONG_TIMEOUT,
         REPLY_OK_DS_SCENARIO, new ServerState(), false, 2);
-      assertNotNull(fakeRd2);
 
       // Wait for connections to be finished
       // DS must see expected numbers of DSs/RSs
+      final FakeReplicationDomain fakeRd1 = fakeRDs[1];
       waitForStableTopo(fakeRd1, 1, 1);
       List<DSInfo> dsInfos = fakeRd1.getReplicasList();
       DSInfo dsInfo = dsInfos.get(0);
@@ -3599,25 +3256,13 @@
       assertEquals(fakeRd1.getAssuredSrTimeoutUpdates(), 4);
       assertEquals(fakeRd1.getAssuredSrWrongStatusUpdates(), 0);
       assertEquals(fakeRd1.getAssuredSrReplayErrorUpdates(), 0);
-      Map<Integer, Integer> failedServer = fakeRd1.getAssuredSrServerNotAcknowledgedUpdates();
-      assertEquals(failedServer.size(), 1);
-      Integer nError = failedServer.get(FDS2_ID);
-      assertNotNull(nError);
-      assertEquals(nError.intValue(), 4);
+      assertContainsOnly(fakeRd1.getAssuredSrServerNotAcknowledgedUpdates(), FDS2_ID, 4);
       assertEquals(fakeRd1.getAssuredSrReceivedUpdates(), 0);
       assertEquals(fakeRd1.getAssuredSrReceivedUpdatesAcked(), 0);
       assertEquals(fakeRd1.getAssuredSrReceivedUpdatesNotAcked(), 0);
 
-      assertEquals(fakeRd2.getAssuredSrSentUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrAcknowledgedUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrNotAcknowledgedUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrTimeoutUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrWrongStatusUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrReplayErrorUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrServerNotAcknowledgedUpdates().size(), 0);
-      assertEquals(fakeRd2.getAssuredSrReceivedUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrReceivedUpdatesAcked(), 0);
-      assertEquals(fakeRd2.getAssuredSrReceivedUpdatesNotAcked(), 0);
+      final FakeReplicationDomain fakeRd2 = fakeRDs[2];
+      checkDSNothingReceivedOrSent(fakeRd2);
 
       assertEquals(fakeRd1.getReceivedUpdates(), 0);
       assertEquals(fakeRd1.getWrongReceivedUpdates(), 0);
@@ -3643,25 +3288,12 @@
       assertEquals(fakeRd1.getAssuredSrTimeoutUpdates(), 4);
       assertEquals(fakeRd1.getAssuredSrWrongStatusUpdates(), 0);
       assertEquals(fakeRd1.getAssuredSrReplayErrorUpdates(), 0);
-      failedServer = fakeRd1.getAssuredSrServerNotAcknowledgedUpdates();
-      assertEquals(failedServer.size(), 1);
-      nError = failedServer.get(FDS2_ID);
-      assertNotNull(nError);
-      assertEquals(nError.intValue(), 4);
+      assertContainsOnly(fakeRd1.getAssuredSrServerNotAcknowledgedUpdates(), FDS2_ID, 4);
       assertEquals(fakeRd1.getAssuredSrReceivedUpdates(), 0);
       assertEquals(fakeRd1.getAssuredSrReceivedUpdatesAcked(), 0);
       assertEquals(fakeRd1.getAssuredSrReceivedUpdatesNotAcked(), 0);
 
-      assertEquals(fakeRd2.getAssuredSrSentUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrAcknowledgedUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrNotAcknowledgedUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrTimeoutUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrWrongStatusUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrReplayErrorUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrServerNotAcknowledgedUpdates().size(), 0);
-      assertEquals(fakeRd2.getAssuredSrReceivedUpdates(), 0);
-      assertEquals(fakeRd2.getAssuredSrReceivedUpdatesAcked(), 0);
-      assertEquals(fakeRd2.getAssuredSrReceivedUpdatesNotAcked(), 0);
+      checkDSNothingReceivedOrSent(fakeRd2);
 
       assertEquals(fakeRd1.getReceivedUpdates(), 0);
       assertEquals(fakeRd1.getWrongReceivedUpdates(), 0);
@@ -3706,11 +3338,7 @@
       assertEquals(fakeRd1.getAssuredSrTimeoutUpdates(), 4);
       assertEquals(fakeRd1.getAssuredSrWrongStatusUpdates(), 0);
       assertEquals(fakeRd1.getAssuredSrReplayErrorUpdates(), 0);
-      failedServer = fakeRd1.getAssuredSrServerNotAcknowledgedUpdates();
-      assertEquals(failedServer.size(), 1);
-      nError = failedServer.get(FDS2_ID);
-      assertNotNull(nError);
-      assertEquals(nError.intValue(), 4);
+      assertContainsOnly(fakeRd1.getAssuredSrServerNotAcknowledgedUpdates(), FDS2_ID, 4);
       assertEquals(fakeRd1.getAssuredSrReceivedUpdates(), 0);
       assertEquals(fakeRd1.getAssuredSrReceivedUpdatesAcked(), 0);
       assertEquals(fakeRd1.getAssuredSrReceivedUpdatesNotAcked(), 0);
@@ -3750,11 +3378,7 @@
       assertEquals(fakeRd1.getAssuredSrTimeoutUpdates(), 4);
       assertEquals(fakeRd1.getAssuredSrWrongStatusUpdates(), 0);
       assertEquals(fakeRd1.getAssuredSrReplayErrorUpdates(), 0);
-      failedServer = fakeRd1.getAssuredSrServerNotAcknowledgedUpdates();
-      assertEquals(failedServer.size(), 1);
-      nError = failedServer.get(FDS2_ID);
-      assertNotNull(nError);
-      assertEquals(nError.intValue(), 4);
+      assertContainsOnly(fakeRd1.getAssuredSrServerNotAcknowledgedUpdates(), FDS2_ID, 4);
       assertEquals(fakeRd1.getAssuredSrReceivedUpdates(), 0);
       assertEquals(fakeRd1.getAssuredSrReceivedUpdatesAcked(), 0);
       assertEquals(fakeRd1.getAssuredSrReceivedUpdatesNotAcked(), 0);
@@ -3781,5 +3405,13 @@
       endTest();
     }
   }
-}
 
+  private void assertContainsOnly(Map<Integer, Integer> map, int key,
+      int expectedValue)
+  {
+    assertEquals(map.size(), 1);
+    final Integer nError = map.get(key);
+    assertNotNull(nError);
+    assertEquals(nError.intValue(), expectedValue);
+  }
+}
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java
index 0bfd83c..feeb14b 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java
@@ -62,7 +62,6 @@
 import org.opends.server.types.*;
 import org.opends.server.util.LDIFWriter;
 import org.opends.server.util.ServerConstants;
-import org.opends.server.util.StaticUtils;
 import org.opends.server.util.TimeThread;
 import org.opends.server.workflowelement.externalchangelog.ECLSearchOperation;
 import org.opends.server.workflowelement.externalchangelog.ECLWorkflowElement;
@@ -539,17 +538,6 @@
     }
   }
 
-  private void stop(ReplicationBroker... brokers)
-  {
-    for (ReplicationBroker broker : brokers)
-    {
-      if (broker != null)
-      {
-        broker.stop();
-      }
-    }
-  }
-
   /**
    * From embedded ECL (no remote session)
    * With empty RS, simple search should return only root entry.
@@ -2090,11 +2078,7 @@
    */
   private void shutdown() throws Exception
   {
-    if (replicationServer != null) {
-      replicationServer.remove();
-      StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-            replicationServer.getDbDirName()));
-    }
+    remove(replicationServer);
     replicationServer = null;
   }
 
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/MonitorTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/MonitorTest.java
index 2314805..b746cc4 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/MonitorTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/MonitorTest.java
@@ -27,6 +27,10 @@
  */
 package org.opends.server.replication.server;
 
+import java.io.ByteArrayOutputStream;
+import java.net.SocketException;
+import java.util.*;
+
 import org.opends.messages.Category;
 import org.opends.messages.Message;
 import org.opends.messages.Severity;
@@ -44,18 +48,9 @@
 import org.opends.server.types.Attribute;
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
-import org.opends.server.util.StaticUtils;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.net.SocketException;
-import java.util.ArrayList;
-import java.util.SortedSet;
-import java.util.TreeSet;
-import java.util.UUID;
-
 import static org.opends.server.TestCaseUtils.*;
 import static org.opends.server.loggers.ErrorLogger.*;
 import static org.opends.server.loggers.debug.DebugLogger.*;
@@ -436,49 +431,14 @@
   {
     debugInfo("Post test cleaning.");
 
-    // Clean brokers
-    if (broker2 != null)
-      broker2.stop();
-    broker2 = null;
-    if (broker3 != null)
-      broker3.stop();
-    broker3 = null;
-    if (broker4 != null)
-      broker4.stop();
-    broker4 = null;
-
-    if (replServer1 != null)
-    {
-      replServer1.clearDb();
-      replServer1.remove();
-      StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-                 replServer1.getDbDirName()));
-      replServer1 = null;
-    }
-    if (replServer2 != null)
-    {
-      replServer2.clearDb();
-      replServer2.remove();
-      StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-                 replServer2.getDbDirName()));
-      replServer2 = null;
-    }
-    if (replServer3 != null)
-    {
-      replServer3.clearDb();
-      replServer3.remove();
-      StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-                 replServer3.getDbDirName()));
-     replServer3 = null;
-    }
+    stop(broker2, broker3, broker4);
+    broker2 = broker3 = broker4 = null;
+    remove(replServer1, replServer2, replServer3);
+    replServer1 = replServer2 = replServer3 = null;
 
     super.cleanRealEntries();
 
-    // Clean replication server ports
-    for (int i = 0; i < replServerPort.length; i++)
-    {
-      replServerPort[i] = 0;
-    }
+    Arrays.fill(replServerPort, 0);
 
     try
     {
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ReplicationServerTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ReplicationServerTest.java
index 3138b03..0821bd4 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ReplicationServerTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ReplicationServerTest.java
@@ -862,7 +862,7 @@
       }
       finally
       {
-        removeRsAndChangeLog(changelogs);
+        remove(changelogs);
         stop(broker1, broker2);
       }
     }
@@ -1751,31 +1751,9 @@
        }
        finally
        {
-      removeRsAndChangeLog(changelogs);
+      remove(changelogs);
       stop(broker1, broker2);
        }
   }
 
-  private void stop(ReplicationBroker... brokers)
-  {
-    for (ReplicationBroker broker : brokers)
-    {
-      if (broker != null)
-        broker.stop();
-    }
-  }
-
-  private void removeRsAndChangeLog(ReplicationServer... replicationServers)
-  {
-    for (ReplicationServer rs : replicationServers)
-    {
-      if (rs != null)
-      {
-        rs.remove();
-        recursiveDelete(new File(DirectoryServer.getInstanceRoot(), rs
-            .getDbDirName()));
-      }
-    }
-  }
-
 }
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/service/ReplicationDomainTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/service/ReplicationDomainTest.java
index e07d1cc..5468413 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/service/ReplicationDomainTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/service/ReplicationDomainTest.java
@@ -27,14 +27,12 @@
  */
 package org.opends.server.replication.service;
 
-import java.io.File;
 import java.util.*;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.TimeUnit;
 
 import org.opends.server.TestCaseUtils;
-import org.opends.server.core.DirectoryServer;
 import org.opends.server.replication.ReplicationTestCase;
 import org.opends.server.replication.common.DSInfo;
 import org.opends.server.replication.common.RSInfo;
@@ -44,7 +42,6 @@
 import org.opends.server.replication.server.ReplServerFakeConfiguration;
 import org.opends.server.replication.server.ReplicationServer;
 import org.opends.server.types.DN;
-import org.opends.server.util.StaticUtils;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
@@ -295,19 +292,6 @@
     }
   }
 
-  private void remove(ReplicationServer... replServers)
-  {
-    for (ReplicationServer replServer : replServers)
-    {
-      if (replServer != null)
-      {
-        replServer.remove();
-        StaticUtils.recursiveDelete(new File(DirectoryServer.getInstanceRoot(),
-            replServer.getDbDirName()));
-      }
-    }
-  }
-
   @DataProvider(name = "exportAndImportData")
   public Object[][] createExportAndimportData()
   {

--
Gitblit v1.10.0