From 952e23788e479b9956a2213c7b917e38ffa662e0 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 09 Aug 2013 13:58:32 +0000
Subject: [PATCH] ExternalChangeLogTest.java: Knocked off 500 lines of code by extracting various methods. This makes the code easier to read even though it is still sometimes puzzling.
---
opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ExternalChangeLogTest.java | 938 +++++++++++++--------------------------------------------
1 files changed, 223 insertions(+), 715 deletions(-)
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 29effc9..42ff072 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
@@ -31,6 +31,7 @@
import static org.opends.server.TestCaseUtils.*;
import static org.opends.server.loggers.debug.DebugLogger.*;
import static org.opends.server.replication.protocol.OperationContext.*;
+import static org.opends.server.types.ResultCode.*;
import static org.opends.server.util.StaticUtils.*;
import static org.testng.Assert.*;
@@ -110,6 +111,13 @@
private int maxWindow = 100;
/**
+ * When used in a search operation, it includes all attributes (user and
+ * operational)
+ */
+ private final Set<String> ALL_ATTRIBUTES = new LinkedHashSet<String>(Arrays
+ .asList("+", "*"));
+
+ /**
* Set up the environment for performing the tests in this Class.
* Replication
*
@@ -586,26 +594,14 @@
replicationServer.clearDb();
- {
- // search on 'cn=changelog'
- InternalSearchOperation op2 = connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, 0,
- false,
- LDAPFilter.decode("(objectclass=*)"),
- new LinkedHashSet<String>(0),
- createControls(""),
- null);
+ InternalSearchOperation op2 =
+ searchOnChangelog("(objectclass=*)", new LinkedHashSet<String>(0),
+ createControls(""));
+ waitOpResult(op2, ResultCode.SUCCESS);
- // success
- waitOpResult(op2, ResultCode.SUCCESS);
-
- // root entry returned
- assertEquals(op2.getEntriesSent(), 1);
- debugInfo(tn, "Ending test successfully");
- }
+ // root entry returned
+ assertEquals(op2.getEntriesSent(), 1);
+ debugInfo(tn, "Ending test successfully");
}
/**
@@ -615,11 +611,9 @@
*/
private List<Control> createControls(String cookie) throws DirectoryException
{
- ExternalChangelogRequestControl control =
- new ExternalChangelogRequestControl(true,
- new MultiDomainServerState(cookie));
- List<Control> controls = new ArrayList<Control>(1);
- controls.add(control);
+ final MultiDomainServerState state = new MultiDomainServerState(cookie);
+ final List<Control> controls = new ArrayList<Control>(1);
+ controls.add(new ExternalChangelogRequestControl(true, state));
return controls;
}
@@ -633,7 +627,7 @@
return new LDIFWriter(exportConfig);
}
- // Add an entry in the database
+ /** Add an entry in the database */
private void addEntry(Entry entry) throws Exception
{
AddOperationBasis addOp = new AddOperationBasis(connection,
@@ -695,46 +689,22 @@
domain2.start();
sleep(1000);
- Entry e = createEntry(baseDn2);
- addEntry(e);
+ addEntry(createEntry(baseDn2));
+ sleep(2000);
// Search on ECL from start on all suffixes
String cookie = "";
- ExternalChangelogRequestControl control =
- new ExternalChangelogRequestControl(true,
- new MultiDomainServerState(cookie));
- List<Control> controls = new ArrayList<Control>(0);
- controls.add(control);
- Set<String> attributes = new LinkedHashSet<String>();
- attributes.add("+");
- attributes.add("*");
+ InternalSearchOperation searchOp =
+ searchOnCookieChangelog("(targetDN=*)", cookie, tn, SUCCESS);
- debugInfo(tn, "Search with cookie=" + cookie);
- sleep(2000);
- InternalSearchOperation searchOp = connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode("(targetDN=*)"),
- attributes,
- controls,
- null);
-
- // Expect SUCCESS and root entry returned
- waitOpResult(searchOp, ResultCode.SUCCESS);
-
+ // Expect root entry returned
List<SearchResultEntry> entries = searchOp.getSearchEntries();
assertEquals(entries.size(),2, "Entries number returned by search");
assertTrue(entries != null);
if (entries != null)
{
- int i = 0;
for (SearchResultEntry resultEntry : entries)
{
- i++;
// Expect
debugInfo(tn, "Entry returned when test2 is public =" +
resultEntry.toLDIFString());
@@ -752,22 +722,9 @@
domainConf.setExternalChangelogDomain(eclCfg);
domain2.applyConfigurationChange(domainConf);
- debugInfo(tn, "Search with cookie=" + cookie);
- searchOp = connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode("(targetDN=*)"),
- attributes,
- controls,
- null);
+ searchOp = searchOnCookieChangelog("(targetDN=*)", cookie, tn, SUCCESS);
- // Expect success and only entry from o=test returned
- waitOpResult(searchOp, ResultCode.SUCCESS);
-
+ // Expect only entry from o=test returned
entries = searchOp.getSearchEntries();
assertTrue(entries != null, "Entries returned when test2 is ECL disabled.");
assertTrue(entries.size()==1, "#Entry="+entries.size()+"when expected is 1");
@@ -844,56 +801,27 @@
long time = TimeThread.getTime();
int ts = 1;
ChangeNumber cn = new ChangeNumber(time, ts++, s1test.getServerId());
- DeleteMsg delMsg =
- new DeleteMsg("uid="+tn+"1," + TEST_ROOT_DN_STRING, cn, tn+"uuid1");
- s1test.publish(delMsg);
- debugInfo(tn, " publishes " + delMsg.getChangeNumber());
+ publishDeleteMsgInOTest(s1test, cn, tn, 1);
cn = new ChangeNumber(time++, ts++, s2test2.getServerId());
- delMsg =
- new DeleteMsg("uid="+tn+"2," + TEST_ROOT_DN_STRING2, cn, tn+"uuid2");
- s2test2.publish(delMsg);
- debugInfo(tn, " publishes " + delMsg.getChangeNumber());
+ publishDeleteMsgInOTest(s2test2, cn, tn, 2);
ChangeNumber cn3 = new ChangeNumber(time++, ts++, s2test2.getServerId());
- delMsg =
- new DeleteMsg("uid="+tn+"3," + TEST_ROOT_DN_STRING2, cn3, tn+"uuid3");
- s2test2.publish(delMsg);
- debugInfo(tn, " publishes " + delMsg.getChangeNumber());
+ publishDeleteMsgInOTest(s2test2, cn3, tn, 3);
cn = new ChangeNumber(time++, ts++, s1test.getServerId());
- delMsg =
- new DeleteMsg("uid="+tn+"4," + TEST_ROOT_DN_STRING, cn, tn+"uuid4");
- s1test.publish(delMsg);
- debugInfo(tn, " publishes " + delMsg.getChangeNumber());
+ publishDeleteMsgInOTest(s1test, cn, tn, 4);
sleep(1500);
// Changes are :
// s1 s2
// o=test msg1/msg4
// o=test2 msg2/msg2
- String cookie= "";
// search on 'cn=changelog'
- Set<String> attributes = new LinkedHashSet<String>();
- attributes.add("+");
- attributes.add("*");
-
- debugInfo(tn, "Search with cookie=" + cookie + "\"");
+ String cookie = "";
InternalSearchOperation searchOp =
- connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode("(targetDN=*"+tn+"*)"),
- attributes,
- createControls(cookie),
- null);
-
- waitOpResult(searchOp, ResultCode.SUCCESS);
+ searchOnCookieChangelog("(targetDN=*" + tn + "*)", cookie, tn, SUCCESS);
cookie="";
List<SearchResultEntry> entries = searchOp.getSearchEntries();
@@ -916,57 +844,16 @@
assertEquals(searchOp.getSearchEntries().size(), 4);
// Now start from last cookie and expect to get ONLY the 4th change
- attributes = new LinkedHashSet<String>();
- attributes.add("+");
- attributes.add("*");
+ searchOp = searchOnCookieChangelog("(targetDN=*" + tn + "*)", cookie, tn, SUCCESS);
- ExternalChangelogRequestControl control =
- new ExternalChangelogRequestControl(true,
- new MultiDomainServerState(cookie));
- List<Control> controls = new ArrayList<Control>(0);
- controls.add(control);
-
- debugInfo(tn, "Search with cookie=" + cookie);
- searchOp = connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode("(targetDN=*"+tn+"*)"),
- attributes,
- controls,
- null);
-
- // We expect SUCCESS and the 4th change
- waitOpResult(searchOp, ResultCode.SUCCESS);
- entries = searchOp.getSearchEntries();
- cookie="";
- if (entries != null)
- {
- for (SearchResultEntry entry : entries)
- {
- debugInfo(tn, "Result entry=\n" + entry.toLDIFString());
- ldifWriter.writeEntry(entry);
- try
- {
- // Store the cookie returned with the 4rd ECL entry returned to use
- // it in the test below.
- cookie =
- entry.getAttribute("changelogcookie").get(0).iterator().next().toString();
- }
- catch(NullPointerException e)
- {}
- }
- }
+ // We expect the 4th change
+ cookie = "";
+ cookie = getCookie(tn, ldifWriter, cookie, searchOp.getSearchEntries());
assertEquals(searchOp.getSearchEntries().size(), 1);
// Now publishes a new change and search from the previous cookie
ChangeNumber cn5 = new ChangeNumber(time++, ts++, s1test.getServerId());
- delMsg =
- new DeleteMsg("uid="+tn+"5," + TEST_ROOT_DN_STRING, cn5, tn+"uuid5");
- s1test.publish(delMsg);
+ publishDeleteMsgInOTest(s1test, cn5, tn, 5);
sleep(500);
// Changes are :
@@ -974,85 +861,13 @@
// o=test msg1,msg5 msg4
// o=test2 msg3 msg2
- control =
- new ExternalChangelogRequestControl(true,
- new MultiDomainServerState(cookie));
- controls = new ArrayList<Control>(0);
- controls.add(control);
-
- debugInfo(tn, "Search with cookie=" + cookie + "\"");
- searchOp = connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode("(targetDN=*"+tn+"*)"),
- attributes,
- controls,
- null);
-
- waitOpResult(searchOp, ResultCode.SUCCESS);
- entries = searchOp.getSearchEntries();
- if (entries != null)
- {
- for (SearchResultEntry resultEntry : entries)
- {
- debugInfo(tn, "Result entry=\n" + resultEntry.toLDIFString());
- ldifWriter.writeEntry(resultEntry);
- try
- {
- cookie =
- resultEntry.getAttribute("changelogcookie").get(0).iterator().next().toString();
- }
- catch(NullPointerException e)
- {}
- }
- }
+ searchOp = searchOnCookieChangelog("(targetDN=*" + tn + "*)", cookie, tn, SUCCESS);
+ cookie = getCookie(tn, ldifWriter, cookie, searchOp.getSearchEntries());
assertEquals(searchOp.getSearchEntries().size(), 1);
cookie="";
-
- control =
- new ExternalChangelogRequestControl(true,
- new MultiDomainServerState(cookie));
- controls = new ArrayList<Control>(0);
- controls.add(control);
-
- debugInfo(tn, "Search with cookie=" + cookie + "\" and filter on domain=" +
- "(targetDN=*direct*,o=test)");
- searchOp = connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode("(targetDN=*"+tn+"*,o=test)"),
- attributes,
- controls,
- null);
-
-
- waitOpResult(searchOp, ResultCode.SUCCESS);
-
- entries = searchOp.getSearchEntries();
- if (entries != null)
- {
- for (SearchResultEntry resultEntry : entries)
- {
- debugInfo(tn, "Result entry=\n" + resultEntry.toLDIFString());
- ldifWriter.writeEntry(resultEntry);
- try
- {
- cookie =
- resultEntry.getAttribute("changelogcookie").get(0).iterator().next().toString();
- }
- catch(NullPointerException e)
- {}
- }
- }
+ searchOp = searchOnCookieChangelog("(targetDN=*" + tn + "*,o=test)", tn, cookie, SUCCESS);
+ cookie = getCookie(tn, ldifWriter, cookie, searchOp.getSearchEntries());
// we expect msg1 + msg4 + msg5
assertEquals(searchOp.getSearchEntries().size(), 3);
@@ -1073,24 +888,16 @@
time = TimeThread.getTime();
cn = new ChangeNumber(time++, ts++, s1test2.getServerId());
- delMsg =
- new DeleteMsg("uid="+tn+"6," + TEST_ROOT_DN_STRING2, cn, tn+"uuid6");
- s1test2.publish(delMsg);
+ publishDeleteMsgInOTest2(s1test2, cn, tn, 6);
cn = new ChangeNumber(time++, ts++, s2test.getServerId());
- delMsg =
- new DeleteMsg("uid="+tn+"7," + TEST_ROOT_DN_STRING, cn, tn+"uuid7");
- s2test.publish(delMsg);
+ publishDeleteMsgInOTest(s2test, cn, tn, 7);
ChangeNumber cn8 = new ChangeNumber(time++, ts++, s1test2.getServerId());
- delMsg =
- new DeleteMsg("uid="+tn+"8," + TEST_ROOT_DN_STRING2, cn8, tn+"uuid8");
- s1test2.publish(delMsg);
+ publishDeleteMsgInOTest2(s1test2, cn8, tn, 8);
ChangeNumber cn9 = new ChangeNumber(time++, ts++, s2test.getServerId());
- delMsg =
- new DeleteMsg("uid="+tn+"9," + TEST_ROOT_DN_STRING, cn9, tn+"uuid9");
- s2test.publish(delMsg);
+ publishDeleteMsgInOTest(s2test, cn9, tn, 9);
sleep(500);
ReplicationServerDomain rsd =
@@ -1120,26 +927,10 @@
// Test invalid cookie
cookie += ";o=test6:";
-
- control =
- new ExternalChangelogRequestControl(true,
- new MultiDomainServerState(cookie));
- controls = new ArrayList<Control>(0);
- controls.add(control);
debugInfo(tn, "Search with bad domain in cookie=" + cookie);
- searchOp = connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode("(targetDN=*"+tn+"*,o=test)"),
- attributes,
- controls,
- null);
-
- waitOpResult(searchOp, ResultCode.PROTOCOL_ERROR);
+ searchOp =
+ searchOnCookieChangelog("(targetDN=*" + tn + "*,o=test)", cookie, tn,
+ PROTOCOL_ERROR);
assertEquals(searchOp.getSearchEntries().size(), 0);
assertTrue(searchOp.getErrorMessage().toString().equals(
ERR_INVALID_COOKIE_SYNTAX.get().toString()),
@@ -1150,49 +941,18 @@
// (how to remove a domain from a RS topology ?)
// let's do a very quick test here.
String newCookie = lastCookie + "o=test6:";
-
- control =
- new ExternalChangelogRequestControl(true,
- new MultiDomainServerState(newCookie));
- controls = new ArrayList<Control>(0);
- controls.add(control);
debugInfo(tn, "Search with bad domain in cookie=" + cookie);
- searchOp = connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode("(targetDN=*"+tn+"*,o=test)"),
- attributes,
- controls,
- null);
-
- waitOpResult(searchOp, ResultCode.UNWILLING_TO_PERFORM);
+ searchOp =
+ searchOnCookieChangelog("(targetDN=*" + tn + "*,o=test)", newCookie,
+ tn, UNWILLING_TO_PERFORM);
assertEquals(searchOp.getSearchEntries().size(), 0);
// Test missing domain in provided cookie
newCookie = lastCookie.substring(lastCookie.indexOf(';')+1);
- control =
- new ExternalChangelogRequestControl(true,
- new MultiDomainServerState(newCookie));
- controls = new ArrayList<Control>(0);
- controls.add(control);
debugInfo(tn, "Search with bad domain in cookie=" + cookie);
- searchOp = connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode("(targetDN=*"+tn+"*,o=test)"),
- attributes,
- controls,
- null);
-
- waitOpResult(searchOp, ResultCode.UNWILLING_TO_PERFORM);
+ searchOp =
+ searchOnCookieChangelog("(targetDN=*" + tn + "*,o=test)", newCookie,
+ tn, UNWILLING_TO_PERFORM);
assertEquals(searchOp.getSearchEntries().size(), 0);
String expectedError = ERR_RESYNC_REQUIRED_MISSING_DOMAIN_IN_PROVIDED_COOKIE
.get("o=test:;","<"+ newCookie + "o=test:;>").toString();
@@ -1208,6 +968,88 @@
debugInfo(tn, "Ending test successfully");
}
+ private String getCookie(String tn, LDIFWriter ldifWriter, String cookie,
+ List<SearchResultEntry> entries) throws Exception
+ {
+ if (entries != null)
+ {
+ for (SearchResultEntry entry : entries)
+ {
+ debugInfo(tn, "Result entry=\n" + entry.toLDIFString());
+ ldifWriter.writeEntry(entry);
+ try
+ {
+ // Store the cookie returned with the 4rd ECL entry returned to use
+ // it in the test below.
+ cookie =
+ entry.getAttribute("changelogcookie").get(0).iterator().next().toString();
+ }
+ catch(NullPointerException e)
+ {}
+ }
+ }
+ return cookie;
+ }
+
+ private void publishDeleteMsgInOTest(ReplicationBroker broker,
+ ChangeNumber cn, String tn, int i)
+ {
+ publishDeleteMsg(broker, cn, tn, i, TEST_ROOT_DN_STRING);
+ }
+
+ private void publishDeleteMsgInOTest2(ReplicationBroker broker,
+ ChangeNumber cn, String tn, int i)
+ {
+ publishDeleteMsg(broker, cn, tn, i, TEST_ROOT_DN_STRING2);
+ }
+
+ private void publishDeleteMsg(ReplicationBroker broker, ChangeNumber cn,
+ String tn, int i, String baseDn)
+ {
+ String dn = "uid=" + tn + i + "," + baseDn;
+ DeleteMsg delMsg = new DeleteMsg(dn, cn, tn + "uuid" + i);
+ broker.publish(delMsg);
+ debugInfo(tn, " publishes " + delMsg.getChangeNumber());
+ }
+
+ private InternalSearchOperation searchOnCookieChangelog(String filterString,
+ String cookie, String testName, ResultCode expectedResultCode)
+ throws Exception
+ {
+ debugInfo(testName, "Search with cookie=[" + cookie + "] filter=["
+ + filterString + "]");
+ InternalSearchOperation searchOp =
+ searchOnChangelog(filterString, ALL_ATTRIBUTES, createControls(cookie));
+ waitOpResult(searchOp, expectedResultCode);
+ return searchOp;
+ }
+
+ private InternalSearchOperation searchOnChangelog(String filterString,
+ String testName, ResultCode expectedResultCode) throws Exception
+ {
+ debugInfo(testName, " Search: " + filterString);
+ InternalSearchOperation searchOp =
+ searchOnChangelog(filterString, ALL_ATTRIBUTES, NO_CONTROL);
+ waitOpResult(searchOp, expectedResultCode);
+ return searchOp;
+ }
+
+ private InternalSearchOperation searchOnChangelog(String filterString,
+ Set<String> attributes, List<Control> controls) throws LDAPException
+ {
+ return connection.processSearch(
+ ByteString.valueOf("cn=changelog"),
+ SearchScope.WHOLE_SUBTREE,
+ DereferencePolicy.NEVER_DEREF_ALIASES,
+ 0, // Size limit
+ 0, // Time limit
+ false, // Types only
+ LDAPFilter.decode(filterString),
+ attributes,
+ controls,
+ null);
+ }
+
//=======================================================
// Test ECL content after replication changelogdb triming
private void ECLAfterChangelogTrim() throws Exception
@@ -1233,10 +1075,7 @@
ChangeNumber cn1 = new ChangeNumber(TimeThread.getTime(), ts++, 1201);
- DeleteMsg delMsg =
- new DeleteMsg("uid="+tn+"1," + TEST_ROOT_DN_STRING, cn1, tn+"uuid1");
- server01.publish(delMsg);
- debugInfo(tn, " publishes " + delMsg.getChangeNumber());
+ publishDeleteMsgInOTest(server01, cn1, tn, 1);
Thread.sleep(1000);
@@ -1245,16 +1084,10 @@
debugInfo(tn, "Store cookie not empty=\"" + cookieNotEmpty + "\"");
cn1 = new ChangeNumber(TimeThread.getTime(), ts++, 1201);
- delMsg =
- new DeleteMsg("uid="+tn+"2," + TEST_ROOT_DN_STRING, cn1, tn+"uuid2");
- server01.publish(delMsg);
- debugInfo(tn, " publishes " + delMsg.getChangeNumber());
+ publishDeleteMsgInOTest(server01, cn1, tn, 2);
cn1 = new ChangeNumber(TimeThread.getTime(), ts++, 1201);
- delMsg =
- new DeleteMsg("uid="+tn+"3," + TEST_ROOT_DN_STRING, cn1, tn+"uuid3");
- server01.publish(delMsg);
- debugInfo(tn, " publishes " + delMsg.getChangeNumber());
+ publishDeleteMsgInOTest(server01, cn1, tn, 3);
// Sleep longer than this delay - the changelog will be trimmed
Thread.sleep(1000);
@@ -1275,29 +1108,9 @@
// ---
// 3. Assert that a request with an empty cookie returns nothing
String cookie= "";
-
- // search on 'cn=changelog'
- Set<String> attributes = new LinkedHashSet<String>();
- attributes.add("+");
- attributes.add("*");
-
- debugInfo(tn, "1. Search with cookie=" + cookie + "\"");
InternalSearchOperation searchOp =
- connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode("(targetDN=*)"),
- attributes,
- createControls(cookie),
- null);
+ searchOnCookieChangelog("(targetDN=*)", cookie, tn, SUCCESS);
- waitOpResult(searchOp, ResultCode.SUCCESS);
-
- cookie="";
List<SearchResultEntry> entries = searchOp.getSearchEntries();
if (entries != null)
{
@@ -1314,20 +1127,8 @@
// 4. Assert that a request with the current last cookie returns nothing
cookie = readLastCookie();
debugInfo(tn, "2. Search with last cookie=" + cookie + "\"");
- searchOp =
- connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode("(targetDN=*)"),
- attributes,
- createControls(cookie),
- null);
+ searchOp = searchOnCookieChangelog("(targetDN=*)", tn, cookie, SUCCESS);
- waitOpResult(searchOp, ResultCode.SUCCESS);
entries = searchOp.getSearchEntries();
if (entries != null)
{
@@ -1347,32 +1148,11 @@
// returns the appropriate error.
cn1 = new ChangeNumber(TimeThread.getTime(), ts++, 1201);
- delMsg =
- new DeleteMsg("uid="+tn+"1," + TEST_ROOT_DN_STRING, cn1, tn+"uuid1");
- server01.publish(delMsg);
- debugInfo(tn, " publishes " + delMsg.getChangeNumber());
+ publishDeleteMsgInOTest(server01, cn1, tn, 1);
- attributes = new LinkedHashSet<String>();
- attributes.add("+");
- attributes.add("*");
-
- debugInfo(tn, "3. Search with cookie=\"" + cookieNotEmpty + "\"");
debugInfo(tn, "d1 trimdate" + d1.getStartState());
debugInfo(tn, "d2 trimdate" + d2.getStartState());
- searchOp =
- connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode("(targetDN=*)"),
- attributes,
- createControls(cookieNotEmpty),
- null);
-
- waitOpResult(searchOp, ResultCode.UNWILLING_TO_PERFORM);
+ searchOp = searchOnCookieChangelog("(targetDN=*)", cookieNotEmpty, tn, UNWILLING_TO_PERFORM);
assertEquals(searchOp.getSearchEntries().size(), 0);
assertTrue(searchOp.getErrorMessage().toString().startsWith(
ERR_RESYNC_REQUIRED_TOO_OLD_DOMAIN_IN_PROVIDED_COOKIE.get("o=test")
@@ -1404,21 +1184,7 @@
lastcookieattribute.add("lastExternalChangelogCookie");
{
- // Root DSE
- InternalSearchOperation searchOp =
- connection.processSearch(
- ByteString.valueOf(""),
- SearchScope.BASE_OBJECT,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode("(objectclass=*)"),
- lastcookieattribute,
- NO_CONTROL,
- null);
-
- waitOpResult(searchOp, ResultCode.SUCCESS);
+ InternalSearchOperation searchOp = searchOnRootDSE(lastcookieattribute);
List<SearchResultEntry> entries = searchOp.getSearchEntries();
if (entries != null)
{
@@ -1466,10 +1232,7 @@
// Publish DEL
ChangeNumber cn1 = new ChangeNumber(TimeThread.getTime(), ts++, 1201);
- DeleteMsg delMsg =
- new DeleteMsg("uid="+tn+"1," + TEST_ROOT_DN_STRING, cn1, tn+"uuid1");
- server01.publish(delMsg);
- debugInfo(tn, " publishes " + delMsg.getChangeNumber());
+ publishDeleteMsgInOTest(server01, cn1, tn, 1);
// Publish ADD
ChangeNumber cn2 = new ChangeNumber(TimeThread.getTime(), ts++, 1201);
@@ -1525,35 +1288,9 @@
sleep(1000);
String cookie= "";
-
- // search on 'cn=changelog'
- Set<String> attributes = new LinkedHashSet<String>();
- attributes.add("+");
- attributes.add("*");
-
- ExternalChangelogRequestControl control =
- new ExternalChangelogRequestControl(true,
- new MultiDomainServerState());
- List<Control> controls = new ArrayList<Control>(0);
- controls.add(control);
-
- debugInfo(tn, "Search with cookie=" + cookie + "\" filter=" +
- "(targetdn=*"+tn+"*,o=test)");
InternalSearchOperation searchOp =
- connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode("(targetdn=*"+tn+"*,o=test)"),
- attributes,
- controls,
- null);
+ searchOnCookieChangelog("(targetdn=*" + tn + "*,o=test)", cookie, tn, SUCCESS);
- // test success
- waitOpResult(searchOp, ResultCode.SUCCESS);
// test 4 entries returned
String cookie1 = "o=test:" + cn1 + ";";
String cookie2 = "o=test:" + cn2 + ";";
@@ -1798,7 +1535,7 @@
Socket s =null;
// create stats
- for (ConnectionHandler ch : DirectoryServer.getConnectionHandlers())
+ for (ConnectionHandler<?> ch : DirectoryServer.getConnectionHandlers())
{
if (ch instanceof LDAPConnectionHandler)
{
@@ -2080,7 +1817,7 @@
boolean changesOnly = false;
// create stats
- for (ConnectionHandler ch : DirectoryServer.getConnectionHandlers())
+ for (ConnectionHandler<?> ch : DirectoryServer.getConnectionHandlers())
{
if (ch instanceof LDAPConnectionHandler)
{
@@ -2161,9 +1898,7 @@
changeTypes, changesOnly, returnECs);
controls.add(persSearchControl);
- Set<String> attributes = new LinkedHashSet<String>();
- attributes.add("+");
- attributes.add("*");
+ final Set<String> attributes = ALL_ATTRIBUTES;
// Creates request 1
SearchRequestProtocolOp searchRequest1 =
@@ -2607,14 +2342,12 @@
* Utility - log debug message - highlight it is from the test and not
* from the server code. Makes easier to observe the test steps.
*/
- private void debugInfo(String tn, String s)
+ private void debugInfo(String testName, String message)
{
if (debugEnabled())
{
- TRACER.debugInfo("** TEST " + tn + " ** " + s);
+ TRACER.debugInfo("** TEST " + testName + " ** " + message);
}
- // logError(Message.raw(Category.SYNC, Severity.NOTICE,
- // "** TEST " + tn + " ** " + s));
}
/**
@@ -2699,28 +2432,16 @@
long time = TimeThread.getTime();
int ts = 1;
ChangeNumber cn = new ChangeNumber(time, ts++, s1test.getServerId());
- DeleteMsg delMsg =
- new DeleteMsg("uid="+tn+"1," + TEST_ROOT_DN_STRING, cn, tn+"uuid1");
- s1test.publish(delMsg);
- debugInfo(tn, " publishes " + delMsg.getChangeNumber());
+ publishDeleteMsgInOTest(s1test, cn, tn, 1);
cn = new ChangeNumber(time++, ts++, s2test2.getServerId());
- delMsg =
- new DeleteMsg("uid="+tn+"2," + TEST_ROOT_DN_STRING2, cn, tn+"uuid2");
- s2test2.publish(delMsg);
- debugInfo(tn, " publishes " + delMsg.getChangeNumber());
+ publishDeleteMsgInOTest(s2test2, cn, tn, 2);
ChangeNumber cn3 = new ChangeNumber(time++, ts++, s2test2.getServerId());
- delMsg =
- new DeleteMsg("uid="+tn+"3," + TEST_ROOT_DN_STRING2, cn3, tn+"uuid3");
- s2test2.publish(delMsg);
- debugInfo(tn, " publishes " + delMsg.getChangeNumber());
+ publishDeleteMsgInOTest(s2test2, cn3, tn, 3);
cn = new ChangeNumber(time++, ts++, s1test.getServerId());
- delMsg =
- new DeleteMsg("uid="+tn+"4," + TEST_ROOT_DN_STRING, cn, tn+"uuid4");
- s1test.publish(delMsg);
- debugInfo(tn, " publishes " + delMsg.getChangeNumber());
+ publishDeleteMsgInOTest(s1test, cn, tn, 4);
sleep(500);
// --
@@ -2738,24 +2459,16 @@
// Test startState ("first cookie") of the ECL
time = TimeThread.getTime();
cn = new ChangeNumber(time++, ts++, s1test2.getServerId());
- delMsg =
- new DeleteMsg("uid="+tn+"6," + TEST_ROOT_DN_STRING2, cn, tn+"uuid6");
- s1test2.publish(delMsg);
+ publishDeleteMsgInOTest2(s1test2, cn, tn, 6);
cn = new ChangeNumber(time++, ts++, s2test.getServerId());
- delMsg =
- new DeleteMsg("uid="+tn+"7," + TEST_ROOT_DN_STRING, cn, tn+"uuid7");
- s2test.publish(delMsg);
+ publishDeleteMsgInOTest(s2test, cn, tn, 7);
ChangeNumber cn8 = new ChangeNumber(time++, ts++, s1test2.getServerId());
- delMsg =
- new DeleteMsg("uid="+tn+"8," + TEST_ROOT_DN_STRING2, cn8, tn+"uuid8");
- s1test2.publish(delMsg);
+ publishDeleteMsgInOTest2(s1test2, cn8, tn, 8);
ChangeNumber cn9 = new ChangeNumber(time++, ts++, s2test.getServerId());
- delMsg =
- new DeleteMsg("uid="+tn+"9," + TEST_ROOT_DN_STRING, cn9, tn+"uuid9");
- s2test.publish(delMsg);
+ publishDeleteMsgInOTest(s2test, cn9, tn, 9);
sleep(500);
ReplicationServerDomain rsd1 =
@@ -2894,26 +2607,8 @@
debugInfo(tn, " publishes " + modDNMsg.getChangeNumber());
sleep(1000);
- // search on 'cn=changelog'
- Set<String> attributes = new LinkedHashSet<String>();
- attributes.add("+");
- attributes.add("*");
-
String filter = "(targetdn=*"+tn.toLowerCase()+"*,o=test)";
- debugInfo(tn, " Search: " + filter);
- InternalSearchOperation searchOp =
- connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode(filter),
- attributes,
- NO_CONTROL,
- null);
- waitOpResult(searchOp, ResultCode.SUCCESS);
+ InternalSearchOperation searchOp = searchOnChangelog(filter, tn, SUCCESS);
// test 4 entries returned
List<SearchResultEntry> entries = searchOp.getSearchEntries();
@@ -2929,20 +2624,7 @@
// Test with filter on draft changenumber
filter = "(&(targetdn=*"+tn.toLowerCase()+"*,o=test)(&(changenumber>="+
firstDraftChangeNumber+")(changenumber<="+(firstDraftChangeNumber+3)+")))";
- debugInfo(tn, " Search: " + filter);
- searchOp =
- connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode(filter),
- attributes,
- NO_CONTROL,
- null);
- waitOpResult(searchOp, ResultCode.SUCCESS);
+ searchOp = searchOnChangelog(filter, tn, SUCCESS);
entries = searchOp.getSearchEntries();
@@ -3050,25 +2732,8 @@
String user1entryUUID = "11111111-1112-1113-1114-111111111115";
- Set<String> attributes = new LinkedHashSet<String>();
- attributes.add("+");
- attributes.add("*");
-
String filter = "(changenumber="+firstDraftChangeNumber+")";
- debugInfo(tn, " Search: " + filter);
- InternalSearchOperation searchOp =
- connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode(filter),
- attributes,
- NO_CONTROL,
- null);
- waitOpResult(searchOp, ResultCode.SUCCESS);
+ InternalSearchOperation searchOp = searchOnChangelog(filter, tn, SUCCESS);
List<SearchResultEntry> entries = searchOp.getSearchEntries();
assertEquals(searchOp.getSearchEntries().size(), 1);
@@ -3110,25 +2775,8 @@
100, replicationServerPort,
brokerSessionTimeout, true);
- Set<String> attributes = new LinkedHashSet<String>();
- attributes.add("+");
- attributes.add("*");
-
String filter = "(changenumber="+firstDraftChangeNumber+")";
- debugInfo(tn, " Search: " + filter);
- InternalSearchOperation searchOp =
- connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode(filter),
- attributes,
- NO_CONTROL,
- null);
- waitOpResult(searchOp, ResultCode.SUCCESS);
+ InternalSearchOperation searchOp = searchOnChangelog(filter, tn, SUCCESS);
List<SearchResultEntry> entries = searchOp.getSearchEntries();
assertEquals(searchOp.getSearchEntries().size(), 1);
@@ -3161,26 +2809,8 @@
debugInfo(tn, "Starting test\n\n");
{
- // search on 'cn=changelog'
- Set<String> attributes = new LinkedHashSet<String>();
- attributes.add("+");
- attributes.add("*");
-
String filter = "(&(changenumber>="+firstDraftChangeNumber+")(changenumber<="+lastDraftChangeNumber+"))";
- debugInfo(tn, " Search: " + filter);
- InternalSearchOperation searchOp =
- connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode(filter),
- attributes,
- NO_CONTROL,
- null);
- waitOpResult(searchOp, ResultCode.SUCCESS);
+ InternalSearchOperation searchOp = searchOnChangelog(filter, tn, SUCCESS);
assertEquals(searchOp.getSearchEntries().size(),
lastDraftChangeNumber-firstDraftChangeNumber+1);
if (searchOp.getSearchEntries() != null)
@@ -3202,29 +2832,10 @@
String tn = "ECLCompatBadSeqnum";
debugInfo(tn, "Starting test\n\n");
- {
- // search on 'cn=changelog'
- Set<String> attributes = new LinkedHashSet<String>();
- attributes.add("+");
- attributes.add("*");
+ String filter = "(changenumber=1000)";
+ InternalSearchOperation searchOp = searchOnChangelog(filter, tn, SUCCESS);
+ assertEquals(searchOp.getSearchEntries().size(), 0);
- String filter = "(changenumber=1000)";
- debugInfo(tn, " Search: " + filter);
- InternalSearchOperation searchOp =
- connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode(filter),
- attributes,
- NO_CONTROL,
- null);
- waitOpResult(searchOp, ResultCode.SUCCESS);
- assertEquals(searchOp.getSearchEntries().size(), 0);
- }
debugInfo(tn, "Ending test with success");
}
@@ -3239,26 +2850,8 @@
{
LDIFWriter ldifWriter = getLDIFWriter();
- // search on 'cn=changelog'
- Set<String> attributes = new LinkedHashSet<String>();
- attributes.add("+");
- attributes.add("*");
-
String filter = "(replicationcsn="+this.gblCN+")";
- debugInfo(tn, " Search: " + filter);
- InternalSearchOperation searchOp =
- connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode(filter),
- attributes,
- NO_CONTROL,
- null);
- waitOpResult(searchOp, ResultCode.SUCCESS);
+ InternalSearchOperation searchOp = searchOnChangelog(filter, tn, SUCCESS);
assertEquals(searchOp.getSearchEntries().size(), 1);
List<SearchResultEntry> entries = searchOp.getSearchEntries();
@@ -3289,31 +2882,16 @@
debugInfo(tn, "Starting test\n\n");
{
- StartECLSessionMsg startCLmsg = new StartECLSessionMsg();
-
DN baseDN = DN.decode("cn=changelog");
- //
- ECLSearchOperation.evaluateSearchParameters(startCLmsg,
- baseDN, SearchFilter.createFilterFromString("(objectclass=*)"));
- assertEquals(startCLmsg.getFirstDraftChangeNumber(),-1);
- assertEquals(startCLmsg.getLastDraftChangeNumber(),-1);
-
- //
- ECLSearchOperation.evaluateSearchParameters(startCLmsg,
- baseDN, SearchFilter.createFilterFromString("(changenumber>=2)"));
- assertEquals(startCLmsg.getFirstDraftChangeNumber(),2);
- assertEquals(startCLmsg.getLastDraftChangeNumber(),-1);
-
- //
- ECLSearchOperation.evaluateSearchParameters(startCLmsg,
- baseDN, SearchFilter.createFilterFromString("(&(changenumber>=2)(changenumber<=5))"));
- assertEquals(startCLmsg.getFirstDraftChangeNumber(),2);
- assertEquals(startCLmsg.getLastDraftChangeNumber(),5);
+ evaluateSearchParameters(baseDN, -1, -1, "(objectclass=*)");
+ evaluateSearchParameters(baseDN, 2, -1, "(changenumber>=2)");
+ evaluateSearchParameters(baseDN, 2, 5, "(&(changenumber>=2)(changenumber<=5))");
//
try
{
+ final StartECLSessionMsg startCLmsg = new StartECLSessionMsg();
ECLSearchOperation.evaluateSearchParameters(startCLmsg,
baseDN, SearchFilter.createFilterFromString("(&(changenumber>=2)(changenumber<+5))"));
assertTrue(startCLmsg.getFirstDraftChangeNumber()==1);
@@ -3322,56 +2900,46 @@
{
}
- //
- ECLSearchOperation.evaluateSearchParameters(startCLmsg,
- baseDN, SearchFilter.createFilterFromString("(&(dc=x)(&(changenumber>=2)(changenumber<=5)))"));
- assertEquals(startCLmsg.getFirstDraftChangeNumber(),2);
- assertEquals(startCLmsg.getLastDraftChangeNumber(),5);
-
- ECLSearchOperation.evaluateSearchParameters(startCLmsg,
- baseDN, SearchFilter.createFilterFromString("(&(&(changenumber>=3)(changenumber<=4))(&(|(dc=y)(dc=x))(&(changenumber>=2)(changenumber<=5))))"));
- assertEquals(startCLmsg.getFirstDraftChangeNumber(),3);
- assertEquals(startCLmsg.getLastDraftChangeNumber(),4);
-
- //
- ECLSearchOperation.evaluateSearchParameters(startCLmsg,
- baseDN, SearchFilter.createFilterFromString("(|(objectclass=*)(&(changenumber>=2)(changenumber<=5)))"));
- assertEquals(startCLmsg.getFirstDraftChangeNumber(),-1);
- assertEquals(startCLmsg.getLastDraftChangeNumber(),-1);
-
- //
- ECLSearchOperation.evaluateSearchParameters(startCLmsg,
- baseDN, SearchFilter.createFilterFromString("(changenumber=8)"));
- assertEquals(startCLmsg.getFirstDraftChangeNumber(),8);
- assertEquals(startCLmsg.getLastDraftChangeNumber(),8);
+ evaluateSearchParameters(baseDN, 2, 5,
+ "(&(dc=x)(&(changenumber>=2)(changenumber<=5)))");
+ evaluateSearchParameters(baseDN, 3, 4,
+ "(&(&(changenumber>=3)(changenumber<=4))(&(|(dc=y)(dc=x))(&(changenumber>=2)(changenumber<=5))))");
+ evaluateSearchParameters(baseDN, -1, -1,
+ "(|(objectclass=*)(&(changenumber>=2)(changenumber<=5)))");
+ evaluateSearchParameters(baseDN, 8, 8, "(changenumber=8)");
//
ChangeNumberGenerator gen = new ChangeNumberGenerator( 1, 0);
ChangeNumber changeNumber1 = gen.newChangeNumber();
- ECLSearchOperation.evaluateSearchParameters(startCLmsg,
- baseDN, SearchFilter.createFilterFromString("(replicationcsn="+changeNumber1+")"));
- assertEquals(startCLmsg.getFirstDraftChangeNumber(),-1);
- assertEquals(startCLmsg.getLastDraftChangeNumber(),-1);
+ final StartECLSessionMsg startCLmsg =
+ evaluateSearchParameters(baseDN, -1, -1,
+ "(replicationcsn=" + changeNumber1 + ")");
assertEquals(startCLmsg.getChangeNumber(), changeNumber1);
// Use change number as base object.
baseDN = DN.decode("changeNumber=8,cn=changelog");
//
- ECLSearchOperation.evaluateSearchParameters(startCLmsg,
- baseDN, SearchFilter.createFilterFromString("(objectclass=*)"));
- assertEquals(startCLmsg.getFirstDraftChangeNumber(),8);
- assertEquals(startCLmsg.getLastDraftChangeNumber(),8);
+ evaluateSearchParameters(baseDN, 8, 8, "(objectclass=*)");
// The base DN should take preference.
- ECLSearchOperation.evaluateSearchParameters(startCLmsg,
- baseDN, SearchFilter.createFilterFromString("(changenumber>=2)"));
- assertEquals(startCLmsg.getFirstDraftChangeNumber(),8);
- assertEquals(startCLmsg.getLastDraftChangeNumber(),8);
+ evaluateSearchParameters(baseDN, 8, 8, "(changenumber>=2)");
}
debugInfo(tn, "Ending test with success");
}
+ private StartECLSessionMsg evaluateSearchParameters(DN baseDN,
+ int firstDraftCN,
+ int lastDraftCN, String filterString) throws Exception
+ {
+ final StartECLSessionMsg startCLmsg = new StartECLSessionMsg();
+ ECLSearchOperation.evaluateSearchParameters(startCLmsg, baseDN,
+ SearchFilter.createFilterFromString(filterString));
+ assertEquals(startCLmsg.getFirstDraftChangeNumber(), firstDraftCN);
+ assertEquals(startCLmsg.getLastDraftChangeNumber(), lastDraftCN);
+ return startCLmsg;
+ }
+
/**
* Put a short purge delay to the draftCNDB, clear the changelogDB,
* expect the draftCNDb to be purged accordingly.
@@ -3460,21 +3028,7 @@
attributes.add("lastExternalChangelogCookie");
debugInfo(tn, " Search: rootDSE");
- InternalSearchOperation searchOp =
- connection.processSearch(
- ByteString.valueOf(""),
- SearchScope.BASE_OBJECT,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode("(objectclass=*)"),
- attributes,
- NO_CONTROL,
- null);
- waitOpResult(searchOp, ResultCode.SUCCESS);
- assertEquals(searchOp.getSearchEntries().size(), 1);
-
+ InternalSearchOperation searchOp = searchOnRootDSE(attributes);
List<SearchResultEntry> entries = searchOp.getSearchEntries();
assertEquals(searchOp.getSearchEntries().size(), 1);
if (entries != null)
@@ -3504,6 +3058,24 @@
debugInfo(tn, "Ending test with success");
}
+ private InternalSearchOperation searchOnRootDSE(Set<String> attributes)
+ throws Exception
+ {
+ final InternalSearchOperation searchOp = connection.processSearch(
+ ByteString.valueOf(""),
+ SearchScope.BASE_OBJECT,
+ DereferencePolicy.NEVER_DEREF_ALIASES,
+ 0, // Size limit
+ 0, // Time limit
+ false, // Types only
+ LDAPFilter.decode("(objectclass=*)"),
+ attributes,
+ NO_CONTROL,
+ null);
+ waitOpResult(searchOp, ResultCode.SUCCESS);
+ return searchOp;
+ }
+
private void ECLCompatTestLimitsAndAdd(int expectedFirst, int expectedLast,
int ts) throws Exception
{
@@ -3659,64 +3231,20 @@
long t2 = TimeThread.getTime();
debugInfo(tn, "Perfs - " + maxMsg + " counted in (ms):" + (t2 - t1));
- // search on 'cn=changelog'
- Set<String> attributes = new LinkedHashSet<String>();
- attributes.add("+");
- attributes.add("*");
-
String filter = "(changenumber>="+maxMsg+")";
- debugInfo(tn, " Search: " + filter);
- InternalSearchOperation searchOp =
- connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode(filter),
- attributes,
- NO_CONTROL,
- null);
- waitOpResult(searchOp, ResultCode.SUCCESS);
+ 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+")";
- debugInfo(tn, " Search: " + filter);
- searchOp =
- connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode(filter),
- attributes,
- NO_CONTROL,
- null);
- waitOpResult(searchOp, ResultCode.SUCCESS);
+ 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)+")";
- debugInfo(tn, " Search: " + filter);
- searchOp =
- connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode(filter),
- attributes,
- NO_CONTROL,
- null);
- waitOpResult(searchOp, ResultCode.SUCCESS);
+ 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));
@@ -3889,37 +3417,17 @@
getEntry(DN.decode("cn=Robert Hue2," + TEST_ROOT_DN_STRING3),5000,false);
+ sleep(1000);
+
// Search on ECL from start on all suffixes
String cookie = "";
- ExternalChangelogRequestControl control =
- new ExternalChangelogRequestControl(true,
- new MultiDomainServerState(cookie));
- List<Control> controls = new ArrayList<Control>(0);
- controls.add(control);
- Set<String> attributes = new LinkedHashSet<String>();
- attributes.add("+");
- attributes.add("*");
-
- sleep(1000);
- debugInfo(tn, "Search with cookie=" + cookie);
- InternalSearchOperation searchOp = connection.processSearch(
- ByteString.valueOf("cn=changelog"),
- SearchScope.WHOLE_SUBTREE,
- DereferencePolicy.NEVER_DEREF_ALIASES,
- 0, // Size limit
- 0, // Time limit
- false, // Types only
- LDAPFilter.decode("(targetDN=*)"),
- attributes,
- controls,
- null);
-
- waitOpResult(searchOp, ResultCode.SUCCESS);
+ InternalSearchOperation searchOp =
+ searchOnCookieChangelog("(targetDN=*)", cookie, tn, SUCCESS);
List<SearchResultEntry> entries = searchOp.getSearchEntries();
+ assertTrue(entries != null);
sleep(2000);
- assertTrue(entries != null);
String s = tn + " entries returned= ";
if (entries != null)
{
--
Gitblit v1.10.0