From e3c572ea44ac45ee852f71d4c05b83d3cf27febf Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 13 Aug 2013 10:07:41 +0000
Subject: [PATCH] ExternalChangelogTest.java: Extracted constants SERVER_ID_1 and SERVER_ID_2. Renamed getAttributeValue() to getAttributeValueOrNull(). Extracted new getAttributeValue() from getAttributeValueOrNull(), checkValue() and checkPossibleValues(). In ECLGetEligibleCountTest(), extracted constants to better explicit the code + removed the count local variable + extracted method now() Removed useless code blocks.
---
opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ExternalChangeLogTest.java | 473 ++++++++++++++++++++++++++--------------------------------
opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java | 6
2 files changed, 216 insertions(+), 263 deletions(-)
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 6edf6ab..947fcbf 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationServerDomain.java
@@ -3335,11 +3335,7 @@
for (int serverId : getDbServerState())
{
- ChangeNumber startCN = null;
- if (startState.getChangeNumber(serverId) != null)
- {
- startCN = startState.getChangeNumber(serverId);
- }
+ ChangeNumber startCN = startState.getChangeNumber(serverId);
long serverIdRes = getCount(serverId, startCN, endCN);
// The startPoint is excluded when counting the ECL eligible changes
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 b6a3be5..80f9853 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
@@ -88,6 +88,10 @@
@SuppressWarnings("javadoc")
public class ExternalChangeLogTest extends ReplicationTestCase
{
+
+ private static final int SERVER_ID_1 = 1201;
+ private static final int SERVER_ID_2 = 1202;
+
/** The tracer object for the debug logger */
private static final DebugTracer TRACER = getTracer();
@@ -485,25 +489,23 @@
{
// create 2 regular brokers on the 2 suffixes
server01 = openReplicationSession(
- DN.decode(TEST_ROOT_DN_STRING), 1201,
- 100, replicationServerPort,
- brokerSessionTimeout, true);
+ DN.decode(TEST_ROOT_DN_STRING), SERVER_ID_1,
+ 100, replicationServerPort, brokerSessionTimeout, true);
server02 = openReplicationSession(
- DN.decode(TEST_ROOT_DN_STRING2), 1202,
- 100, replicationServerPort,
- brokerSessionTimeout, true, EMPTY_DN_GENID);
+ DN.decode(TEST_ROOT_DN_STRING2), SERVER_ID_2,
+ 100, replicationServerPort, brokerSessionTimeout, true, EMPTY_DN_GENID);
// create and publish 1 change on each suffix
long time = TimeThread.getTime();
int ts = 1;
- ChangeNumber cn1 = new ChangeNumber(time, ts++, 1201);
+ ChangeNumber cn1 = new ChangeNumber(time, ts++, SERVER_ID_1);
DeleteMsg delMsg1 =
new DeleteMsg("o=" + tn + "1," + TEST_ROOT_DN_STRING, cn1, "ECLBasicMsg1uid");
server01.publish(delMsg1);
debugInfo(tn, "publishes:" + delMsg1);
- ChangeNumber cn2 = new ChangeNumber(time, ts++, 1202);
+ ChangeNumber cn2 = new ChangeNumber(time, ts++, SERVER_ID_2);
DeleteMsg delMsg2 =
new DeleteMsg("o=" + tn + "2," + TEST_ROOT_DN_STRING2, cn2, "ECLBasicMsg2uid");
server02.publish(delMsg2);
@@ -637,14 +639,13 @@
baseDn2 = DN.decode(TEST_ROOT_DN_STRING2);
server01 = openReplicationSession(
- DN.decode(TEST_ROOT_DN_STRING), 1201,
- 100, replicationServerPort,
- brokerSessionTimeout, true);
+ DN.decode(TEST_ROOT_DN_STRING), SERVER_ID_1,
+ 100, replicationServerPort, brokerSessionTimeout, true);
// create and publish 1 change on each suffix
long time = TimeThread.getTime();
int ts = 1;
- ChangeNumber cn1 = new ChangeNumber(time, ts++, 1201);
+ ChangeNumber cn1 = new ChangeNumber(time, ts++, SERVER_ID_1);
DeleteMsg delMsg1 =
new DeleteMsg("o=" + tn + "1," + TEST_ROOT_DN_STRING, cn1, "ECLBasicMsg1uid");
server01.publish(delMsg1);
@@ -738,22 +739,17 @@
try
{
// Initialize a second test backend
- Backend backend2 = initializeTestBackend(true,
- TEST_ROOT_DN_STRING2, TEST_BACKEND_ID2);
+ initializeTestBackend(true, TEST_ROOT_DN_STRING2, TEST_BACKEND_ID2);
- //
LDIFWriter ldifWriter = getLDIFWriter();
- // --
s1test = openReplicationSession(
- DN.decode(TEST_ROOT_DN_STRING), 1201,
- 100, replicationServerPort,
- brokerSessionTimeout, true);
+ DN.decode(TEST_ROOT_DN_STRING), SERVER_ID_1,
+ 100, replicationServerPort, brokerSessionTimeout, true);
s2test2 = openReplicationSession(
- DN.decode(TEST_ROOT_DN_STRING2), 1202,
- 100, replicationServerPort,
- brokerSessionTimeout, true, EMPTY_DN_GENID);
+ DN.decode(TEST_ROOT_DN_STRING2), SERVER_ID_2,
+ 100, replicationServerPort, brokerSessionTimeout, true, EMPTY_DN_GENID);
sleep(500);
// Produce updates
@@ -826,13 +822,11 @@
// --
s1test2 = openReplicationSession(
DN.decode(TEST_ROOT_DN_STRING2), 1203,
- 100, replicationServerPort,
- brokerSessionTimeout, true, EMPTY_DN_GENID);
+ 100, replicationServerPort, brokerSessionTimeout, true, EMPTY_DN_GENID);
s2test = openReplicationSession(
DN.decode(TEST_ROOT_DN_STRING), 1204,
- 100, replicationServerPort,
- brokerSessionTimeout, true);
+ 100, replicationServerPort, brokerSessionTimeout, true);
sleep(500);
time = TimeThread.getTime();
@@ -1009,11 +1003,10 @@
// Creates broker on o=test
server01 = openReplicationSession(
- DN.decode(TEST_ROOT_DN_STRING), 1201,
- 100, replicationServerPort,
- brokerSessionTimeout, true);
+ DN.decode(TEST_ROOT_DN_STRING), SERVER_ID_1,
+ 100, replicationServerPort, brokerSessionTimeout, true);
- final ChangeNumber[] cns = generateChangeNumbers(4, 1201);
+ final ChangeNumber[] cns = generateChangeNumbers(4, SERVER_ID_1);
publishDeleteMsgInOTest(server01, cns[0], tn, 1);
Thread.sleep(1000);
@@ -1149,20 +1142,18 @@
// Creates broker on o=test
ReplicationBroker server01 = openReplicationSession(
- DN.decode(TEST_ROOT_DN_STRING), 1201,
- 100, replicationServerPort,
- brokerSessionTimeout, true);
+ DN.decode(TEST_ROOT_DN_STRING), SERVER_ID_1,
+ 100, replicationServerPort, brokerSessionTimeout, true);
// Creates broker on o=test2
ReplicationBroker server02 = openReplicationSession(
- DN.decode(TEST_ROOT_DN_STRING2), 1202,
- 100, replicationServerPort,
- brokerSessionTimeout, true);
+ DN.decode(TEST_ROOT_DN_STRING2), SERVER_ID_2,
+ 100, replicationServerPort, brokerSessionTimeout, true);
String user1entryUUID = "11111111-1111-1111-1111-111111111111";
String baseUUID = "22222222-2222-2222-2222-222222222222";
- ChangeNumber[] cns = generateChangeNumbers(4, 1201);
+ ChangeNumber[] cns = generateChangeNumbers(4, SERVER_ID_1);
// Publish DEL
int cnCounter = 0;
@@ -1233,7 +1224,7 @@
checkDn(cns[i - 1], resultEntry);
checkValue(resultEntry, "targetdn", "uid=" + tn + i + "," + TEST_ROOT_DN_STRING);
checkValue(resultEntry, "replicationcsn", cns[i - 1].toString());
- checkValue(resultEntry, "replicaidentifier", "1201");
+ checkValue(resultEntry, "replicaidentifier", String.valueOf(SERVER_ID_1));
checkValue(resultEntry, "changelogcookie", cookies[i - 1]);
checkValue(resultEntry, "changenumber", "0");
@@ -1362,34 +1353,18 @@
private static void checkValue(Entry entry, String attrName, String expectedValue)
{
- AttributeValue av = null;
- try
- {
- List<Attribute> attrs = entry.getAttribute(attrName);
- Attribute a = attrs.iterator().next();
- av = a.iterator().next();
- String encodedValue = av.toString();
- assertTrue(encodedValue.equalsIgnoreCase(expectedValue),
- "In entry " + entry + " attr <" + attrName + "> equals " +
- av + " instead of expected value " + expectedValue);
- }
- catch(Exception e)
- {
- assertTrue(false,
- "In entry " + entry + " attr <" + attrName + "> equals " +
- av + " instead of expected value " + expectedValue);
- }
+ String encodedValue = getAttributeValue(entry, attrName);
+ assertTrue(encodedValue.equalsIgnoreCase(expectedValue), "In entry "
+ + entry + " attr <" + attrName + "> equals " + encodedValue
+ + " instead of expected value " + expectedValue);
}
- private static String getAttributeValue(Entry entry, String attrName)
+ private static String getAttributeValueOrNull(Entry entry, String attrName)
{
try
{
- List<Attribute> attrs = entry.getAttribute(attrName);
- Attribute a = attrs.iterator().next();
- AttributeValue av = a.iterator().next();
- return av.toString();
+ return getAttributeValue(entry, attrName);
}
catch(Exception e)
{
@@ -1397,30 +1372,24 @@
return null;
}
+ private static String getAttributeValue(Entry entry, String attrName)
+ {
+ List<Attribute> attrs = entry.getAttribute(attrName);
+ Attribute a = attrs.iterator().next();
+ AttributeValue av = a.iterator().next();
+ return av.toString();
+ }
+
private static void checkPossibleValues(Entry entry, String attrName,
String expectedValue1, String expectedValue2)
{
- AttributeValue av = null;
- try
- {
- List<Attribute> attrs = entry.getAttribute(attrName);
- Attribute a = attrs.iterator().next();
- av = a.iterator().next();
- String encodedValue = av.toString();
- assertTrue(
- (encodedValue.equalsIgnoreCase(expectedValue1) ||
- encodedValue.equalsIgnoreCase(expectedValue2)),
- "In entry " + entry + " attr <" + attrName + "> equals " +
- av + " instead of one of the expected values " + expectedValue1
- + " or " + expectedValue2);
- }
- catch(Exception e)
- {
- assertTrue(false,
- "In entry " + entry + " attr <" + attrName + "> equals " +
- av + " instead of one of the expected values " + expectedValue1
- + " or " + expectedValue2);
- }
+ String encodedValue = getAttributeValue(entry, attrName);
+ assertTrue(
+ (encodedValue.equalsIgnoreCase(expectedValue1)
+ || encodedValue.equalsIgnoreCase(expectedValue2)),
+ "In entry " + entry + " attr <" + attrName + "> equals " + encodedValue
+ + " instead of one of the expected values " + expectedValue1 + " or "
+ + expectedValue2);
}
private static void checkValues(Entry entry, String attrName,
@@ -1464,11 +1433,10 @@
{
// Create broker on suffix
ReplicationBroker server01 = openReplicationSession(
- DN.decode(TEST_ROOT_DN_STRING), 1201,
- 100, replicationServerPort,
- brokerSessionTimeout, true);
+ DN.decode(TEST_ROOT_DN_STRING), SERVER_ID_1,
+ 100, replicationServerPort, brokerSessionTimeout, true);
- ChangeNumber[] cns = generateChangeNumbers(2, 1201);
+ ChangeNumber[] cns = generateChangeNumbers(2, SERVER_ID_1);
// Produce update on this suffix
DeleteMsg delMsg =
@@ -1746,22 +1714,20 @@
{
// Create broker on o=test
server01 = openReplicationSession(
- DN.decode(TEST_ROOT_DN_STRING), 1201,
- 100, replicationServerPort,
- brokerSessionTimeout, true);
+ DN.decode(TEST_ROOT_DN_STRING), SERVER_ID_1,
+ 100, replicationServerPort, brokerSessionTimeout, true);
server01.setChangeTimeHeartbeatInterval(100); //ms
int ts = 1;
// Create broker on o=test2
server02 = openReplicationSession(
- DN.decode(TEST_ROOT_DN_STRING2), 1202,
- 100, replicationServerPort,
- brokerSessionTimeout, true, EMPTY_DN_GENID);
+ DN.decode(TEST_ROOT_DN_STRING2), SERVER_ID_2,
+ 100, replicationServerPort, brokerSessionTimeout, true, EMPTY_DN_GENID);
server02.setChangeTimeHeartbeatInterval(100); //ms
// Produce update 1
ChangeNumber cn1 =
- new ChangeNumber(TimeThread.getTime(), ts++, 1201);
+ new ChangeNumber(TimeThread.getTime(), ts++, SERVER_ID_1);
DeleteMsg delMsg1 =
new DeleteMsg("uid=" + tn + "1," + TEST_ROOT_DN_STRING, cn1,
"11111111-1111-1111-1111-111111111111");
@@ -1771,7 +1737,7 @@
// Produce update 2
ChangeNumber cn2 =
- new ChangeNumber(TimeThread.getTime(), ts++, 1202);
+ new ChangeNumber(TimeThread.getTime(), ts++, SERVER_ID_2);
DeleteMsg delMsg2 =
new DeleteMsg("uid=" + tn + "2," + TEST_ROOT_DN_STRING2, cn2,
"22222222-2222-2222-2222-222222222222");
@@ -1781,7 +1747,7 @@
// Produce update 3
ChangeNumber cn3 =
- new ChangeNumber(TimeThread.getTime(), ts++, 1202);
+ new ChangeNumber(TimeThread.getTime(), ts++, SERVER_ID_2);
DeleteMsg delMsg3 =
new DeleteMsg("uid=" + tn + "3," + TEST_ROOT_DN_STRING2, cn3,
"33333333-3333-3333-3333-333333333333");
@@ -2013,7 +1979,7 @@
}
// Produces additional change
- ChangeNumber cn11 = new ChangeNumber(TimeThread.getTime(), 11, 1201);
+ ChangeNumber cn11 = new ChangeNumber(TimeThread.getTime(), 11, SERVER_ID_1);
String expectedDn11 = "uid=" + tn + "11," + TEST_ROOT_DN_STRING;
DeleteMsg delMsg11 = new DeleteMsg(expectedDn11, cn11,
"44444444-4444-4444-4444-444444444444");
@@ -2023,7 +1989,7 @@
debugInfo(tn, delMsg11.getChangeNumber() + " published additionally ");
// Produces additional change
- ChangeNumber cn12 = new ChangeNumber(TimeThread.getTime(), 12, 1202);
+ ChangeNumber cn12 = new ChangeNumber(TimeThread.getTime(), 12, SERVER_ID_2);
String expectedDn12 = "uid=" + tn + "12," + TEST_ROOT_DN_STRING2;
DeleteMsg delMsg12 = new DeleteMsg(expectedDn12, cn12,
"55555555-5555-5555-5555-555555555555");
@@ -2033,7 +1999,7 @@
debugInfo(tn, delMsg12.getChangeNumber() + " published additionally ");
// Produces additional change
- ChangeNumber cn13 = new ChangeNumber(TimeThread.getTime(), 13, 1202);
+ ChangeNumber cn13 = new ChangeNumber(TimeThread.getTime(), 13, SERVER_ID_2);
String expectedDn13 = "uid=" + tn + "13," + TEST_ROOT_DN_STRING2;
DeleteMsg delMsg13 = new DeleteMsg(expectedDn13, cn13,
"66666666-6666-6666-6666-666666666666");
@@ -2328,14 +2294,12 @@
// --
s1test = openReplicationSession(
- DN.decode(TEST_ROOT_DN_STRING), 1201,
- 100, replicationServerPort,
- brokerSessionTimeout, true);
+ DN.decode(TEST_ROOT_DN_STRING), SERVER_ID_1,
+ 100, replicationServerPort, brokerSessionTimeout, true);
s2test2 = openReplicationSession(
- DN.decode(TEST_ROOT_DN_STRING2), 1202,
- 100, replicationServerPort,
- brokerSessionTimeout, true, EMPTY_DN_GENID);
+ DN.decode(TEST_ROOT_DN_STRING2), SERVER_ID_2,
+ 100, replicationServerPort, brokerSessionTimeout, true, EMPTY_DN_GENID);
sleep(500);
// Produce updates
@@ -2357,13 +2321,11 @@
// --
s1test2 = openReplicationSession(
DN.decode(TEST_ROOT_DN_STRING2), 1203,
- 100, replicationServerPort,
- brokerSessionTimeout, true, EMPTY_DN_GENID);
+ 100, replicationServerPort, brokerSessionTimeout, true, EMPTY_DN_GENID);
s2test = openReplicationSession(
DN.decode(TEST_ROOT_DN_STRING), 1204,
- 100, replicationServerPort,
- brokerSessionTimeout, true);
+ 100, replicationServerPort, brokerSessionTimeout, true);
sleep(500);
// Test startState ("first cookie") of the ECL
@@ -2454,14 +2416,13 @@
// Creates broker on o=test
ReplicationBroker server01 = openReplicationSession(
- DN.decode(TEST_ROOT_DN_STRING), 1201,
- 100, replicationServerPort,
- brokerSessionTimeout, true);
+ DN.decode(TEST_ROOT_DN_STRING), SERVER_ID_1,
+ 100, replicationServerPort, brokerSessionTimeout, true);
String user1entryUUID = "11111111-1112-1113-1114-111111111115";
String baseUUID = "22222222-2222-2222-2222-222222222222";
- ChangeNumber[] cns = generateChangeNumbers(nbChanges, 1201);
+ ChangeNumber[] cns = generateChangeNumbers(nbChanges, SERVER_ID_1);
gblCN = cns[1];
// Publish DEL
@@ -2545,7 +2506,7 @@
assertDnEquals(resultEntry, firstDraftChangeNumber, i - 1);
checkValue(resultEntry, "changenumber", String.valueOf(firstDraftChangeNumber + i - 1));
checkValue(resultEntry, "targetentryuuid", user1entryUUID);
- checkValue(resultEntry, "replicaidentifier", "1201");
+ checkValue(resultEntry, "replicaidentifier", String.valueOf(SERVER_ID_1));
final ChangeNumber cn = cns[i - 1];
checkValue(resultEntry, "replicationcsn", cn.toString());
checkValue(resultEntry, "changelogcookie", "o=test:" + cn + ";");
@@ -2594,36 +2555,34 @@
String tn = "ECLCompatReadFrom/" + firstDraftChangeNumber;
debugInfo(tn, "Starting test\n\n");
- {
- LDIFWriter ldifWriter = getLDIFWriter();
+ LDIFWriter ldifWriter = getLDIFWriter();
- // Creates broker on o=test
- ReplicationBroker server01 = openReplicationSession(
- DN.decode(TEST_ROOT_DN_STRING), 1201,
- 100, replicationServerPort,
- brokerSessionTimeout, true);
+ // Creates broker on o=test
+ ReplicationBroker server01 =
+ openReplicationSession(DN.decode(TEST_ROOT_DN_STRING), SERVER_ID_1,
+ 100, replicationServerPort, brokerSessionTimeout, true);
- String user1entryUUID = "11111111-1112-1113-1114-111111111115";
+ String user1entryUUID = "11111111-1112-1113-1114-111111111115";
- String filter = "(changenumber="+firstDraftChangeNumber+")";
- InternalSearchOperation searchOp = searchOnChangelog(filter, tn, SUCCESS);
+ String filter = "(changenumber=" + firstDraftChangeNumber + ")";
+ InternalSearchOperation searchOp = searchOnChangelog(filter, tn, SUCCESS);
- List<SearchResultEntry> entries = searchOp.getSearchEntries();
- assertEquals(entries.size(), 1);
- debugAndWriteEntries(ldifWriter, entries, tn);
+ List<SearchResultEntry> entries = searchOp.getSearchEntries();
+ assertEquals(entries.size(), 1);
+ debugAndWriteEntries(ldifWriter, entries, tn);
- // check the entry has the right content
- SearchResultEntry resultEntry = entries.get(0);
- assertTrue("changenumber=6,cn=changelog".equalsIgnoreCase(resultEntry.getDN().toNormalizedString()));
- checkValue(resultEntry, "replicationcsn", gblCN.toString());
- checkValue(resultEntry, "replicaidentifier", "1201");
- checkValue(resultEntry, "changetype", "add");
- checkValue(resultEntry, "changelogcookie", "o=test:" + gblCN + ";");
- checkValue(resultEntry, "targetentryuuid", user1entryUUID);
- checkValue(resultEntry, "changenumber", "6");
+ // check the entry has the right content
+ SearchResultEntry resultEntry = entries.get(0);
+ assertTrue("changenumber=6,cn=changelog".equalsIgnoreCase(resultEntry.getDN().toNormalizedString()));
+ checkValue(resultEntry, "replicationcsn", gblCN.toString());
+ checkValue(resultEntry, "replicaidentifier", String.valueOf(SERVER_ID_1));
+ checkValue(resultEntry, "changetype", "add");
+ checkValue(resultEntry, "changelogcookie", "o=test:" + gblCN + ";");
+ checkValue(resultEntry, "targetentryuuid", user1entryUUID);
+ checkValue(resultEntry, "changenumber", "6");
- server01.stop();
- }
+ server01.stop();
+
debugInfo(tn, "Ending test with success");
}
@@ -2638,7 +2597,7 @@
// Creates broker on o=test
ReplicationBroker server01 =
- openReplicationSession(DN.decode(TEST_ROOT_DN_STRING), 1201, 100,
+ openReplicationSession(DN.decode(TEST_ROOT_DN_STRING), SERVER_ID_1, 100,
replicationServerPort, brokerSessionTimeout, true);
String filter = "(changenumber=" + firstDraftChangeNumber + ")";
@@ -2846,10 +2805,10 @@
debugAndWriteEntries(null, entries, tn);
for (SearchResultEntry resultEntry : entries)
{
- assertEquals(getAttributeValue(resultEntry, "firstchangenumber"), null);
- assertEquals(getAttributeValue(resultEntry, "lastchangenumber"), null);
- assertEquals(getAttributeValue(resultEntry, "changelog"), null);
- assertEquals(getAttributeValue(resultEntry, "lastExternalChangelogCookie"), null);
+ assertEquals(getAttributeValueOrNull(resultEntry, "firstchangenumber"), null);
+ assertEquals(getAttributeValueOrNull(resultEntry, "lastchangenumber"), null);
+ assertEquals(getAttributeValueOrNull(resultEntry, "changelog"), null);
+ assertEquals(getAttributeValueOrNull(resultEntry, "lastExternalChangelogCookie"), null);
}
debugInfo(tn, "Ending test with success");
@@ -2860,40 +2819,40 @@
{
String tn = "ECLCompatTestLimits";
debugInfo(tn, "Starting test\n\n");
+
+ LDIFWriter ldifWriter = getLDIFWriter();
+
+ // search on 'cn=changelog'
+ Set<String> attributes = new LinkedHashSet<String>();
+ if (expectedFirst > 0)
+ attributes.add("firstchangenumber");
+ attributes.add("lastchangenumber");
+ attributes.add("changelog");
+ attributes.add("lastExternalChangelogCookie");
+
+ debugInfo(tn, " Search: rootDSE");
+ InternalSearchOperation searchOp = searchOnRootDSE(attributes);
+ List<SearchResultEntry> entries = searchOp.getSearchEntries();
+ assertEquals(entries.size(), 1);
+ SearchResultEntry resultEntry = entries.get(0);
+ debugAndWriteEntries(ldifWriter, entries, tn);
+
+ if (eclEnabled)
{
- LDIFWriter ldifWriter = getLDIFWriter();
-
- // search on 'cn=changelog'
- Set<String> attributes = new LinkedHashSet<String>();
- if (expectedFirst>0)
- attributes.add("firstchangenumber");
- attributes.add("lastchangenumber");
- attributes.add("changelog");
- attributes.add("lastExternalChangelogCookie");
-
- debugInfo(tn, " Search: rootDSE");
- InternalSearchOperation searchOp = searchOnRootDSE(attributes);
- List<SearchResultEntry> entries = searchOp.getSearchEntries();
- assertEquals(entries.size(), 1);
- SearchResultEntry resultEntry = entries.get(0);
- debugAndWriteEntries(ldifWriter, entries, tn);
-
- if (eclEnabled)
- {
- if (expectedFirst > 0)
- checkValue(resultEntry, "firstchangenumber", String.valueOf(expectedFirst));
- checkValue(resultEntry, "lastchangenumber", String.valueOf(expectedLast));
- checkValue(resultEntry, "changelog", String.valueOf("cn=changelog"));
- }
- else
- {
- if (expectedFirst > 0)
- assertEquals(getAttributeValue(resultEntry, "firstchangenumber"), null);
- assertEquals(getAttributeValue(resultEntry, "lastchangenumber"), null);
- assertEquals(getAttributeValue(resultEntry, "changelog"), null);
- assertEquals(getAttributeValue(resultEntry, "lastExternalChangelogCookie"), null);
- }
+ if (expectedFirst > 0)
+ checkValue(resultEntry, "firstchangenumber", String.valueOf(expectedFirst));
+ checkValue(resultEntry, "lastchangenumber", String.valueOf(expectedLast));
+ checkValue(resultEntry, "changelog", String.valueOf("cn=changelog"));
}
+ else
+ {
+ if (expectedFirst > 0)
+ assertEquals(getAttributeValueOrNull(resultEntry, "firstchangenumber"), null);
+ assertEquals(getAttributeValueOrNull(resultEntry, "lastchangenumber"), null);
+ assertEquals(getAttributeValueOrNull(resultEntry, "changelog"), null);
+ assertEquals(getAttributeValueOrNull(resultEntry, "lastExternalChangelogCookie"), null);
+ }
+
debugInfo(tn, "Ending test with success");
}
@@ -2925,13 +2884,13 @@
// Creates broker on o=test
ReplicationBroker server01 =
- openReplicationSession(DN.decode(TEST_ROOT_DN_STRING), 1201, 100,
+ openReplicationSession(DN.decode(TEST_ROOT_DN_STRING), SERVER_ID_1, 100,
replicationServerPort, brokerSessionTimeout, true);
String user1entryUUID = "11111111-1112-1113-1114-111111111115";
// Publish DEL
- ChangeNumber cn1 = new ChangeNumber(TimeThread.getTime(), ts++, 1201);
+ ChangeNumber cn1 = new ChangeNumber(TimeThread.getTime(), ts++, SERVER_ID_1);
DeleteMsg delMsg = new DeleteMsg("uid=" + tn + "1," + TEST_ROOT_DN_STRING,
cn1, user1entryUUID);
server01.publish(delMsg);
@@ -2949,84 +2908,78 @@
String tn = "ECLGetEligibleCountTest";
debugInfo(tn, "Starting test\n\n");
String user1entryUUID = "11111111-1112-1113-1114-111111111115";
- ChangeNumber[] cns = generateChangeNumbers(4, 1201);
- {
- ReplicationServerDomain rsdtest =
+
+ final ChangeNumber[] cns = generateChangeNumbers(4, SERVER_ID_1);
+ final ChangeNumber cn1 = cns[0];
+ final ChangeNumber cn2 = cns[1];
+ final ChangeNumber cn3 = cns[2];
+
+ ReplicationServerDomain rsdtest =
replicationServer.getReplicationServerDomain(TEST_ROOT_DN_STRING, false);
+ // this empty state will force to count from the start of the DB
+ final ServerState fromStart = new ServerState();
- // The replication changelog is empty
- long count = rsdtest.getEligibleCount(new ServerState(), cns[0]);
- assertEquals(count, 0);
+ // The replication changelog is empty
+ assertEquals(rsdtest.getEligibleCount(fromStart, cns[0]), 0);
- // Creates broker on o=test
- ReplicationBroker server01 = openReplicationSession(
- DN.decode(TEST_ROOT_DN_STRING), 1201,
- 1000, replicationServerPort,
- brokerSessionTimeout, true);
+ // Creates broker on o=test
+ ReplicationBroker server01 = openReplicationSession(
+ DN.decode(TEST_ROOT_DN_STRING), SERVER_ID_1,
+ 1000, replicationServerPort, brokerSessionTimeout, true);
- // Publish one first message
- ChangeNumber cn1 = cns[0];
- DeleteMsg delMsg =
- new DeleteMsg("uid="+tn+"1," + TEST_ROOT_DN_STRING, cn1,
+ // Publish one first message
+ DeleteMsg delMsg = new DeleteMsg("uid=" + tn + "1," + TEST_ROOT_DN_STRING, cn1,
user1entryUUID);
- server01.publish(delMsg);
- debugInfo(tn, " publishes " + delMsg.getChangeNumber());
- sleep(300);
+ server01.publish(delMsg);
+ debugInfo(tn, " publishes " + delMsg.getChangeNumber());
+ sleep(300);
- // From begin to now : 1 change
- count = rsdtest.getEligibleCount(new ServerState(), cns[0]);
- assertEquals(count, 1);
+ // From begin to now : 1 change
+ assertEquals(rsdtest.getEligibleCount(fromStart, now()), 1);
- // Publish one second message
- ChangeNumber cn2 = cns[1];
- delMsg = new DeleteMsg("uid=" + tn + "1," + TEST_ROOT_DN_STRING, cn2,
- user1entryUUID);
- server01.publish(delMsg);
- debugInfo(tn, " publishes " + delMsg.getChangeNumber());
- sleep(300);
+ // Publish one second message
+ delMsg = new DeleteMsg("uid=" + tn + "1," + TEST_ROOT_DN_STRING, cn2,
+ user1entryUUID);
+ server01.publish(delMsg);
+ debugInfo(tn, " publishes " + delMsg.getChangeNumber());
+ sleep(300);
- // From begin to now : 2 changes
- count = rsdtest.getEligibleCount(new ServerState(), cns[0]);
- assertEquals(count, 2);
+ // From begin to now : 2 changes
+ assertEquals(rsdtest.getEligibleCount(fromStart, now()), 2);
- // From begin to first change (inclusive) : 1 change = cn1
- count = rsdtest.getEligibleCount(new ServerState(), cn1);
- assertEquals(count, 1);
+ // From begin to first change (inclusive) : 1 change = cn1
+ assertEquals(rsdtest.getEligibleCount(fromStart, cn1), 1);
- ServerState ss = new ServerState();
- ss.update(cn1);
+ final ServerState fromStateBeforeCN1 = new ServerState();
+ fromStateBeforeCN1.update(cn1);
- // From state/cn1(exclusive) to cn1 (inclusive) : 0 change
- count = rsdtest.getEligibleCount(ss, cn1);
- assertEquals(count, 0);
+ // From state/cn1(exclusive) to cn1 (inclusive) : 0 change
+ assertEquals(rsdtest.getEligibleCount(fromStateBeforeCN1, cn1), 0);
- // From state/cn1(exclusive) to cn2 (inclusive) : 1 change = cn2
- count = rsdtest.getEligibleCount(ss, cn2);
- assertEquals(count, 1);
+ // From state/cn1(exclusive) to cn2 (inclusive) : 1 change = cn2
+ assertEquals(rsdtest.getEligibleCount(fromStateBeforeCN1, cn2), 1);
- ss.update(cn2);
+ final ServerState fromStateBeforeCN2 = new ServerState();
+ fromStateBeforeCN2.update(cn2);
- // From state/cn2(exclusive) to now (inclusive) : 0 change
- count = rsdtest.getEligibleCount(ss, cns[3]);
- assertEquals(count, 0);
+ // From state/cn2(exclusive) to now (inclusive) : 0 change
+ assertEquals(rsdtest.getEligibleCount(fromStateBeforeCN2, now()), 0);
- // Publish one third message
- ChangeNumber cn3 = cns[2];
- delMsg = new DeleteMsg("uid="+tn+"1," + TEST_ROOT_DN_STRING, cn3,
- user1entryUUID);
- server01.publish(delMsg);
- debugInfo(tn, " publishes " + delMsg.getChangeNumber());
- sleep(300);
+ // Publish one third message
+ delMsg = new DeleteMsg("uid="+tn+"1," + TEST_ROOT_DN_STRING, cn3,
+ user1entryUUID);
+ server01.publish(delMsg);
+ debugInfo(tn, " publishes " + delMsg.getChangeNumber());
+ sleep(300);
- ss.update(cn2);
+ fromStateBeforeCN2.update(cn2);
- // From state/cn2(exclusive) to now : 1 change = cn3
- count = rsdtest.getEligibleCount(ss, cns[3]);
- assertEquals(count, 1);
+ // From state/cn2(exclusive) to now : 1 change = cn3
+ assertEquals(rsdtest.getEligibleCount(fromStateBeforeCN2, now()), 1);
- boolean perfs=false;
- if (perfs)
- {
+ boolean perfs=false;
+ if (perfs)
+ {
// number of msgs used by the test
int maxMsg = 999999;
@@ -3036,15 +2989,14 @@
debugInfo(tn, "Perf test in compat mode - will generate " + maxMsg + " msgs.");
for (int i=4; i<=maxMsg; i++)
{
- ChangeNumber cnx = new ChangeNumber(TimeThread.getTime(), i, 1201);
+ ChangeNumber cnx = new ChangeNumber(TimeThread.getTime(), i, SERVER_ID_1);
delMsg = new DeleteMsg("uid="+tn+i+"," + TEST_ROOT_DN_STRING, cnx,
user1entryUUID);
server01.publish(delMsg);
}
sleep(1000);
debugInfo(tn, "Perfs test in compat - search lastChangeNumber");
- Set<String> excludedDomains =
- MultimasterReplication.getECLDisabledDomains();
+ Set<String> excludedDomains = MultimasterReplication.getECLDisabledDomains();
excludedDomains.add(ServerConstants.DN_EXTERNAL_CHANGELOG_ROOT);
ECLWorkflowElement eclwe = (ECLWorkflowElement)
@@ -3058,30 +3010,35 @@
long t2 = TimeThread.getTime();
debugInfo(tn, "Perfs - " + maxMsg + " counted in (ms):" + (t2 - t1));
- String filter = "(changenumber>="+maxMsg+")";
- InternalSearchOperation searchOp = searchOnChangelog(filter, tn, SUCCESS);
- long t3 = TimeThread.getTime();
- assertEquals(searchOp.getSearchEntries().size(), 1);
- debugInfo(tn, "Perfs - last change searched in (ms):" + (t3 - t2));
+ String filter = "(changenumber>=" + maxMsg + ")";
+ InternalSearchOperation searchOp = searchOnChangelog(filter, tn, SUCCESS);
+ long t3 = TimeThread.getTime();
+ assertEquals(searchOp.getSearchEntries().size(), 1);
+ debugInfo(tn, "Perfs - last change searched in (ms):" + (t3 - t2));
- filter = "(changenumber>="+maxMsg+")";
- searchOp = searchOnChangelog(filter, tn, SUCCESS);
- long t4 = TimeThread.getTime();
- assertEquals(searchOp.getSearchEntries().size(), 1);
- debugInfo(tn, "Perfs - last change searched in (ms):" + (t4 - t3));
+ filter = "(changenumber>=" + maxMsg + ")";
+ searchOp = searchOnChangelog(filter, tn, SUCCESS);
+ long t4 = TimeThread.getTime();
+ assertEquals(searchOp.getSearchEntries().size(), 1);
+ debugInfo(tn, "Perfs - last change searched in (ms):" + (t4 - t3));
- filter = "(changenumber>="+(maxMsg-2)+")";
- searchOp = searchOnChangelog(filter, tn, SUCCESS);
- long t5 = TimeThread.getTime();
- assertEquals(searchOp.getSearchEntries().size(), 3);
- debugInfo(tn, "Perfs - last 3 changes searched in (ms):" + (t5 - t4));
- debugAndWriteEntries(null, searchOp.getSearchEntries(), tn);
- }
+ filter = "(changenumber>=" + (maxMsg - 2) + ")";
+ searchOp = searchOnChangelog(filter, tn, SUCCESS);
+ long t5 = TimeThread.getTime();
+ assertEquals(searchOp.getSearchEntries().size(), 3);
+ debugInfo(tn, "Perfs - last 3 changes searched in (ms):" + (t5 - t4));
+ debugAndWriteEntries(null, searchOp.getSearchEntries(), tn);
+
server01.stop();
}
debugInfo(tn, "Ending test with success");
}
+ private ChangeNumber now()
+ {
+ return new ChangeNumber(TimeThread.getTime(), 1, SERVER_ID_1);
+ }
+
/**
* Test ECl entry attributes, and there configuration.
*/
@@ -3200,7 +3157,7 @@
for (SearchResultEntry resultEntry : entries)
{
- String targetdn = getAttributeValue(resultEntry, "targetdn");
+ String targetdn = getAttributeValueOrNull(resultEntry, "targetdn");
if (targetdn.endsWith("cn=robert hue,o=test3")
|| targetdn.endsWith("cn=robert hue2,o=test3"))
@@ -3210,7 +3167,7 @@
Set<String> eoc = newSet("person", "inetOrgPerson", "organizationalPerson", "top");
checkValues(targetEntry, "objectclass", eoc);
- String changeType = getAttributeValue(resultEntry, "changetype");
+ String changeType = getAttributeValueOrNull(resultEntry, "changetype");
if ("delete".equals(changeType))
{
// We are using "*" for deletes so should get back 4 attributes.
@@ -3318,7 +3275,7 @@
String targetdn) throws Exception
{
// Parse includedAttributes as an entry.
- String includedAttributes = getAttributeValue(resultEntry, "includedattributes");
+ String includedAttributes = getAttributeValueOrNull(resultEntry, "includedattributes");
String[] ldifAttributeLines = includedAttributes.split("\\n");
String[] ldif = new String[ldifAttributeLines.length + 1];
System.arraycopy(ldifAttributeLines, 0, ldif, 1, ldifAttributeLines.length);
--
Gitblit v1.10.0