From a5f828cdb6549933c9f49783f99be1de1085a75e Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 27 Aug 2013 09:57:22 +0000
Subject: [PATCH] Made code more encapsulated and more explicit. Removed parameters obscuring the code.

---
 opends/src/server/org/opends/server/replication/server/MessageHandler.java                         |   40 +++---
 opends/src/server/org/opends/server/replication/server/ReplicationServer.java                      |  132 ++++++++++++---------
 opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java          |   10 -
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ExternalChangeLogTest.java |   18 +-
 opends/src/server/org/opends/server/replication/server/ECLServerHandler.java                       |    2 
 opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNDbHandler.java          |    4 
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/GenerationIdTest.java      |   61 ++++-----
 opends/src/server/org/opends/server/replication/server/ReplicationBackend.java                     |    2 
 opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java                |   13 +-
 opends/src/server/org/opends/server/replication/server/changelog/je/DbHandler.java                 |    2 
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/InitOnLineTest.java        |   32 ++---
 11 files changed, 154 insertions(+), 162 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java b/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java
index 387b190..b7c4a39 100644
--- a/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java
+++ b/opends/src/server/org/opends/server/replication/server/ECLServerHandler.java
@@ -800,7 +800,7 @@
       {
         if (allowUnknownDomains)
           for (String providedDomain : startStatesFromProvidedCookie.keySet())
-            if (rs.getReplicationServerDomain(providedDomain, false) == null)
+            if (rs.getReplicationServerDomain(providedDomain) == null)
               // the domain provided in the cookie is not replicated
               startStatesFromProvidedCookie.remove(providedDomain);
       }
diff --git a/opends/src/server/org/opends/server/replication/server/MessageHandler.java b/opends/src/server/org/opends/server/replication/server/MessageHandler.java
index 5e049e3..9b34ed0 100644
--- a/opends/src/server/org/opends/server/replication/server/MessageHandler.java
+++ b/opends/src/server/org/opends/server/replication/server/MessageHandler.java
@@ -189,18 +189,19 @@
   /**
    * Returns the Replication Server Domain to which belongs this handler.
    *
-   * @param createIfNotExist    Creates the domain if it does not exist.
    * @param waitConnections     Waits for the Connections with other RS to
    *                            be established before returning.
    * @return The replication server domain.
    */
-  public ReplicationServerDomain getDomain(
-      boolean createIfNotExist, boolean waitConnections)
+  public ReplicationServerDomain getDomain(boolean waitConnections)
   {
-    if (replicationServerDomain==null)
+    if (replicationServerDomain == null)
     {
-      replicationServerDomain = replicationServer.getReplicationServerDomain(
-            baseDN, createIfNotExist, waitConnections);
+      replicationServerDomain =
+          replicationServer.getReplicationServerDomain(baseDN, true);
+      if (waitConnections) {
+        replicationServer.waitConnections();
+      }
     }
     return replicationServerDomain;
   }
@@ -476,7 +477,7 @@
         new TreeSet<ReplicationIterator>(new ReplicationIteratorComparator());
 
     // Build a list of candidates iterator (i.e. db i.e. server)
-    for (int serverId : replicationServerDomain.getServers())
+    for (int serverId : replicationServerDomain.getServerIds())
     {
       // get the last already sent CN from that server
       ChangeNumber lastCsn = serverState.getChangeNumber(serverId);
@@ -525,20 +526,19 @@
        * the number of updates to be sent is the size of the receive queue.
        */
       if (following)
-        return msgQueue.count();
-      else
       {
-        /*
-         * When the server  is not able to follow, the msgQueue
-         * may become too large and therefore won't contain all the
-         * changes. Some changes may only be stored in the backing DB
-         * of the servers.
-         * The total size of the receive queue is calculated by doing
-         * the sum of the number of missing changes for every dbHandler.
-         */
-        ServerState dbState = replicationServerDomain.getDbServerState();
-        return ServerState.diffChanges(dbState, serverState);
+        return msgQueue.count();
       }
+
+      /*
+       * When the server is not able to follow, the msgQueue may become too
+       * large and therefore won't contain all the changes. Some changes may
+       * only be stored in the backing DB of the servers.
+       * The total size of the receive queue is calculated by doing the sum of
+       * the number of missing changes for every dbHandler.
+       */
+      ServerState dbState = replicationServerDomain.getDbServerState();
+      return ServerState.diffChanges(dbState, serverState);
     }
   }
 
