From 639a952f54128a6a0675eb7b95cd4b277ea338d6 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 02 Feb 2016 16:00:11 +0000
Subject: [PATCH] ReplicationServerTest.java: removed duplicated code

---
 opendj-server-legacy/src/test/java/org/opends/server/replication/server/ReplicationServerTest.java |  278 ++++++++++++++++++++++++-------------------------------
 1 files changed, 120 insertions(+), 158 deletions(-)

diff --git a/opendj-server-legacy/src/test/java/org/opends/server/replication/server/ReplicationServerTest.java b/opendj-server-legacy/src/test/java/org/opends/server/replication/server/ReplicationServerTest.java
index f13b46b..f409152 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/replication/server/ReplicationServerTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/replication/server/ReplicationServerTest.java
@@ -22,18 +22,22 @@
  *
  *
  *      Copyright 2006-2009 Sun Microsystems, Inc.
- *      Portions Copyright 2011-2015 ForgeRock AS
+ *      Portions Copyright 2011-2016 ForgeRock AS
  */
 package org.opends.server.replication.server;
 
 import java.net.InetSocketAddress;
 import java.net.Socket;
 import java.net.SocketTimeoutException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.SortedSet;
+import java.util.TreeSet;
 
 import org.assertj.core.api.Assertions;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
-import org.forgerock.opendj.ldap.ModificationType;
+import org.forgerock.opendj.config.server.ConfigException;
 import org.opends.server.TestCaseUtils;
 import org.opends.server.api.SynchronizationProvider;
 import org.opends.server.core.DirectoryServer;
@@ -47,23 +51,45 @@
 import org.opends.server.replication.plugin.DummyReplicationDomain;
 import org.opends.server.replication.plugin.MultimasterReplication;
 import org.opends.server.replication.plugin.ReplicationServerListener;
-import org.opends.server.replication.protocol.*;
+import org.opends.server.replication.protocol.AddMsg;
+import org.opends.server.replication.protocol.DeleteMsg;
+import org.opends.server.replication.protocol.ModifyDNMsg;
+import org.opends.server.replication.protocol.ModifyDnContext;
+import org.opends.server.replication.protocol.ModifyMsg;
+import org.opends.server.replication.protocol.ReplServerStartDSMsg;
+import org.opends.server.replication.protocol.ReplSessionSecurity;
+import org.opends.server.replication.protocol.ReplicationMsg;
+import org.opends.server.replication.protocol.ServerStartMsg;
+import org.opends.server.replication.protocol.Session;
+import org.opends.server.replication.protocol.StartSessionMsg;
+import org.opends.server.replication.protocol.TopologyMsg;
+import org.opends.server.replication.protocol.UpdateMsg;
+import org.opends.server.replication.protocol.WindowMsg;
+import org.opends.server.replication.protocol.WindowProbeMsg;
 import org.opends.server.replication.service.ReplicationBroker;
-import org.opends.server.types.*;
+import org.opends.server.types.Attribute;
+import org.opends.server.types.Attributes;
+import org.opends.server.types.DN;
+import org.opends.server.types.DirectoryConfig;
+import org.opends.server.types.DirectoryException;
+import org.opends.server.types.Entry;
+import org.opends.server.types.HostPort;
+import org.opends.server.types.Modification;
+import org.opends.server.types.RDN;
 import org.opends.server.util.TimeThread;
 import org.opends.server.workflowelement.localbackend.LocalBackendModifyDNOperation;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
+import static org.forgerock.opendj.ldap.ModificationType.*;
 import static org.opends.server.TestCaseUtils.*;
 import static org.opends.server.replication.protocol.OperationContext.*;
+import static org.opends.server.util.CollectionUtils.*;
 import static org.opends.server.util.StaticUtils.*;
 import static org.testng.Assert.*;
 
-/**
- * Tests for the replicationServer code.
- */
+/** Tests for the replicationServer code. */
 @SuppressWarnings("javadoc")
 public class ReplicationServerTest extends ReplicationTestCase
 {
@@ -84,13 +110,7 @@
 
   private CSN unknownCSNServer1;
 
-  /**
-   * Set up the environment for performing the tests in this Class.
-   * Replication
-   *
-   * @throws Exception
-   *           If the environment could not be set up.
-   */
+  /** Set up the environment for performing the tests in this Class. */
   @BeforeClass
   @Override
   public void setUp() throws Exception
@@ -103,9 +123,7 @@
     configure();
   }
 
