From 4102cd7949dacd9df6be6dc59d268c465bcd8abc Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 30 Sep 2013 09:12:26 +0000
Subject: [PATCH] Various little changes.
---
opendj-sdk/opends/src/server/org/opends/server/replication/plugin/PendingChange.java | 11
opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java | 17 ++
opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java | 2
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/common/CSNGeneratorTest.java | 21 ++
opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/api/ChangelogDB.java | 5
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/DbHandlerTest.java | 235 +++++++++++++++-----------------
opendj-sdk/opends/src/server/org/opends/server/replication/common/CSNGenerator.java | 16 ++
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java | 8
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/DraftCNDbHandlerTest.java | 61 +++-----
9 files changed, 193 insertions(+), 183 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/common/CSNGenerator.java b/opendj-sdk/opends/src/server/org/opends/server/replication/common/CSNGenerator.java
index d7d0e27..84bd933 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/common/CSNGenerator.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/common/CSNGenerator.java
@@ -106,7 +106,23 @@
}
return new CSN(myTime, mySeqnum, serverId);
+ }
+ /**
+ * Generate an array of new {@link CSN}s.
+ *
+ * @param number
+ * the total number of {@link CSN}s to generate
+ * @return the array of generated {@link CSN}s
+ */
+ public CSN[] newCSNs(int number)
+ {
+ final CSN[] csns = new CSN[number];
+ for (int i = 0; i < number; i++)
+ {
+ csns[i] = newCSN();
+ }
+ return csns;
}
/**
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/plugin/PendingChange.java b/opendj-sdk/opends/src/server/org/opends/server/replication/plugin/PendingChange.java
index 9d9503a..9e22ecd 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/plugin/PendingChange.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/plugin/PendingChange.java
@@ -125,19 +125,18 @@
}
/**
- * Add the given ChangeNumber in the list of dependencies of this
- * PendingChange.
+ * Add the given CSN to the list of dependencies of this PendingChange.
*
- * @param changeNumber The ChangeNumber to add in the list of dependencies
- * of this PendingChange.
+ * @param csn
+ * The CSN to add to the list of dependencies of this PendingChange.
*/
- public void addDependency(CSN changeNumber)
+ public void addDependency(CSN csn)
{
if (dependencyState == null)
{
dependencyState = new ServerState();
}
- dependencyState.update(changeNumber);
+ dependencyState.update(csn);
}
/**
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
index d2fbc45..4dc9c43 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
@@ -1739,7 +1739,7 @@
*
* @return the changelogDB.
*/
- ChangelogDB getChangelogDB()
+ public ChangelogDB getChangelogDB()
{
return this.changelogDB;
}
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/api/ChangelogDB.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/api/ChangelogDB.java
index e1dc552..28ee57e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/api/ChangelogDB.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/api/ChangelogDB.java
@@ -227,7 +227,10 @@
/**
* Returns the {@link CSN} situated immediately after the specified
- * {@link CSN} for the specified serverId and replication domain.
+ * {@link CSN} for the specified serverId and replication domain according to
+ * the order specified by {@link CSN#compareTo(CSN)}. If an Exception occurs
+ * in this method, then it returns the oldest possible CSN for the provided
+ * serverId.
*
* @param baseDN
* the replication domain baseDN
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java b/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java
index 742dd06..a401c83 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java
@@ -101,6 +101,7 @@
@Override
public void close()
{
+ // empty
}
};
@@ -177,7 +178,21 @@
getOrCreateDbHandler(baseDN, serverId, rs);
}
- private Pair<DbHandler, Boolean> getOrCreateDbHandler(DN baseDN,
+ /**
+ * Returns a DbHandler, possibly creating it.
+ *
+ * @param baseDN
+ * the baseDN for which to create a DbHandler
+ * @param serverId
+ * the baseserverId for which to create a DbHandler
+ * @param rs
+ * the ReplicationServer
+ * @return a Pair with the DbHandler and a a boolean indicating if it has been
+ * created
+ * @throws ChangelogException
+ * if a problem occurred with the database
+ */
+ Pair<DbHandler, Boolean> getOrCreateDbHandler(DN baseDN,
int serverId, ReplicationServer rs) throws ChangelogException
{
synchronized (sourceDbHandlers)
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/common/CSNGeneratorTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/common/CSNGeneratorTest.java
index 3b005e7..b6fce32 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/common/CSNGeneratorTest.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/common/CSNGeneratorTest.java
@@ -43,14 +43,12 @@
public void adjustTest()
{
CSNGenerator generator = new CSNGenerator(5, TimeThread.getTime());
-
CSN csn = generator.newCSN();
CSN csn1 = new CSN(csn.getTime() + 5000, csn.getSeqnum(), 6);
generator.adjust(csn1);
CSN csn2 = generator.newCSN();
-
assertTrue(csn2.compareTo(csn1) > 0,
"CSNGenerator generated an earlier CSN after calling the adjust method.");
}
@@ -59,14 +57,12 @@
public void adjustSameMilliTest()
{
CSNGenerator generator = new CSNGenerator(5, TimeThread.getTime());
-
CSN csn = generator.newCSN();
CSN csn1 = new CSN(csn.getTime(), csn.getSeqnum() + 10, 6);
generator.adjust(csn1);
CSN csn2 = generator.newCSN();
-
assertTrue(csn2.compareTo(csn1) > 0,
"CSNGenerator generated an earlier CSN after calling the adjust method.");
}
@@ -85,7 +81,22 @@
CSNGenerator generator = new CSNGenerator(5, state);
CSN csn2 = generator.newCSN();
- assertTrue(csn2.getSeqnum() == 0);
+ assertEquals(csn2.getSeqnum(), 0);
assertTrue(csn2.getTime() > csn1.getTime());
}
+
+ @Test
+ public void newCSNs()
+ {
+ CSNGenerator generator = new CSNGenerator(5, TimeThread.getTime());
+ CSN[] csns = generator.newCSNs(5);
+ assertNotNull(csns);
+ for (int i = 0; i + 1 < csns.length; i++)
+ {
+ assertEquals(csns[i + 1].getTime(), csns[i].getTime());
+ assertEquals(csns[i + 1].getSeqnum(), csns[i].getSeqnum() + 1);
+ assertEquals(csns[i + 1].getServerId(), csns[i].getServerId());
+ assertTrue(csns[i + 1].compareTo(csns[0]) > 0);
+ }
+ }
}
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java
index a3c3552..0c125b9 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java
@@ -2572,12 +2572,10 @@
evaluateSearchParameters(baseDN, 8, 8, "(changenumber=8)");
//
- CSNGenerator gen = new CSNGenerator( 1, 0);
- CSN changeNumber1 = gen.newCSN();
+ CSN csn = new CSNGenerator(1, 0).newCSN();
final StartECLSessionMsg startCLmsg =
- evaluateSearchParameters(baseDN, -1, -1,
- "(replicationcsn=" + changeNumber1 + ")");
- assertEquals(startCLmsg.getCSN(), changeNumber1);
+ evaluateSearchParameters(baseDN, -1, -1, "(replicationcsn=" + csn + ")");
+ assertEquals(startCLmsg.getCSN(), csn);
// Use change number as base object.
baseDN = DN.decode("changeNumber=8,cn=changelog");
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/DbHandlerTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/DbHandlerTest.java
index 7e5e55e..2b76a41 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/DbHandlerTest.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/DbHandlerTest.java
@@ -82,33 +82,19 @@
@Test(enabled=true)
void testDbHandlerTrim() throws Exception
{
- File testRoot = null;
ReplicationServer replicationServer = null;
- ReplicationDbEnv dbEnv = null;
- DbHandler handler = null;
try
{
TestCaseUtils.startServer();
+ replicationServer = configureReplicationServer(100, 5000);
+ DbHandler handler = newDbHandler(replicationServer);
- replicationServer = configureReplicationServer(100);
+ CSN[] csns = new CSNGenerator(1, 0).newCSNs(5);
- // create or clean a directory for the dbHandler
- testRoot = createCleanDir();
-
- dbEnv = new ReplicationDbEnv(testRoot.getPath(), replicationServer);
- handler = new DbHandler(1, TEST_ROOT_DN, replicationServer, dbEnv, 5000);
-
- CSNGenerator gen = new CSNGenerator( 1, 0);
- CSN csn1 = gen.newCSN();
- CSN csn2 = gen.newCSN();
- CSN csn3 = gen.newCSN();
- CSN csn4 = gen.newCSN();
- CSN csn5 = gen.newCSN();
-
- handler.add(new DeleteMsg(TEST_ROOT_DN, csn1, "uid"));
- handler.add(new DeleteMsg(TEST_ROOT_DN, csn2, "uid"));
- handler.add(new DeleteMsg(TEST_ROOT_DN, csn3, "uid"));
- DeleteMsg update4 = new DeleteMsg(TEST_ROOT_DN, csn4, "uid");
+ handler.add(new DeleteMsg(TEST_ROOT_DN, csns[0], "uid"));
+ handler.add(new DeleteMsg(TEST_ROOT_DN, csns[1], "uid"));
+ handler.add(new DeleteMsg(TEST_ROOT_DN, csns[2], "uid"));
+ DeleteMsg update4 = new DeleteMsg(TEST_ROOT_DN, csns[3], "uid");
//--
// Iterator tests with memory queue only populated
@@ -116,8 +102,8 @@
// verify that memory queue is populated
assertEquals(handler.getQueueSize(),3);
- assertFoundInOrder(handler, csn1, csn2, csn3);
- assertNotFound(handler, csn5);
+ assertFoundInOrder(handler, csns[0], csns[1], csns[2]);
+ assertNotFound(handler, csns[4]);
//--
// Iterator tests with db only populated
@@ -126,26 +112,25 @@
// verify that memory queue is empty (all changes flushed in the db)
assertEquals(handler.getQueueSize(),0);
- assertFoundInOrder(handler, csn1, csn2, csn3);
- assertNotFound(handler, csn5);
+ assertFoundInOrder(handler, csns[0], csns[1], csns[2]);
+ assertNotFound(handler, csns[4]);
- // Test first and last
- assertEquals(csn1, handler.getOldestCSN());
- assertEquals(csn3, handler.getNewestCSN());
+ assertEquals(handler.getOldestCSN(), csns[0]);
+ assertEquals(handler.getNewestCSN(), csns[2]);
//--
- // Cursor tests with db and memory queue populated
+ // Cursor tests with db and memory queue populated
// all changes in the db - add one in the memory queue
handler.add(update4);
// verify memory queue contains this one
assertEquals(handler.getQueueSize(),1);
- assertFoundInOrder(handler, csn1, csn2, csn3, csn4);
+ assertFoundInOrder(handler, csns[0], csns[1], csns[2], csns[3]);
// Test cursor from existing CSN at the limit between queue and db
- assertFoundInOrder(handler, csn3, csn4);
- assertFoundInOrder(handler, csn4);
- assertNotFound(handler, csn5);
+ assertFoundInOrder(handler, csns[2], csns[3]);
+ assertFoundInOrder(handler, csns[3]);
+ assertNotFound(handler, csns[4]);
handler.setPurgeDelay(1);
@@ -155,7 +140,7 @@
{
CSN oldestCSN = handler.getOldestCSN();
CSN newestCSN = handler.getNewestCSN();
- if (!oldestCSN.equals(csn4) || !newestCSN.equals(csn4))
+ if (!oldestCSN.equals(csns[3]) || !newestCSN.equals(csns[3]))
{
TestCaseUtils.sleep(100);
} else
@@ -164,27 +149,28 @@
}
}
// FIXME should add an assert here
- } finally
+ }
+ finally
{
- if (handler != null)
- handler.shutdown();
- if (dbEnv != null)
- dbEnv.shutdown();
- if (replicationServer != null)
- replicationServer.remove();
- TestCaseUtils.deleteDirectory(testRoot);
+ remove(replicationServer);
}
}
- private ReplicationServer configureReplicationServer(int windowSize)
+ private ReplicationServer configureReplicationServer(int windowSize, int queueSize)
throws IOException, ConfigException
{
final int changelogPort = findFreePort();
final ReplicationServerCfg conf =
- new ReplServerFakeConfiguration(changelogPort, null, 0, 2, 0, windowSize, null);
+ new ReplServerFakeConfiguration(changelogPort, null, 0, 2, queueSize, windowSize, null);
return new ReplicationServer(conf);
}
+ private DbHandler newDbHandler(ReplicationServer replicationServer) throws Exception
+ {
+ JEChangelogDB changelogDB = (JEChangelogDB) replicationServer.getChangelogDB();
+ return changelogDB.getOrCreateDbHandler(TEST_ROOT_DN, 1, replicationServer).getFirst();
+ }
+
private File createCleanDir() throws IOException
{
String buildRoot = System.getProperty(TestCaseUtils.PROPERTY_BUILD_ROOT);
@@ -210,16 +196,16 @@
assertNull(cursor.getChange());
for (int i = 1; i < csns.length; i++)
{
- assertTrue(cursor.next());
+ assertTrue(cursor.next());
assertEquals(cursor.getChange().getCSN(), csns[i]);
}
- assertFalse(cursor.next());
+ assertFalse(cursor.next());
assertNull(cursor.getChange(), "Actual change=" + cursor.getChange()
+ ", Expected null");
}
finally
{
- StaticUtils.close(cursor);
+ StaticUtils.close(cursor);
}
}
@@ -249,34 +235,23 @@
@Test(enabled=true)
void testDbHandlerClear() throws Exception
{
- File testRoot = null;
ReplicationServer replicationServer = null;
- ReplicationDbEnv dbEnv = null;
- DbHandler handler = null;
try
{
TestCaseUtils.startServer();
+ replicationServer = configureReplicationServer(100, 5000);
+ DbHandler handler = newDbHandler(replicationServer);
- replicationServer = configureReplicationServer(100);
-
- testRoot = createCleanDir();
- dbEnv = new ReplicationDbEnv(testRoot.getPath(), replicationServer);
- handler = new DbHandler(1, TEST_ROOT_DN, replicationServer, dbEnv, 5000);
-
- // Creates changes added to the dbHandler
- CSNGenerator gen = new CSNGenerator( 1, 0);
- CSN csn1 = gen.newCSN();
- CSN csn2 = gen.newCSN();
- CSN csn3 = gen.newCSN();
+ CSN[] csns = new CSNGenerator(1, 0).newCSNs(3);
// Add the changes
- handler.add(new DeleteMsg(TEST_ROOT_DN, csn1, "uid"));
- handler.add(new DeleteMsg(TEST_ROOT_DN, csn2, "uid"));
- handler.add(new DeleteMsg(TEST_ROOT_DN, csn3, "uid"));
+ handler.add(new DeleteMsg(TEST_ROOT_DN, csns[0], "uid"));
+ handler.add(new DeleteMsg(TEST_ROOT_DN, csns[1], "uid"));
+ handler.add(new DeleteMsg(TEST_ROOT_DN, csns[2], "uid"));
// Check they are here
- assertEquals(csn1, handler.getOldestCSN());
- assertEquals(csn3, handler.getNewestCSN());
+ assertEquals(csns[0], handler.getOldestCSN());
+ assertEquals(csns[2], handler.getNewestCSN());
// Clear ...
handler.clear();
@@ -285,40 +260,69 @@
assertEquals(null, handler.getOldestCSN());
assertEquals(null, handler.getNewestCSN());
- } finally
+ }
+ finally
{
- if (handler != null)
- handler.shutdown();
- if (dbEnv != null)
- dbEnv.shutdown();
- if (replicationServer != null)
- replicationServer.remove();
- TestCaseUtils.deleteDirectory(testRoot);
+ remove(replicationServer);
+ }
+ }
+
+ @Test
+ public void testGenerateCursorFrom() throws Exception
+ {
+ ReplicationServer replicationServer = null;
+ ReplicaDBCursor cursor = null;
+ try
+ {
+ TestCaseUtils.startServer();
+ replicationServer = configureReplicationServer(100000, 10);
+ DbHandler handler = newDbHandler(replicationServer);
+
+ CSN[] csns = new CSNGenerator(1, System.currentTimeMillis()).newCSNs(6);
+ for (int i = 0; i < 5; i++)
+ {
+ if (i != 3)
+ {
+ handler.add(new DeleteMsg(TEST_ROOT_DN, csns[i], "uid"));
+ }
+ }
+ handler.flush();
+
+ cursor = handler.generateCursorFrom(csns[0]);
+ assertTrue(cursor.next());
+ assertEquals(cursor.getChange().getCSN(), csns[1]);
+ StaticUtils.close(cursor);
+
+ cursor = handler.generateCursorFrom(csns[3]);
+ assertTrue(cursor.next());
+ assertEquals(cursor.getChange().getCSN(), csns[4]);
+ StaticUtils.close(cursor);
+
+ cursor = handler.generateCursorFrom(csns[4]);
+ assertFalse(cursor.next());
+ assertNull(cursor.getChange());
+ }
+ finally
+ {
+ StaticUtils.close(cursor);
+ remove(replicationServer);
}
}
@Test
public void testGetCountNoCounterRecords() throws Exception
{
- File testRoot = null;
ReplicationServer replicationServer = null;
- ReplicationDbEnv dbEnv = null;
- DbHandler handler = null;
try
{
TestCaseUtils.startServer();
- replicationServer = configureReplicationServer(100000);
+ replicationServer = configureReplicationServer(100000, 10);
+ DbHandler handler = newDbHandler(replicationServer);
- testRoot = createCleanDir();
- dbEnv = new ReplicationDbEnv(testRoot.getPath(), replicationServer);
- handler = new DbHandler(1, TEST_ROOT_DN, replicationServer, dbEnv, 10);
-
- CSNGenerator csnGen = new CSNGenerator(1, System.currentTimeMillis());
- CSN[] csns = new CSN[5];
- for (int i = 0; i < 5; i++)
+ CSN[] csns = new CSNGenerator(1, System.currentTimeMillis()).newCSNs(5);
+ for (CSN csn : csns)
{
- csns[i] = csnGen.newCSN();
- handler.add(new DeleteMsg(TEST_ROOT_DN, csns[i], "uid"));
+ handler.add(new DeleteMsg(TEST_ROOT_DN, csn, "uid"));
}
handler.flush();
@@ -331,13 +335,7 @@
}
finally
{
- if (handler != null)
- handler.shutdown();
- if (dbEnv != null)
- dbEnv.shutdown();
- if (replicationServer != null)
- replicationServer.remove();
- TestCaseUtils.deleteDirectory(testRoot);
+ remove(replicationServer);
}
}
@@ -394,7 +392,7 @@
try
{
TestCaseUtils.startServer();
- replicationServer = configureReplicationServer(100000);
+ replicationServer = configureReplicationServer(100000, 10);
testRoot = createCleanDir();
dbEnv = new ReplicationDbEnv(testRoot.getPath(), replicationServer);
@@ -408,17 +406,13 @@
for (int i=1; i<=max; i++)
{
csns[i] = new CSN(now + i, mySeqnum, 1);
+ handler.add(new DeleteMsg(TEST_ROOT_DN, csns[i], "uid"));
mySeqnum+=2;
- DeleteMsg update1 = new DeleteMsg(TEST_ROOT_DN, csns[i], "uid");
- handler.add(update1);
}
handler.flush();
- // Test first and last
- CSN oldestCSN = handler.getOldestCSN();
- assertEquals(oldestCSN, csns[1], "Wrong oldest CSN");
- CSN newestCSN = handler.getNewestCSN();
- assertEquals(newestCSN, csns[max], "Wrong newest CSN");
+ assertEquals(handler.getOldestCSN(), csns[1], "Wrong oldest CSN");
+ assertEquals(handler.getNewestCSN(), csns[max], "Wrong newest CSN");
// Test count in different subcases trying to handle all special cases
// regarding the 'counter' record and 'count' algorithm
@@ -445,15 +439,14 @@
assertCount(tn, handler, csns[(counterWindow + 4)], csns[(counterWindow + 4)], 1,
"FROM counterWindow+4 TO counterWindow+4 ");
- // Now test with changes older than first or newer than last
- CSN olderThanFirst = null;
- CSN newerThanLast = new CSN(System.currentTimeMillis() + (2*(max+1)), 100, 1);
+ CSN olderThanOldest = null;
+ CSN newerThanNewest = new CSN(System.currentTimeMillis() + (2*(max+1)), 100, 1);
// Now we want to test with start and stop outside of the db
- assertCount(tn, handler, csns[1], newerThanLast, max,
+ assertCount(tn, handler, csns[1], newerThanNewest, max,
"FROM our first generated change TO now (> newest change in the db)");
- assertCount(tn, handler, olderThanFirst, newerThanLast, max,
+ assertCount(tn, handler, olderThanOldest, newerThanNewest, max,
"FROM null (start of time) TO now (> newest change in the db)");
// Now we want to test that after closing and reopening the db, the
@@ -465,32 +458,25 @@
handler = new DbHandler(1, TEST_ROOT_DN, replicationServer, dbEnv, 10);
handler.setCounterRecordWindowSize(counterWindow);
- // Test first and last
- oldestCSN = handler.getOldestCSN();
- assertEquals(oldestCSN, csns[1], "Wrong oldest CSN");
- newestCSN = handler.getNewestCSN();
- assertEquals(newestCSN, csns[max], "Wrong newest CSN");
+ assertEquals(handler.getOldestCSN(), csns[1], "Wrong oldest CSN");
+ assertEquals(handler.getNewestCSN(), csns[max], "Wrong newest CSN");
- assertCount(tn, handler, csns[1], newerThanLast, max,
+ assertCount(tn, handler, csns[1], newerThanNewest, max,
"FROM our first generated change TO now (> newest change in the db)");
// Populate the db with 'max' msg
for (int i=max+1; i<=(2*max); i++)
{
csns[i] = new CSN(now + i, mySeqnum, 1);
+ handler.add(new DeleteMsg(TEST_ROOT_DN, csns[i], "uid"));
mySeqnum+=2;
- DeleteMsg update1 = new DeleteMsg(TEST_ROOT_DN, csns[i], "uid");
- handler.add(update1);
}
handler.flush();
- // Test first and last
- oldestCSN = handler.getOldestCSN();
- assertEquals(oldestCSN, csns[1], "Wrong oldest CSN");
- newestCSN = handler.getNewestCSN();
- assertEquals(newestCSN, csns[2 * max], "Wrong newest CSN");
+ assertEquals(handler.getOldestCSN(), csns[1], "Wrong oldest CSN");
+ assertEquals(handler.getNewestCSN(), csns[2 * max], "Wrong newest CSN");
- assertCount(tn, handler, csns[1], newerThanLast, 2 * max,
+ assertCount(tn, handler, csns[1], newerThanNewest, 2 * max,
"FROM our first generated change TO now (> newest change in the db)");
//
@@ -500,7 +486,7 @@
long totalCount = handler.getCount(null, null);
debugInfo(tn, "FROM our first generated change TO now (> newest change in the db)" + " After purge, total count=" + totalCount);
- String testcase = "AFTER PURGE (first, last)=";
+ String testcase = "AFTER PURGE (oldest, newest)=";
debugInfo(tn, testcase + handler.getOldestCSN() + handler.getNewestCSN());
assertEquals(handler.getNewestCSN(), csns[2 * max], "Newest=");
@@ -515,7 +501,7 @@
{
expectedCnt = 0;
}
- assertCount(tn, handler, csns[1], newerThanLast, expectedCnt, "AFTER PURGE");
+ assertCount(tn, handler, csns[1], newerThanNewest, expectedCnt, "AFTER PURGE");
// Clear ...
debugInfo(tn,"clear:");
@@ -532,8 +518,7 @@
handler.shutdown();
if (dbEnv != null)
dbEnv.shutdown();
- if (replicationServer != null)
- replicationServer.remove();
+ remove(replicationServer);
TestCaseUtils.deleteDirectory(testRoot);
}
}
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/DraftCNDbHandlerTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/DraftCNDbHandlerTest.java
index 4ff647d..5e445d6 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/DraftCNDbHandlerTest.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/DraftCNDbHandlerTest.java
@@ -62,9 +62,7 @@
@Test()
void testDraftCNDbHandlerTrim() throws Exception
{
- File testRoot = null;
ReplicationServer replicationServer = null;
- ReplicationDbEnv dbEnv = null;
DraftCNDbHandler handler = null;
try
{
@@ -78,10 +76,7 @@
2, 0, 100, null);
replicationServer = new ReplicationServer(conf);
- testRoot = createCleanDir();
- dbEnv = new ReplicationDbEnv(testRoot.getPath(), replicationServer);
-
- handler = new DraftCNDbHandler(replicationServer, dbEnv);
+ handler = newDraftCNDbHandler(replicationServer);
handler.setPurgeDelay(0);
// Prepare data to be stored in the db
@@ -97,15 +92,12 @@
DN baseDN2 = DN.decode("o=baseDN2");
DN baseDN3 = DN.decode("o=baseDN3");
- CSNGenerator gen = new CSNGenerator(1, 0);
- CSN csn1 = gen.newCSN();
- CSN csn2 = gen.newCSN();
- CSN csn3 = gen.newCSN();
+ CSN[] csns = new CSNGenerator(1, 0).newCSNs(3);
// Add records
- handler.addRecord(new CNIndexRecord(cn1, value1, baseDN1, csn1));
- handler.addRecord(new CNIndexRecord(cn2, value2, baseDN2, csn2));
- handler.addRecord(new CNIndexRecord(cn3, value3, baseDN3, csn3));
+ handler.addRecord(new CNIndexRecord(cn1, value1, baseDN1, csns[0]));
+ handler.addRecord(new CNIndexRecord(cn2, value2, baseDN2, csns[1]));
+ handler.addRecord(new CNIndexRecord(cn3, value3, baseDN3, csns[2]));
// The ChangeNumber should not get purged
final long firstChangeNumber = handler.getFirstRecord().getChangeNumber();
@@ -115,14 +107,14 @@
DraftCNDBCursor dbc = handler.getReadCursor(firstChangeNumber);
try
{
- assertEqualTo(dbc.currentRecord(), csn1, baseDN1, value1);
+ assertEqualTo(dbc.currentRecord(), csns[0], baseDN1, value1);
assertTrue(dbc.toString().length() != 0);
assertTrue(dbc.next());
- assertEqualTo(dbc.currentRecord(), csn2, baseDN2, value2);
+ assertEqualTo(dbc.currentRecord(), csns[1], baseDN2, value2);
assertTrue(dbc.next());
- assertEqualTo(dbc.currentRecord(), csn3, baseDN3, value3);
+ assertEqualTo(dbc.currentRecord(), csns[2], baseDN3, value3);
assertFalse(dbc.next());
}
@@ -146,11 +138,7 @@
{
if (handler != null)
handler.shutdown();
- if (dbEnv != null)
- dbEnv.shutdown();
- if (replicationServer != null)
- replicationServer.remove();
- TestCaseUtils.deleteDirectory(testRoot);
+ remove(replicationServer);
}
}
@@ -161,6 +149,13 @@
assertEquals(data.getPreviousCookie(), cookie);
}
+ private DraftCNDbHandler newDraftCNDbHandler(ReplicationServer rs) throws Exception
+ {
+ File testRoot = createCleanDir();
+ ReplicationDbEnv dbEnv = new ReplicationDbEnv(testRoot.getPath(), rs);
+ return new DraftCNDbHandler(rs, dbEnv);
+ }
+
private File createCleanDir() throws IOException
{
String buildRoot = System.getProperty(TestCaseUtils.PROPERTY_BUILD_ROOT);
@@ -186,9 +181,7 @@
@Test()
void testDraftCNDbHandlerClear() throws Exception
{
- File testRoot = null;
ReplicationServer replicationServer = null;
- ReplicationDbEnv dbEnv = null;
DraftCNDbHandler handler = null;
try
{
@@ -202,10 +195,7 @@
2, 0, 100, null);
replicationServer = new ReplicationServer(conf);
- testRoot = createCleanDir();
- dbEnv = new ReplicationDbEnv(testRoot.getAbsolutePath(), replicationServer);
-
- handler = new DraftCNDbHandler(replicationServer, dbEnv);
+ handler = newDraftCNDbHandler(replicationServer);
handler.setPurgeDelay(0);
assertTrue(handler.isEmpty());
@@ -223,15 +213,12 @@
DN baseDN2 = DN.decode("o=baseDN2");
DN baseDN3 = DN.decode("o=baseDN3");
- CSNGenerator gen = new CSNGenerator(1, 0);
- CSN csn1 = gen.newCSN();
- CSN csn2 = gen.newCSN();
- CSN csn3 = gen.newCSN();
+ CSN[] csns = new CSNGenerator(1, 0).newCSNs(3);
// Add records
- handler.addRecord(new CNIndexRecord(cn1, value1, baseDN1, csn1));
- handler.addRecord(new CNIndexRecord(cn2, value2, baseDN2, csn2));
- handler.addRecord(new CNIndexRecord(cn3, value3, baseDN3, csn3));
+ handler.addRecord(new CNIndexRecord(cn1, value1, baseDN1, csns[0]));
+ handler.addRecord(new CNIndexRecord(cn2, value2, baseDN2, csns[1]));
+ handler.addRecord(new CNIndexRecord(cn3, value3, baseDN3, csns[2]));
Thread.sleep(500);
// Checks
@@ -266,11 +253,7 @@
{
if (handler != null)
handler.shutdown();
- if (dbEnv != null)
- dbEnv.shutdown();
- if (replicationServer != null)
- replicationServer.remove();
- TestCaseUtils.deleteDirectory(testRoot);
+ remove(replicationServer);
}
}
--
Gitblit v1.10.0