@@ -639,7 +639,7 @@
     {
       this.baseDN = baseDN;
       if (!baseDN.equalsIgnoreCase("cn=changelog"))
-        this.replicationServerDomain = getDomain(true, isDataServer);
+        this.replicationServerDomain = getDomain(isDataServer);
     }
   }
 
diff --git a/opends/src/server/org/opends/server/replication/server/ReplicationBackend.java b/opends/src/server/org/opends/server/replication/server/ReplicationBackend.java
index 28d3943..f84ac2f 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationBackend.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationBackend.java
@@ -624,7 +624,7 @@
       final LDIFExportConfig exportConfig, LDIFWriter ldifWriter,
       SearchOperation searchOperation, final ChangeNumber previousCN)
   {
-    for (int serverId : rsd.getServers())
+    for (int serverId : rsd.getServerIds())
     {
       if (exportConfig != null && exportConfig.isCancelled())
       { // Abort if cancelled
diff --git a/opends/src/server/org/opends/server/replication/server/ReplicationServer.java b/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
index 7455fa0..9aedc1b 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
@@ -430,14 +430,9 @@
 
             // FIXME: this will need changing if we ever support listening on
             // specific addresses.
-            if (isLocalAddress(inetAddress) && (port == replicationPort))
-            {
-              continue;
-            }
-
+            if ((isLocalAddress(inetAddress) && port == replicationPort)
             // Don't connect to a server if it is already connected.
-            final String normalizedServerURL = normalizeServerURL(rsURL);
-            if (connectedRSUrls.contains(normalizedServerURL))
+                || connectedRSUrls.contains(normalizeServerURL(rsURL)))
             {
               continue;
             }
@@ -726,15 +721,12 @@
    *
    * @param baseDn The base Dn for which the ReplicationServerDomain must be
    * returned.
-   * @param create Specifies whether to create the ReplicationServerDomain if
-   *        it does not already exist.
    * @return The ReplicationServerDomain associated to the base DN given in
    *         parameter.
    */
-  public ReplicationServerDomain getReplicationServerDomain(String baseDn,
-          boolean create)
+  public ReplicationServerDomain getReplicationServerDomain(String baseDn)
   {
-    return getReplicationServerDomain(baseDn, create, false);
+    return getReplicationServerDomain(baseDn, false);
   }
 
   /**
@@ -745,68 +737,62 @@
    * returned.
    * @param create Specifies whether to create the ReplicationServerDomain if
    *        it does not already exist.
-   * @param waitConnections     Waits for the Connections with other RS to
-   *                            be established before returning.
    * @return The ReplicationServerDomain associated to the base DN given in
    *         parameter.
    */
   public ReplicationServerDomain getReplicationServerDomain(String baseDn,
-          boolean create, boolean waitConnections)
+      boolean create)
   {
-    ReplicationServerDomain domain;
-
     synchronized (baseDNs)
     {
-      domain = baseDNs.get(baseDn);
-
-      if (domain != null ||!create) {
-        return domain;
+      ReplicationServerDomain domain = baseDNs.get(baseDn);
+      if (domain == null && create) {
+        domain = new ReplicationServerDomain(baseDn, this);
+        baseDNs.put(baseDn, domain);
       }
-
-      domain = new ReplicationServerDomain(baseDn, this);
-      baseDNs.put(baseDn, domain);
+      return domain;
     }
+  }
 
-    if (waitConnections)
+  /**
+   * Waits for connections to this ReplicationServer.
+   */
+  public void waitConnections()
+  {
+    // Acquire a domain ticket and wait for a complete cycle of the connect
+    // thread.
+    final long myDomainTicket;
+    synchronized (connectThreadLock)
     {
-      // Acquire a domain ticket and wait for a complete cycle of the connect
-      // thread.
-      final long myDomainTicket;
-      synchronized (connectThreadLock)
-      {
-        // Connect thread must be waiting.
-        synchronized (domainTicketLock)
-        {
-          // Determine the ticket which will be used in the next connect thread
-          // iteration.
-          myDomainTicket = domainTicket + 1;
-        }
-
-        // Wake up connect thread.
-        connectThreadLock.notify();
-      }
-
-      // Wait until the connect thread has processed next connect phase.
+      // Connect thread must be waiting.
       synchronized (domainTicketLock)
       {
-        // Condition.
-        while (myDomainTicket > domainTicket && !shutdown)
+        // Determine the ticket which will be used in the next connect thread
+        // iteration.
+        myDomainTicket = domainTicket + 1;
+      }
+
+      // Wake up connect thread.
+      connectThreadLock.notify();
+    }
+
+    // Wait until the connect thread has processed next connect phase.
+    synchronized (domainTicketLock)
+    {
+      while (myDomainTicket > domainTicket && !shutdown)
+      {
+        try
         {
-          try
-          {
-            // Wait with timeout so that we detect shutdown.
-            domainTicketLock.wait(500);
-          }
-          catch (InterruptedException e)
-          {
-            // Can't do anything with this.
-            Thread.currentThread().interrupt();
-          }
+          // Wait with timeout so that we detect shutdown.
+          domainTicketLock.wait(500);
+        }
+        catch (InterruptedException e)
+        {
+          // Can't do anything with this.
+          Thread.currentThread().interrupt();
         }
       }
     }
-
-    return domain;
   }
 
   /**
@@ -1158,7 +1144,7 @@
    */
   public long getGenerationId(String baseDN)
   {
-    ReplicationServerDomain rsd = getReplicationServerDomain(baseDN, false);
+    ReplicationServerDomain rsd = getReplicationServerDomain(baseDN);
     if (rsd!=null)
       return rsd.getGenerationId();
     return -1;
@@ -1924,4 +1910,34 @@
     return "RS(" + serverId + ") on " + serverURL + ", domains="
         + baseDNs.keySet();
   }
+
+  /**
+   * Initializes the generationId for the specified replication domain.
+   *
+   * @param baseDn
+   *          the replication domain
+   * @param generationId
+   *          the the generationId value for initialization
+   */
+  public void initDomainGenerationID(String baseDn, long generationId)
+  {
+    getReplicationServerDomain(baseDn, true).initGenerationID(generationId);
+  }
+
+  /**
+   * Adds the specified serverId to the specified replication domain.
+   *
+   * @param serverId
+   *          the server Id to add to the replication domain
+   * @param baseDn
+   *          the replication domain where to add the serverId
+   * @throws ChangelogException
+   *           If a database error happened.
+   */
+  public void addServerIdToDomain(int serverId, String baseDn)
+      throws ChangelogException
+  {
+    DbHandler dbHandler = newDbHandler(serverId, baseDn);
+    getReplicationServerDomain(baseDn, true).setDbHandler(serverId, dbHandler);
+  }
 }
diff --git a/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java b/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
index 7afb0d0..edf8919 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
@@ -120,7 +120,7 @@
    * This map contains the List of updates received from each LDAP server.
    */
   private final Map<Integer, DbHandler> sourceDbHandlers =
-    new ConcurrentHashMap<Integer, DbHandler>();
+      new ConcurrentHashMap<Integer, DbHandler>();
   /** The ReplicationServer that created the current instance. */
   private ReplicationServer localReplicationServer;
 
@@ -1269,12 +1269,13 @@
   }
 
   /**
-   * Return a set containing the server that produced update and known by
-   * this replicationServer from all over the topology,
-   * whatever directly connected of connected to another RS.
-   * @return a set containing the servers known by this replicationServer.
+   * Returns a set containing the serverIds that produced updates and known by
+   * this replicationServer from all over the topology, whether directly
+   * connected or connected to another RS.
+   *
+   * @return a set containing the serverIds known by this replicationServer.
    */
-  public Set<Integer> getServers()
+  public Set<Integer> getServerIds()
   {
     return sourceDbHandlers.keySet();
   }
diff --git a/opends/src/server/org/opends/server/replication/server/changelog/je/DbHandler.java b/opends/src/server/org/opends/server/replication/server/changelog/je/DbHandler.java
index 0708ad9..8caa08f 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/je/DbHandler.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/je/DbHandler.java
@@ -562,7 +562,7 @@
     public String getMonitorInstanceName()
     {
       ReplicationServerDomain domain = replicationServer
-          .getReplicationServerDomain(baseDn, false);
+          .getReplicationServerDomain(baseDn);
       return "Changelog for DS(" + serverId + "),cn="
           + domain.getMonitorInstanceName();
     }
diff --git a/opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNDbHandler.java b/opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNDbHandler.java
index 7a86d28..ff91e18 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNDbHandler.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/je/DraftCNDbHandler.java
@@ -340,8 +340,8 @@
             continue;
           }
 