-  /**
-   * Start the server and configure a replicationServer.
-   */
+  /** Start the server and configure a replicationServer. */
   private void configure() throws Exception
   {
     replicationServerPort = TestCaseUtils.findFreePort();
@@ -130,6 +148,7 @@
         }
       }
     }
+    assertNotNull(replicationServer);
   }
 
   private void debugInfo(String s)
@@ -285,7 +304,7 @@
     if (csn == null) {
       return "";
     }
-    if (csn.equals(firstCSNServer1))
+    else if (csn.equals(firstCSNServer1))
     {
       return "firstCSNServer1";
     }
@@ -318,10 +337,7 @@
     return state;
   }
 
-  /**
-   * Test that a new client see the change that was sent in the
-   * previous test.
-   */
+  /** Test that a new client see the change that was sent in the previous test. */
   private void newClient() throws Exception
   {
     debugInfo("Starting newClient");
@@ -341,10 +357,7 @@
     }
   }
 
-  /**
-   * Test that a client that has already seen some changes now receive
-   * the correct next change.
-   */
+  /** Test that a client that has already seen some changes now receive the correct next change. */
   private void newClientWithChanges(ServerState state, CSN nextCSN) throws Exception
   {
     ReplicationBroker broker = null;
@@ -367,9 +380,7 @@
     }
   }
 
-  /**
-   * Asserts that the CSN for the passed in message matches the supplied CSN.
-   */
+  /** Asserts that the CSN for the passed in message matches the supplied CSN. */
   private void assertDeleteMsgCSNEquals(ReplicationMsg msg, CSN nextCSN, String msgNumber)
   {
     Assertions.assertThat(msg).isInstanceOf(DeleteMsg.class);
@@ -378,10 +389,7 @@
         + " message received by a new client was the wrong one.");
   }
 
-  /**
-   * Test that a client that has already seen the first change now see the
-   * second change.
-   */
+  /** Test that a client that has already seen the first change now see the second change. */
   private void newClientWithFirstChanges() throws Exception
   {
     debugInfo("Starting newClientWithFirstChanges");
@@ -394,10 +402,7 @@
     debugInfo("Ending newClientWithFirstChanges");
   }
 
-  /**
-   * Test with a client that has already seen a Change that the
-   * ReplicationServer has not seen.
-   */
+  /** Test with a client that has already seen a Change that the ReplicationServer has not seen. */
   private void newClientWithUnknownChanges() throws Exception
   {
     debugInfo("Starting newClientWithUnknownChanges");
@@ -419,7 +424,7 @@
   }
 
   /**
-   * Test that a client that has already seen the first chaneg from server 2
+   * Test that a client that has already seen the first change from server 2
    * now see the first change from server 1.
    */
   private void newClientWithChangefromServer2() throws Exception
@@ -430,10 +435,7 @@
     debugInfo("Ending newClientWithChangefromServer2");
   }
 
