From 9ec005a5ccb24feedff497ff97075a0303af46fe Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 15 Oct 2013 15:11:03 +0000
Subject: [PATCH] GenerationIdTest.java: More code cleanup.
---
opends/tests/unit-tests-testng/src/server/org/opends/server/replication/GenerationIdTest.java | 209 +++++++++++++++++++++++----------------------------
1 files changed, 94 insertions(+), 115 deletions(-)
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 551aa35..6eb81d6 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
@@ -83,9 +83,9 @@
private static final int server1ID = 1;
private static final int server2ID = 2;
private static final int server3ID = 3;
- private static final int changelog1ID = 11;
- private static final int changelog2ID = 12;
- private static final int changelog3ID = 13;
+ private static final int replServerId1 = 11;
+ private static final int replServerId2 = 12;
+ private static final int replServerId3 = 13;
private DN baseDN;
private ReplicationBroker broker2;
@@ -96,8 +96,7 @@
private boolean emptyOldChanges = true;
private Entry taskInitRemoteS2;
private String[] updatedEntries;
-
- private static int[] replServerPort = new int[20];
+ private static int[] replServerPort;
/**
* A makeldif template used to create some test entries.
@@ -157,9 +156,6 @@
/**
* Set up the environment for performing the tests in this Class.
- *
- * @throws Exception
- * If the environment could not be set up.
*/
@Override
@BeforeClass
@@ -167,6 +163,7 @@
{
super.setUp();
+ replServerPort = TestCaseUtils.findFreePorts(3);
baseDN = DN.decode(baseDnStr);
updatedEntries = newLDIFEntries();
@@ -314,42 +311,40 @@
/**
* Creates a new replicationServer.
- * @param changelogId The serverID of the replicationServer to create.
+ * @param replServerId The serverID of the replicationServer to create.
* @param all Specifies whether to connect the created replication
* server to the other replication servers in the test.
* @return The new created replication server.
*/
- private ReplicationServer createReplicationServer(int changelogId,
+ private ReplicationServer createReplicationServer(int replServerId,
boolean all, String testCase) throws Exception
{
SortedSet<String> servers = new TreeSet<String>();
if (all)
{
- if (changelogId != changelog1ID)
- servers.add("localhost:" + getChangelogPort(changelog1ID));
- if (changelogId != changelog2ID)
- servers.add("localhost:" + getChangelogPort(changelog2ID));
- if (changelogId != changelog3ID)
- servers.add("localhost:" + getChangelogPort(changelog3ID));
+ if (replServerId != replServerId1)
+ servers.add("localhost:" + getRSPort(replServerId1));
+ if (replServerId != replServerId2)
+ servers.add("localhost:" + getRSPort(replServerId2));
+ if (replServerId != replServerId3)
+ servers.add("localhost:" + getRSPort(replServerId3));
}
- int chPort = getChangelogPort(changelogId);
- String chDir = "generationIdTest" + changelogId + testCase + "Db";
+ int rsPort = getRSPort(replServerId);
+ String rsDir = "generationIdTest" + replServerId + testCase + "Db";
ReplServerFakeConfiguration conf =
- new ReplServerFakeConfiguration(chPort, chDir, 0, changelogId, 0, 100, servers);
+ new ReplServerFakeConfiguration(rsPort, rsDir, 0, replServerId, 0, 100, servers);
ReplicationServer replicationServer = new ReplicationServer(conf);
Thread.sleep(1000);
-
return replicationServer;
}
/**
* Create a synchronized suffix in the current server providing the
- * replication Server ID.
- * @param changeLogID replication Server ID
+ * replication Server.
*/
- private void connectServer1ToChangelog(int changeLogID) throws Exception
+ private void connectServer1ToReplServer(ReplicationServer rs) throws Exception
{
- // Connect DS to the replicationServer
+ debugInfo("Connecting DS1 to replicate to RS" + getRSNumber(rs) + "(" + rs.getServerId() + ")");
{
// suffix synchronized
String synchroServerLdif =
@@ -358,8 +353,7 @@
+ "objectClass: ds-cfg-replication-domain\n"
+ "cn: " + testName + "\n"
+ "ds-cfg-base-dn: " + baseDnStr + "\n"
- + "ds-cfg-replication-server: localhost:"
- + getChangelogPort(changeLogID)+"\n"
+ + "ds-cfg-replication-server: localhost:" + rs.getReplicationPort() + "\n"
+ "ds-cfg-server-id: " + server1ID + "\n"
+ "ds-cfg-receive-status: true\n"
+ "ds-cfg-window-size: " + WINDOW_SIZE;
@@ -388,15 +382,35 @@
}
}
- /**
- * Disconnect DS from the replicationServer
- */
- private void disconnectFromReplServer(int changelogID) throws Exception
+ private String getRSNumber(ReplicationServer rs)
{
+ if (rs == replServer1)
+ {
+ return "1";
+ }
+ else if (rs == replServer2)
+ {
+ return "2";
+ }
+ else if (rs == replServer3)
+ {
+ return "3";
+ }
+ fail("Unknown RS");
+ return null;
+ }
+
+ /**
+ * Disconnect DS from the provided replicationServer.
+ *
+ * @see #connectServer1ToReplServer(ReplicationServer) should have been called previously
+ */
+ private void disconnectFromReplServer(ReplicationServer rs) throws Exception
+ {
+ debugInfo("Disconnect DS1 from RS" + getRSNumber(rs) + "(" + rs.getServerId() + ")");
{
// suffix synchronized
String synchroServerStringDN = "cn=" + testName + ", cn=domains," + SYNCHRO_PLUGIN_DN;
- // Must have called connectServer1ToChangelog previously
assertNotNull(synchroServerEntry);
DN synchroServerDN = DN.decode(synchroServerStringDN);
@@ -429,18 +443,14 @@
catch (DirectoryException e)
{
// success
- debugInfo("disconnectFromReplServer:" + changelogID, e);
+ debugInfo("disconnectFromReplServer:" + rs.getServerId(), e);
}
}
}
- private int getChangelogPort(int changelogID) throws Exception
+ private int getRSPort(int replServerId) throws Exception
{
- if (replServerPort[changelogID] == 0)
- {
- replServerPort[changelogID] = TestCaseUtils.findFreePort();
- }
- return replServerPort[changelogID];
+ return replServerPort[replServerId - 11];
}
private long readGenIdFromSuffixRootEntry() throws Exception
@@ -567,8 +577,6 @@
/**
* SingleRS tests basic features of generationID
* with one single Replication Server.
- *
- * @throws Exception
*/
@Test(enabled=false)
public void testSingleRS() throws Exception
@@ -586,7 +594,7 @@
long rsGenId;
long dsGenId;
- replServer1 = createReplicationServer(changelog1ID, false, testCase);
+ replServer1 = createReplicationServer(replServerId1, false, testCase);
// To search the replication server db later in these tests, we need
// to attach the search backend to the replication server just created.
@@ -597,8 +605,7 @@
//===========================================================
debugInfo(testCase + " ** TEST ** Empty backend");
- debugInfo(testCase + " Configuring DS1 to replicate to RS1(" + changelog1ID + ") on an empty backend");
- connectServer1ToChangelog(changelog1ID);
+ connectServer1ToReplServer(replServer1);
debugInfo(testCase + " Expect genId to be not retrievable from suffix root entry");
dsGenId = readGenIdFromSuffixRootEntry();
@@ -610,8 +617,7 @@
assertEquals(rsGenId, EMPTY_DN_GENID);
// Clean for next test
- debugInfo(testCase + " Unconfiguring DS1 to replicate to RS1(" + changelog1ID + ")");
- disconnectFromReplServer(changelog1ID);
+ disconnectFromReplServer(replServer1);
//===========================================================
@@ -620,8 +626,7 @@
debugInfo(testCase + " Adding test entries to DS");
addTestEntriesToDB(updatedEntries);
- debugInfo(testCase + " Configuring DS1 to replicate to RS1(" + changelog1ID + ") on a non empty backend");
- connectServer1ToChangelog(changelog1ID);
+ connectServer1ToReplServer(replServer1);
debugInfo(testCase + " Test that the generationId is written in the DB in the root entry on DS1");
dsGenId = readGenIdFromSuffixRootEntry();
@@ -636,12 +641,12 @@
debugInfo(testCase + " ** TEST ** DS2 connection to RS1 with bad genID");
broker2 = openReplicationSession(baseDN, server2ID, 100,
- getChangelogPort(changelog1ID), 1000, !emptyOldChanges, dsGenId+1);
+ replServer1.getReplicationPort(), 1000, !emptyOldChanges, dsGenId+1);
//===========================================================
debugInfo(testCase + " ** TEST ** DS3 connection to RS1 with good genID");
broker3 = openReplicationSession(baseDN, server3ID, 100,
- getChangelogPort(changelog1ID), 1000, !emptyOldChanges, dsGenId);
+ replServer1.getReplicationPort(), 1000, !emptyOldChanges, dsGenId);
//===========================================================
debugInfo(testCase + " ** TEST ** DS2 (bad genID) changes must be ignored.");
@@ -676,7 +681,7 @@
replServer1 = null;
debugInfo("Create again replServer1");
- replServer1 = createReplicationServer(changelog1ID, false, testCase);
+ replServer1 = createReplicationServer(replServerId1, false, testCase);
// To search the replication server db later in these tests, we need
// to attach the search backend to the replication server just created.
@@ -702,21 +707,21 @@
" spread a new gen ID on the topology, verify DS1 and RS1");
debugInfo("Create again broker2");
broker2 = openReplicationSession(baseDN,
- server2ID, 100, getChangelogPort(changelog1ID), 1000, emptyOldChanges, dsGenId);
+ server2ID, 100, replServer1.getReplicationPort(), 1000, emptyOldChanges, dsGenId);
assertTrue(broker2.isConnected(), "Broker2 failed to connect to replication server");
debugInfo("Create again broker3");
broker3 = openReplicationSession(baseDN,
- server3ID, 100, getChangelogPort(changelog1ID), 1000, emptyOldChanges, dsGenId);
+ server3ID, 100, replServer1.getReplicationPort(), 1000, emptyOldChanges, dsGenId);
assertTrue(broker3.isConnected(), "Broker3 failed to connect to replication server");
debugInfo("Launch on-line import on DS1");
long oldGenId = dsGenId;
dsGenId=-1;
- disconnectFromReplServer(changelog1ID);
+ disconnectFromReplServer(replServer1);
performLdifImport();
- connectServer1ToChangelog(changelog1ID);
+ connectServer1ToReplServer(replServer1);
debugInfo("Create Reset task on DS1 to propagate the new gen ID as the reference");
executeTask(createSetGenerationIdTask(dsGenId, ""), 20000);
@@ -796,12 +801,12 @@
// Simulates the broker restart at the end of the import
broker2.stop();
broker2 = openReplicationSession(baseDN,
- server2ID, 100, getChangelogPort(changelog1ID), 1000, emptyOldChanges, dsGenId);
+ server2ID, 100, replServer1.getReplicationPort(), 1000, emptyOldChanges, dsGenId);
// Simulates the broker restart at the end of the import
broker3.stop();
broker3 = openReplicationSession(baseDN,
- server3ID, 100, getChangelogPort(changelog1ID), 1000, emptyOldChanges, dsGenId);
+ server3ID, 100, replServer1.getReplicationPort(), 1000, emptyOldChanges, dsGenId);
debugInfo("Adding reset task to DS1");
executeTask(createSetGenerationIdTask(null, ""), 20000);
@@ -844,7 +849,7 @@
debugInfo(testCase + " ** TEST ** General cleaning");
debugInfo("Disconnect DS from replServer1 (required in order to DEL entries).");
- disconnectFromReplServer(changelog1ID);
+ disconnectFromReplServer(replServer1);
debugInfo("Successfully ending " + testCase);
} finally
@@ -902,18 +907,14 @@
TestCaseUtils.initializeTestBackend(false);
debugInfo("Creating 3 RSs");
- replServer1 = createReplicationServer(changelog1ID, true, testCase);
- replServer2 = createReplicationServer(changelog2ID, true, testCase);
- replServer3 = createReplicationServer(changelog3ID, true, testCase);
+ replServer1 = createReplicationServer(replServerId1, true, testCase);
+ replServer2 = createReplicationServer(replServerId2, true, testCase);
+ replServer3 = createReplicationServer(replServerId3, true, testCase);
- debugInfo("Connecting DS to replServer1");
- connectServer1ToChangelog(changelog1ID);
-
+ connectServer1ToReplServer(replServer1);
debugInfo("Expect genId are set in all replServers.");
waitForStableGenerationId(EMPTY_DN_GENID);
-
- debugInfo("Disconnect DS from replServer1.");
- disconnectFromReplServer(changelog1ID);
+ disconnectFromReplServer(replServer1);
debugInfo("Expect genIds to be resetted in all servers to -1 as no more DS in topo - after 10 sec");
waitForStableGenerationId(-1);
@@ -921,8 +922,7 @@
debugInfo("Add entries to DS");
addTestEntriesToDB(updatedEntries);
- debugInfo("Connecting DS to replServer2");
- connectServer1ToChangelog(changelog2ID);
+ connectServer1ToReplServer(replServer2);
debugInfo("Expect genIds to be set in all servers based on the added entries.");
genId = readGenIdFromSuffixRootEntry();
@@ -931,14 +931,13 @@
debugInfo("Connecting broker2 to replServer3 with a good genId");
broker2 = openReplicationSession(baseDN, server2ID, 100,
- getChangelogPort(changelog3ID), 1000, !emptyOldChanges, genId);
+ replServer3.getReplicationPort(), 1000, !emptyOldChanges, genId);
Thread.sleep(1000);
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);
+ disconnectFromReplServer(replServer1);
debugInfo("Verifying that all replservers genIds have been reset.");
@@ -948,15 +947,14 @@
debugInfo("Connecting broker3 to replServer1 with a bad genId");
long badGenId = 1;
broker3 = openReplicationSession(baseDN, server3ID, 100,
- getChangelogPort(changelog1ID), 1000, !emptyOldChanges, badGenId);
+ replServer1.getReplicationPort(), 1000, !emptyOldChanges, badGenId);
Thread.sleep(1000);
debugInfo("Expecting that broker3 is in bad gen id since it has a bad genId");
assertTrue(isDegradedDueToGenerationId(replServer1, server3ID));
assertEquals(countUpdatedEntriesInDb(), updatedEntries.length);
- debugInfo("Connecting DS to replServer1.");
- connectServer1ToChangelog(changelog1ID);
+ connectServer1ToReplServer(replServer1);
debugInfo("Adding reset task to DS.");
@@ -964,28 +962,16 @@
debugInfo("Verifying that all replservers genIds have been reset.");
genId = readGenIdFromSuffixRootEntry();
- assertGenIdEquals(genId, "");
+ assertGenIdEquals(genId);
debugInfo("Adding reset task to DS." + genId);
executeTask(createSetGenerationIdTask(null, "ds-task-reset-generation-id-new-value: -1"), 20000);
debugInfo("Verifying that all replservers genIds have been reset.");
- int waitRes = 0;
- while(waitRes<100)
- {
- readGenIdFromSuffixRootEntry();
- if (replServer1.getGenerationId(baseDN) == -1
- && replServer2.getGenerationId(baseDN) == -1
- && replServer3.getGenerationId(baseDN) == -1)
- break;
- waitRes++;
- Thread.sleep(100);
- }
- assertGenIdEquals(-1, "test" + i);
+ waitForStableGenerationId(-1);
- debugInfo(
- "Disconnect DS from replServer1 (required in order to DEL entries).");
- disconnectFromReplServer(changelog1ID);
+ debugInfo("Disconnect DS from replServer1 (required in order to DEL entries).");
+ disconnectFromReplServer(replServer1);
debugInfo("Successfully ending " + testCase);
} finally
@@ -1006,14 +992,14 @@
wait++;
Thread.sleep(100);
}
- assertGenIdEquals(expectedGenId, "");
+ assertGenIdEquals(expectedGenId);
}
- private void assertGenIdEquals(long expectedGenId, String reason)
+ private void assertGenIdEquals(long expectedGenId)
{
- assertEquals(replServer1.getGenerationId(baseDN), expectedGenId, " in replServer1: " + reason);
- assertEquals(replServer2.getGenerationId(baseDN), expectedGenId, " in replServer2: " + reason);
- assertEquals(replServer3.getGenerationId(baseDN), expectedGenId, " in replServer3: " + reason);
+ assertEquals(replServer1.getGenerationId(baseDN), expectedGenId, " in replServer1");
+ assertEquals(replServer2.getGenerationId(baseDN), expectedGenId, " in replServer2");
+ assertEquals(replServer3.getGenerationId(baseDN), expectedGenId, " in replServer3");
}
private boolean isDegradedDueToGenerationId(ReplicationServer rs, int serverId)
@@ -1036,7 +1022,7 @@
super.cleanRealEntries();
- Arrays.fill(replServerPort, 0);
+ replServerPort = TestCaseUtils.findFreePorts(3);
debugInfo("Clearing DJ backend");
TestCaseUtils.initializeTestBackend(false);
@@ -1045,7 +1031,6 @@
/**
* Test generationID saving when the root entry does not exist
* at the moment when the replication is enabled.
- * @throws Exception
*/
@Test(enabled=false, groups="slow")
public void testServerStop() throws Exception
@@ -1060,27 +1045,21 @@
try
{
- replServer1 = createReplicationServer(changelog1ID, false, testCase);
+ replServer1 = createReplicationServer(replServerId1, false, testCase);
/*
* Test : empty replicated backend
* Check : nothing is broken - no generationId generated
*/
-
- // Connect DS to RS with no data
- // Read generationId - should be not retrievable since no entry
- debugInfo(testCase + " Connecting DS1 to replServer1(" + changelog1ID + ")");
- connectServer1ToChangelog(changelog1ID);
-
- debugInfo(testCase + " Expect genId attribute to be not retrievable");
- assertEquals(readGenIdFromSuffixRootEntry(), -1);
+ connectServer1ToReplServer(replServer1);
+ assertEquals(readGenIdFromSuffixRootEntry(), -1,
+ "genId attribute should not be retrievable since there are NO entry in the backend");
addTestEntriesToDB(updatedEntries);
+ assertEquals(readGenIdFromSuffixRootEntry(), EMPTY_DN_GENID,
+ "genId attribute should be retrievable since there IS one entry in the backend");
- debugInfo(testCase + " Expect genId attribute to be retrievable");
- assertEquals(readGenIdFromSuffixRootEntry(), EMPTY_DN_GENID);
-
- disconnectFromReplServer(changelog1ID);
+ disconnectFromReplServer(replServer1);
}
finally
{
@@ -1098,13 +1077,13 @@
{
String testCase = "testLoop";
debugInfo("Starting "+ testCase + " debugEnabled:" + debugEnabled());
- long rgenId;
+ long rsGenId;
// Special test were we want to test with an empty backend. So free it
// for this special test.
TestCaseUtils.initializeTestBackend(false);
- replServer1 = createReplicationServer(changelog1ID, false, testCase);
+ replServer1 = createReplicationServer(replServerId1, false, testCase);
clearChangelogDB(replServer1);
ReplicationBroker broker = null;
@@ -1114,11 +1093,11 @@
{
long generationId = 1000+i;
broker = openReplicationSession(baseDN, server2ID, 100,
- getChangelogPort(changelog1ID), 1000, !emptyOldChanges, generationId);
+ replServer1.getReplicationPort(), 1000, !emptyOldChanges, generationId);
debugInfo(testCase + " Expect genId to be set in memory on the replication " +
" server side even if not wrote on disk/db since no change occurred.");
- rgenId = replServer1.getGenerationId(baseDN);
- assertEquals(rgenId, generationId);
+ rsGenId = replServer1.getGenerationId(baseDN);
+ assertEquals(rsGenId, generationId);
broker.stop();
broker = null;
Thread.sleep(2000); // Let time to RS to clear info about previous connection
--
Gitblit v1.10.0