-          final ReplicationServerDomain domain = replicationServer
-              .getReplicationServerDomain(baseDN, false);
+          final ReplicationServerDomain domain =
+              replicationServer.getReplicationServerDomain(baseDN);
           if (domain == null)
           {
             // the domain has been removed since the record was written in the
diff --git a/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java b/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java
index d6d5707..3f8e346 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java
@@ -203,8 +203,7 @@
               + this.replicationServer.getMonitorInstanceName()
               + " Has read baseDn=" + baseDn + " generationId=" + generationId);
 
-        replicationServer.getReplicationServerDomain(baseDn, true)
-            .initGenerationID(generationId);
+        replicationServer.initDomainGenerationID(baseDn, generationId);
       }
       status = cursor.getNext(key, data, LockMode.DEFAULT);
     }
@@ -236,12 +235,7 @@
               + this.replicationServer.getMonitorInstanceName()
               + " Has read: baseDn=" + baseDn + " serverId=" + serverId);
 
-        DbHandler dbHandler =
-            new DbHandler(serverId, baseDn, replicationServer, this,
-                replicationServer.getQueueSize());
-
-        replicationServer.getReplicationServerDomain(baseDn, true)
-            .setDbHandler(serverId, dbHandler);
+        replicationServer.addServerIdToDomain(serverId, baseDn);
       }
 
       status = cursor.getNext(key, data, LockMode.DEFAULT);
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ExternalChangeLogTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ExternalChangeLogTest.java
index 87841bb..fd98860 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ExternalChangeLogTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ExternalChangeLogTest.java
@@ -830,14 +830,13 @@
       publishDeleteMsgInOTest(s2test, cn9, tn, 9);
       sleep(500);
 