-  /**
-   * Test that a client that has not seen the second change from server 1
-   * now receive it.
-   */
+  /** Test that a client that has not seen the second change from server 1 now receive it. */
   private void newClientLateServer1() throws Exception
   {
     debugInfo("Starting newClientLateServer1");
@@ -495,15 +497,11 @@
 
     try
     {
-      /*
-       * Open a sender session
-       */
+      /* Open a sender session */
       server = openReplicationSession(TEST_ROOT_DN, 5, 100, replicationServerPort, 100000);
       reader = new BrokerReader(server, TOTAL_MSG);
 
-      /*
-       * Start the client threads.
-       */
+      /* Start the client threads. */
       for (int i =0; i< CLIENT_THREADS; i++)
       {
         clientBroker[i] = openReplicationSession(TEST_ROOT_DN, 100+i, 100, replicationServerPort, 1000);
@@ -516,10 +514,7 @@
       }
       reader.start();
 
-      /*
-       * Simple loop creating changes and sending them
-       * to the replicationServer.
-       */
+      /* Simple loop creating changes and sending them to the replicationServer. */
       for (int i = 0; i< TOTAL_MSG; i++)
       {
         server.publish(new DeleteMsg(EXAMPLE_DN, gen.newCSN(), "uid"));
@@ -571,9 +566,7 @@
 
     try
     {
-      /*
-       * Start the producer threads.
-       */
+      /* Start the producer threads. */
       for (int i = 0; i< THREADS; i++)
       {
         int serverId = 10 + i;
@@ -657,18 +650,10 @@
       int[] changelogIds = new int[] { 80, 81 };
       int[] brokerIds = new int[] { 100, 101 };
 
+      // create the 2 connected replicationServer
       for (int i = 0; i < 2; i++)
       {
-        changelogs[i] = null;
-
-        // create the 2 connected replicationServer
-        SortedSet<String> servers = new TreeSet<>();
-        servers.add(
-          "localhost:" + ((i == 0) ? changelogPorts[1] : changelogPorts[0]));
-        ReplServerFakeConfiguration conf =
-          new ReplServerFakeConfiguration(changelogPorts[i], "replicationServerTestChangelogChainingDb"+i,
-              0, changelogIds[i], 0, 100, servers);
-        changelogs[i] = new ReplicationServer(conf);
+        changelogs[i] = newReplicationServer(changelogPorts, changelogIds, i);
       }
 
       ReplicationBroker broker1 = null;
@@ -680,39 +665,23 @@
         broker2 = openReplicationSession(TEST_ROOT_DN, brokerIds[1], 100, changelogPorts[0], 1000);
 
         // - Test messages between clients by publishing now
+        CSNGenerator csnGen = new CSNGenerator(brokerIds[0], TimeThread.getTime());
 
         // - Delete
-        CSNGenerator csnGen = new CSNGenerator(brokerIds[0], TimeThread.getTime());
         DN dn = DN.valueOf("o=example" + 0 + "," + TEST_ROOT_DN_STRING);
         DeleteMsg delMsg = new DeleteMsg(dn, csnGen.newCSN(), "uid");
         broker1.publish(delMsg);
 
-        String user1entryUUID = "33333333-3333-3333-3333-333333333333";
-        String baseUUID = "22222222-2222-2222-2222-222222222222";
-
         // - Add
-        Entry entry = TestCaseUtils.entryFromLdifString(
-        "dn: o=example," + TEST_ROOT_DN_STRING + "\n"
-            + "objectClass: top\n" + "objectClass: domain\n"
-            + "entryUUID: 11111111-1111-1111-1111-111111111111\n");
-        AddMsg addMsg = new AddMsg(csnGen.newCSN(), EXAMPLE_DN,
-            user1entryUUID, baseUUID, entry.getObjectClassAttribute(),
-            entry.getAttributes(), new ArrayList<Attribute>());
+        AddMsg addMsg = addMsg(csnGen);
         broker1.publish(addMsg);
 
         // - Modify
-        Attribute attr1 = Attributes.create("description", "new value");
-        List<Modification> mods =
-            Arrays.asList(new Modification(ModificationType.REPLACE, attr1));
-        ModifyMsg modMsg = new ModifyMsg(csnGen.newCSN(), EXAMPLE_DN, mods, "fakeuniqueid");
+        ModifyMsg modMsg = modMsg(csnGen);
         broker1.publish(modMsg);
 
         // - ModifyDN
-        ModifyDNOperationBasis op = new ModifyDNOperationBasis(connection, 1, 1, null,
-            EXAMPLE_DN, RDN.decode("o=example2"), true, null);
-        op.setAttachment(SYNCHROCONTEXT, new ModifyDnContext(csnGen.newCSN(), "uniqueid", "newparentId"));
-        LocalBackendModifyDNOperation localOp = new LocalBackendModifyDNOperation(op);
-        ModifyDNMsg modDNMsg = new ModifyDNMsg(localOp);
+        ModifyDNMsg modDNMsg = modDNMsg(csnGen);
         broker1.publish(modDNMsg);
 
         // - Check msg receives by broker, through changeLog2
@@ -736,7 +705,7 @@
    * <li>Create replication server 2 connected with replication server 1</li>
    * <li>Create and connect client 2 to replication server 2</li>
    * <li>Check that client 2 receives the changes published by client 1</li>
-   * <ol>.
+   * <ol>
    */
   @Test(enabled = true)
   public void changelogChaining1() throws Exception
@@ -755,15 +724,8 @@
       int[] changelogIds = new int[] { 80, 81 };
       int[] brokerIds = new int[] { 100, 101 };
 
-      {
-        // create the 1rst replicationServer, the second one will be created later
-        SortedSet<String> servers = new TreeSet<>();
-        servers.add("localhost:" + changelogPorts[1]);
-        ReplServerFakeConfiguration conf =
-            new ReplServerFakeConfiguration(changelogPorts[0], "replicationServerTestChangelogChainingDb" + 0,
-                                         0, changelogIds[0], 0, 100, servers);
-        changelogs[0] = new ReplicationServer(conf);
-      }
+      // create the 1rst replicationServer, the second one will be created later
+      changelogs[0] = newReplicationServer(changelogPorts, changelogIds, 0);
 
       ReplicationBroker broker1 = null;
 
@@ -773,47 +735,26 @@
         broker1 = openReplicationSession(TEST_ROOT_DN, brokerIds[0], 100, changelogPorts[0], 1000);
 
         // - Test messages between clients by publishing now
-
-        // - Delete
         CSNGenerator csnGen = new CSNGenerator(brokerIds[0], TimeThread.getTime());
 
+        // - Delete
         DN dn = DN.valueOf("o=example" + 1 + "," + TEST_ROOT_DN_STRING);
         DeleteMsg delMsg = new DeleteMsg(dn, csnGen.newCSN(), "uid");
         broker1.publish(delMsg);
 
-        String user1entryUUID = "33333333-3333-3333-3333-333333333333";
-        String baseUUID = "22222222-2222-2222-2222-222222222222";
-
         // - Add
-        String lentry = "dn: o=example," + TEST_ROOT_DN_STRING + "\n"
-            + "objectClass: top\n" + "objectClass: domain\n"
-            + "entryUUID: 11111111-1111-1111-1111-111111111111\n";
-        Entry entry = TestCaseUtils.entryFromLdifString(lentry);
-        AddMsg addMsg = new AddMsg(csnGen.newCSN(), EXAMPLE_DN,
-            user1entryUUID, baseUUID, entry.getObjectClassAttribute(),
-            entry.getAttributes(), new ArrayList<Attribute>());
+        AddMsg addMsg = addMsg(csnGen);
         broker1.publish(addMsg);
 
         // - Modify
-        Attribute attr1 = Attributes.create("description", "new value");
-        List<Modification> mods =
-            Arrays.asList(new Modification(ModificationType.REPLACE, attr1));
-        ModifyMsg modMsg = new ModifyMsg(csnGen.newCSN(), EXAMPLE_DN, mods, "fakeuniqueid");
+        ModifyMsg modMsg = modMsg(csnGen);
         broker1.publish(modMsg);
 
         // - ModifyDN
-        ModifyDNOperationBasis op = new ModifyDNOperationBasis(connection, 1, 1, null,
-            EXAMPLE_DN, RDN.decode("o=example2"), true, null);
-        op.setAttachment(SYNCHROCONTEXT, new ModifyDnContext(csnGen.newCSN(), "uniqueid", "newparentId"));
-        LocalBackendModifyDNOperation localOp = new LocalBackendModifyDNOperation(op);
-        ModifyDNMsg modDNMsg = new ModifyDNMsg(localOp);
+        ModifyDNMsg modDNMsg = modDNMsg(csnGen);
         broker1.publish(modDNMsg);
 
-        SortedSet<String> servers = new TreeSet<>();
-        servers.add("localhost:"+changelogPorts[0]);
-        ReplServerFakeConfiguration conf = new ReplServerFakeConfiguration(
-            changelogPorts[1], null, 0, changelogIds[1], 0, 100, null);
-        changelogs[1] = new ReplicationServer(conf);
+        changelogs[1] = newReplicationServer(changelogPorts, changelogIds, 1);
 
         // Connect broker 2 to changelog2
         broker2 = openReplicationSession(TEST_ROOT_DN,
@@ -832,6 +773,39 @@
     }
   }
 
+  private ReplicationServer newReplicationServer(int[] changelogPorts, int[] changelogIds, int i)
+      throws ConfigException
+  {
+    SortedSet<String> servers = newTreeSet("localhost:" + ((i == 0) ? changelogPorts[1] : changelogPorts[0]));
+    ReplServerFakeConfiguration conf = new ReplServerFakeConfiguration(
+        changelogPorts[i], "replicationServerTestChangelogChainingDb"+i,
+        0, changelogIds[i], 0, 100, servers);
+    return new ReplicationServer(conf);
+  }
+
+  private ModifyDNMsg modDNMsg(CSNGenerator csnGen) throws DirectoryException
+  {
+    ModifyDNOperationBasis op = new ModifyDNOperationBasis(
+        connection, 1, 1, null, EXAMPLE_DN, RDN.decode("o=example2"), true, null);
+    op.setAttachment(SYNCHROCONTEXT, new ModifyDnContext(csnGen.newCSN(), "uniqueid", "newparentId"));
+    LocalBackendModifyDNOperation localOp = new LocalBackendModifyDNOperation(op);
+    return new ModifyDNMsg(localOp);
+  }
+
+  private AddMsg addMsg(CSNGenerator csnGen) throws Exception
+  {
+    String user1entryUUID = "33333333-3333-3333-3333-333333333333";
+    String baseUUID  = "22222222-2222-2222-2222-222222222222";
+
+    Entry entry = TestCaseUtils.entryFromLdifString(
+        "dn: o=example," + TEST_ROOT_DN_STRING + "\n"
+        + "objectClass: top\n"
+        + "objectClass: domain\n"
+        + "entryUUID: " + user1entryUUID + "\n");
+    return new AddMsg(csnGen.newCSN(), EXAMPLE_DN, user1entryUUID, baseUUID,
+        entry.getObjectClassAttribute(), entry.getAttributes(), new ArrayList<Attribute>());
+  }
+
   private List<ReplicationMsg> receiveReplicationMsgs(ReplicationBroker broker2, int nbMessagesExpected)
   {
     List<ReplicationMsg> msgs = new ArrayList<>(nbMessagesExpected);
@@ -860,10 +834,7 @@
     return msgs;
   }
 
-  /**
-   * Test that the Replication sends back correctly WindowsUpdate
-   * when we send a WindowProbeMsg.
-   */
+  /** Test that the Replication sends back correctly WindowsUpdate when we send a WindowProbeMsg. */
   @Test(enabled = true)
   public void windowProbeTest() throws Exception
   {
@@ -967,9 +938,7 @@
     paranoiaCheck();
   }
 
-  /**
-   * After the tests stop the replicationServer.
-   */
+  /** After the tests stop the replicationServer. */
   private void shutdown() throws Exception
   {
     TestCaseUtils.dsconfig(
@@ -992,16 +961,13 @@
     private Exception exc;
     private String errDetails;
 
-    /**
-     * Creates a new Stress Test Reader.
-     */
+    /** Creates a new Stress Test Reader. */
     public BrokerReader(ReplicationBroker broker, int numMsgExpected)
     {
       this.broker = broker;
       this.numMsgExpected = numMsgExpected;
     }
 
-    /** {@inheritDoc} */
     @Override
     public void run()
     {
@@ -1065,16 +1031,12 @@
       this.gen = gen;
     }
 
-    /** {@inheritDoc} */
     @Override
     public void run()
     {
       debugInfo("writer " + broker.getServerId() + " starts to produce " + count);
       int ccount = count;
-      /*
-       * Simple loop creating changes and sending them
-       * to the replicationServer.
-       */
+      /* Simple loop creating changes and sending them to the replicationServer. */
       while (count>0)
       {
         count--;
@@ -1138,9 +1100,8 @@
          {
            servers.add("localhost:" + changelogPorts[1]);
          }
-         ReplServerFakeConfiguration conf =
-          new ReplServerFakeConfiguration(changelogPorts[i], "replicationServerTestReplicationServerConnectedDb" + i,
-                                          0, changelogIds[i], 0, 100, servers);
+         ReplServerFakeConfiguration conf = newReplServerConfiguration(changelogPorts, changelogIds, servers, i,
+             "replicationServerTestReplicationServerConnectedDb"+i);
          changelogs[i] = new ReplicationServer(conf);
        }
 
@@ -1153,24 +1114,13 @@
 
          // - Test messages between clients by publishing now
          CSNGenerator csnGen = new CSNGenerator(brokerIds[0], TimeThread.getTime());
-         String user1entryUUID = "33333333-3333-3333-3333-333333333333";
-         String baseUUID  = "22222222-2222-2222-2222-222222222222";
 
          // - Add
-         String lentry = "dn: o=example," + TEST_ROOT_DN_STRING + "\n"
-             + "objectClass: top\n" + "objectClass: domain\n"
-             + "entryUUID: " + user1entryUUID + "\n";
-         Entry entry = TestCaseUtils.entryFromLdifString(lentry);
-         AddMsg addMsg = new AddMsg(csnGen.newCSN(), EXAMPLE_DN,
-             user1entryUUID, baseUUID, entry.getObjectClassAttribute(),
-             entry.getAttributes(), new ArrayList<Attribute>());
+         AddMsg addMsg = addMsg(csnGen);
          broker1.publish(addMsg);
 
          // - Modify
-         Attribute attr1 = Attributes.create("description", "new value");
-      List<Modification> mods =
-          Arrays.asList(new Modification(ModificationType.REPLACE, attr1));
-         ModifyMsg modMsg = new ModifyMsg(csnGen.newCSN(), EXAMPLE_DN, mods, "fakeuniqueid");
+         ModifyMsg modMsg = modMsg(csnGen);
          broker1.publish(modMsg);
 
          // - Check msg received by broker, through changeLog2
@@ -1183,15 +1133,15 @@
          SortedSet<String> servers = new TreeSet<>();
          // Configure replicationServer[0] to be disconnected from ReplicationServer[1]
          ReplServerFakeConfiguration conf =
-          new ReplServerFakeConfiguration(changelogPorts[0], "changelogDb0", 0, changelogIds[0], 0, 100, servers);
-         changelogs[0].applyConfigurationChange(conf) ;
+             newReplServerConfiguration(changelogPorts, changelogIds, servers, 0, "changelogDb0");
+         changelogs[0].applyConfigurationChange(conf);
 
          // The link between RS[0] & RS[1] should be destroyed by the new configuration.
          // So we expect a timeout exception when calling receive on RS[1].
          // Send an update and check that RS[1] does not receive the message after the timeout
 
       // - Del
-      DeleteMsg delMsg = new DeleteMsg(EXAMPLE_DN, csnGen.newCSN(), user1entryUUID);
+      DeleteMsg delMsg = new DeleteMsg(EXAMPLE_DN, csnGen.newCSN(), addMsg.getEntryUUID());
       broker1.publish(delMsg);
       // Should receive some TopologyMsg messages for disconnection between the 2 RSs
       assertOnlyTopologyMsgsReceived(broker2);
@@ -1203,6 +1153,19 @@
     }
   }
 
+  private ReplServerFakeConfiguration newReplServerConfiguration(int[] changelogPorts, int[] changelogIds,
+      SortedSet<String> servers, int i, String dirName)
+  {
+    return new ReplServerFakeConfiguration(changelogPorts[i], dirName, 0, changelogIds[i], 0, 100, servers);
+  }
+
+
+  private ModifyMsg modMsg(CSNGenerator csnGen)
+  {
+    List<Modification> mods = Arrays.asList(new Modification(REPLACE, Attributes.create("description", "new value")));
+    return new ModifyMsg(csnGen.newCSN(), EXAMPLE_DN, mods, "fakeuniqueid");
+  }
+
   private void assertOnlyTopologyMsgsReceived(ReplicationBroker broker2)
   {
     try
@@ -1227,5 +1190,4 @@
       debugInfo("Ending replicationServerConnected");
     }
   }
-
 }

--
Gitblit v1.10.0