-      ReplicationServerDomain rsd =
-        replicationServer.getReplicationServerDomain(TEST_ROOT_DN_STRING, false);
+      ReplicationServerDomain rsd = replicationServer.getReplicationServerDomain(TEST_ROOT_DN_STRING);
       ServerState startState = rsd.getStartState();
       assertEquals(startState.getChangeNumber(s1test.getServerId()).getSeqnum(), 1);
       assertTrue(startState.getChangeNumber(s2test.getServerId()) != null);
       assertEquals(startState.getChangeNumber(s2test.getServerId()).getSeqnum(), 7);
 
-      rsd = replicationServer.getReplicationServerDomain(TEST_ROOT_DN_STRING2, false);
+      rsd = replicationServer.getReplicationServerDomain(TEST_ROOT_DN_STRING2);
       startState = rsd.getStartState();
       assertEquals(startState.getChangeNumber(s2test2.getServerId()).getSeqnum(), 2);
       assertEquals(startState.getChangeNumber(s1test2.getServerId()).getSeqnum(), 6);
@@ -1012,8 +1011,8 @@
       // ---
       // 2. Now set up a very short purge delay on the replication changelogs
       // so that this test can play with a trimmed changelog.
-      d1 = replicationServer.getReplicationServerDomain("o=test", false);
-      d2 = replicationServer.getReplicationServerDomain("o=test2", false);
+      d1 = replicationServer.getReplicationServerDomain("o=test");
+      d2 = replicationServer.getReplicationServerDomain("o=test2");
       d1.setPurgeDelay(1);
       d2.setPurgeDelay(1);
 
@@ -2331,8 +2330,7 @@
       publishDeleteMsgInOTest(s2test, cn9, tn, 9);
       sleep(500);
 
-      ReplicationServerDomain rsd1 =
-        replicationServer.getReplicationServerDomain(TEST_ROOT_DN_STRING, false);
+      ReplicationServerDomain rsd1 = replicationServer.getReplicationServerDomain(TEST_ROOT_DN_STRING);
       rsd1.getDbServerState();
       rsd1.getChangeTimeHeartbeatState();
       debugInfo(tn, rsd1.getBaseDn()
@@ -2342,8 +2340,7 @@
           + " rs eligibleCN=" + replicationServer.getEligibleCN());
       // FIXME:ECL Enable this test by adding an assert on the right value
 
-      ReplicationServerDomain rsd2 =
-        replicationServer.getReplicationServerDomain(TEST_ROOT_DN_STRING2, false);
+      ReplicationServerDomain rsd2 = replicationServer.getReplicationServerDomain(TEST_ROOT_DN_STRING2);
       rsd2.getDbServerState();
       rsd2.getChangeTimeHeartbeatState();
       debugInfo(tn, rsd2.getBaseDn()
@@ -2900,8 +2897,7 @@
     final ChangeNumber cn2 = cns[1];
     final ChangeNumber cn3 = cns[2];
 
-    ReplicationServerDomain rsdtest =
-        replicationServer.getReplicationServerDomain(TEST_ROOT_DN_STRING, false);
+    ReplicationServerDomain rsdtest = replicationServer.getReplicationServerDomain(TEST_ROOT_DN_STRING);
     // this empty state will force to count from the start of the DB
     final ServerState fromStart = new ServerState();
 
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 a2f214f..b3302d9 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
@@ -27,6 +27,11 @@
  */
 package org.opends.server.replication;
 
+import java.io.File;
+import java.net.SocketException;
+import java.net.SocketTimeoutException;
+import java.util.*;
+
 import org.opends.messages.Category;
 import org.opends.messages.Message;
 import org.opends.messages.Severity;
@@ -43,6 +48,7 @@
 import org.opends.server.replication.server.ReplServerFakeConfiguration;
 import org.opends.server.replication.server.ReplicationBackend;
 import org.opends.server.replication.server.ReplicationServer;
+import org.opends.server.replication.server.ReplicationServerDomain;
 import org.opends.server.replication.service.ReplicationBroker;
 import org.opends.server.tasks.LdifFileWriter;
 import org.opends.server.types.*;
@@ -50,11 +56,6 @@
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-import java.io.File;
-import java.net.SocketException;
-import java.net.SocketTimeoutException;
-import java.util.*;
-
 import static org.opends.server.TestCaseUtils.*;
 import static org.opends.server.loggers.ErrorLogger.*;
 import static org.opends.server.loggers.debug.DebugLogger.*;
@@ -910,23 +911,17 @@
       debugInfo("RS1 must have been cleared since it has not the proper generation ID");
       checkChangelogSize(0);
 
-      assertTrue(!replServer1.getReplicationServerDomain(
-          baseDn.toNormalizedString(), false).
-          isDegradedDueToGenerationId(server1ID),
-      "Expecting that DS1 status in RS1 is : not in bad gen id.");
+      assertFalse(isDegradedDueToGenerationId(replServer1, server1ID),
+          "Expecting that DS1 status in RS1 is : not in bad gen id.");
 
       //===============================================================
       debugInfo(testCase + " ** TEST ** Previous test set a new gen ID on the "+
           "topology, verify degradation of DS2 and DS3");
 
-      assertTrue(replServer1.getReplicationServerDomain(
-          baseDn.toNormalizedString(), false).
-          isDegradedDueToGenerationId(server2ID),
-      "Expecting that DS2 with old gen ID is in bad gen id from RS1");
-      assertTrue(replServer1.getReplicationServerDomain(
-          baseDn.toNormalizedString(), false).
-          isDegradedDueToGenerationId(server3ID),
-      "Expecting that DS3 with old gen ID is in bad gen id from RS1");
+      assertTrue(isDegradedDueToGenerationId(replServer1, server2ID),
+          "Expecting that DS2 with old gen ID is in bad gen id from RS1");
+      assertTrue(isDegradedDueToGenerationId(replServer1, server3ID),
+          "Expecting that DS3 with old gen ID is in bad gen id from RS1");
 
       debugInfo("Add entries to DS1, update should not be sent to DS2 and DS3 that are in bad gen id");
       String[] ent3 = { createEntry(UUID.randomUUID()) };
@@ -1013,18 +1008,12 @@
       checkChangelogSize(1);
 
       debugInfo("Verifying that DS2 is not in bad gen id any more");
-
-      assertTrue(!replServer1.getReplicationServerDomain(
-          baseDn.toNormalizedString(), false).
-          isDegradedDueToGenerationId(server2ID),
-      "Expecting that DS2 is not in bad gen id from RS1");
+      assertFalse(isDegradedDueToGenerationId(replServer1, server2ID),
+          "Expecting that DS2 is not in bad gen id from RS1");
 
       debugInfo("Verifying that DS3 is not in bad gen id any more");
-
-      assertTrue(!replServer1.getReplicationServerDomain(
-          baseDn.toNormalizedString(), false).
-          isDegradedDueToGenerationId(server3ID),
-      "Expecting that DS3 is not in bad gen id from RS1");
+      assertFalse(isDegradedDueToGenerationId(replServer1, server3ID),
+          "Expecting that DS3 is not in bad gen id from RS1");
 
       debugInfo("Verify that DS2 receives the add message stored in RS1 DB");
       try
@@ -1190,10 +1179,8 @@
         fail("Broker connection is expected to be accepted.");
       }
 
-      debugInfo(
-        "Expecting that broker2 is not in bad gen id since it has a correct genId");
-      assertTrue(!replServer1.getReplicationServerDomain(baseDn.toNormalizedString(), false).
-        isDegradedDueToGenerationId(server2ID));
+      debugInfo("Expecting that broker2 is not in bad gen id since it has a correct genId");
+      assertFalse(isDegradedDueToGenerationId(replServer1, server2ID));
 
       debugInfo("Disconnecting DS from replServer1");
       disconnectFromReplServer(changelog1ID);
@@ -1229,10 +1216,8 @@
         fail("Broker connection is expected to be accepted.");
       }
 
-      debugInfo(
-        "Expecting that broker3 is in bad gen id since it has a bad genId");
-      assertTrue(replServer1.getReplicationServerDomain(baseDn.toNormalizedString(), false).
-        isDegradedDueToGenerationId(server3ID));
+      debugInfo("Expecting that broker3 is in bad gen id since it has a bad genId");
+      assertTrue(isDegradedDueToGenerationId(replServer1, server3ID));
 
       int found = testEntriesInDb();
       assertEquals(found, updatedEntries.length,
@@ -1302,6 +1287,12 @@
     }
   }
 
+  private boolean isDegradedDueToGenerationId(ReplicationServer rs, int serverId)
+  {
+    ReplicationServerDomain domain = rs.getReplicationServerDomain(baseDn.toNormalizedString());
+    return domain.isDegradedDueToGenerationId(serverId);
+  }
+
   /**
    * Disconnect broker and remove entries from the local DB
    */
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 47976f4..df6b068 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
@@ -48,6 +48,7 @@
 import org.opends.server.replication.protocol.*;
 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.replication.service.ReplicationBroker;
 import org.opends.server.schema.DirectoryStringSyntax;
 import org.opends.server.types.*;
@@ -1072,34 +1073,21 @@
       broker3 = openReplicationSession(DN.decode(EXAMPLE_DN),
         server3ID, 100, getChangelogPort(changelog2ID), 1000, emptyOldChanges);
 
-      // Check that the list of connected LDAP servers is correct
-      // in each replication servers
-      Set<Integer> l1 = changelog1.getReplicationServerDomain(
-          baseDn.toNormalizedString(), false).getConnectedDSs().keySet();
-      Assertions.assertThat(l1).containsExactly(server1ID);
-
-      Set<Integer> l2 = changelog2.getReplicationServerDomain(
-          baseDn.toNormalizedString(), false).getConnectedDSs().keySet();
-      Assertions.assertThat(l2).containsExactly(server2ID, server3ID);
-
-      Set<Integer> l3 = changelog3.getReplicationServerDomain(
-          baseDn.toNormalizedString(), false).getConnectedDSs().keySet();
-      Assertions.assertThat(l3).isEmpty();
+      // Check that the list of connected LDAP servers is correct in each replication servers
+      Assertions.assertThat(getConnectedDSServerIds(changelog1)).containsExactly(server1ID);
+      Assertions.assertThat(getConnectedDSServerIds(changelog2)).containsExactly(server2ID, server3ID);
+      Assertions.assertThat(getConnectedDSServerIds(changelog3)).isEmpty();
 
       // Test updates
       broker3.stop();
       Thread.sleep(1000);
-      l2 = changelog2.getReplicationServerDomain(
-          baseDn.toNormalizedString(), false).getConnectedDSs().keySet();
-      Assertions.assertThat(l2).containsExactly(server2ID);
+      Assertions.assertThat(getConnectedDSServerIds(changelog2)).containsExactly(server2ID);
 
       broker3 = openReplicationSession(DN.decode(EXAMPLE_DN),
         server3ID, 100, getChangelogPort(changelog2ID), 1000, emptyOldChanges);
       broker2.stop();
       Thread.sleep(1000);
-      l2 = changelog2.getReplicationServerDomain(
-          baseDn.toNormalizedString(), false).getConnectedDSs().keySet();
-      Assertions.assertThat(l2).containsExactly(server3ID);
+      Assertions.assertThat(getConnectedDSServerIds(changelog2)).containsExactly(server3ID);
 
     // TODO Test ReplicationServerDomain.getDestinationServers method.
 
@@ -1115,6 +1103,12 @@
     }
   }
 
+  private Set<Integer> getConnectedDSServerIds(ReplicationServer changelog)
+  {
+    ReplicationServerDomain domain = changelog.getReplicationServerDomain(baseDn.toNormalizedString());
+    return domain.getConnectedDSs().keySet();
+  }
+
   @Test(enabled=true, groups="slow")
   public void initializeTargetExportMultiSS() throws Exception
   {

--
Gitblit v1.10.0