From bb4e2b232d600f3ab74f767abb68fe1b66c6443c Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 10 Oct 2013 14:00:36 +0000
Subject: [PATCH] ExternalChangeLogTest.java: Added tests on the CSNs returned by changelog and on their order too. Removed stupid for loops. Extracted methods readCookie() and commonAssert(). Renamed: - getCookie() to assertContainsAndReadCookie() - assertEntries() to assertFourEntries() - assertDnEquals() to assertDNEquals() Added getCSNs().
---
opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java | 151 +++++++++++++++++++++++--------------------------
1 files changed, 71 insertions(+), 80 deletions(-)
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java
index 9f1ab7a..db041f4 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java
@@ -718,27 +718,14 @@
InternalSearchOperation searchOp =
searchOnCookieChangelog("(targetDN=*" + tn + "*)", cookie, tn, SUCCESS);
- cookie="";
List<SearchResultEntry> entries = searchOp.getSearchEntries();
assertThat(entries).hasSize(4);
debugAndWriteEntries(ldifWriter, entries, tn);
- int i = 0;
- for (SearchResultEntry entry : entries)
- {
- if (i++ == 2)
- {
- // Store the cookie returned with the 3rd ECL entry returned to use
- // it in the test below.
- cookie = entry.getAttribute("changelogcookie").get(0).iterator().next().toString();
- }
- }
+ cookie = readCookie(entries, 2);
// Now start from last cookie and expect to get ONLY the 4th change
searchOp = searchOnCookieChangelog("(targetDN=*" + tn + "*)", cookie, tn, SUCCESS);
-
- // We expect the 4th change
- cookie = "";
- cookie = getCookie(searchOp.getSearchEntries(), 1, tn, ldifWriter, cookie);
+ cookie = assertContainsAndReadCookie(tn, searchOp.getSearchEntries(), ldifWriter, csn4);
// Now publishes a new change and search from the previous cookie
CSN csn5 = new CSN(time, ts++, s1test.getServerId());
@@ -751,12 +738,12 @@
// o=test2 msg3 msg2
searchOp = searchOnCookieChangelog("(targetDN=*" + tn + "*)", cookie, tn, SUCCESS);
- cookie = getCookie(searchOp.getSearchEntries(), 1, tn, ldifWriter, cookie);
+ cookie = assertContainsAndReadCookie(tn, searchOp.getSearchEntries(), ldifWriter, csn5);
- cookie="";
+ cookie = "";
searchOp = searchOnCookieChangelog("(targetDN=*" + tn + "*,o=test)", cookie, tn, SUCCESS);
// we expect msg1 + msg4 + msg5
- cookie = getCookie(searchOp.getSearchEntries(), 3, tn, ldifWriter, cookie);
+ cookie = assertContainsAndReadCookie(tn, searchOp.getSearchEntries(), ldifWriter, csn1, csn4, csn5);
// Test startState ("first cookie") of the ECL
// --
@@ -838,32 +825,33 @@
debugInfo(tn, "Ending test successfully");
}
+ private String readCookie(List<SearchResultEntry> entries, int i)
+ {
+ SearchResultEntry entry = entries.get(i);
+ return entry.getAttribute("changelogcookie").get(0).iterator().next().toString();
+ }
+
private ServerState getDomainOldestState(DN baseDN)
{
return replicationServer.getReplicationServerDomain(baseDN).getOldestState();
}
- private String getCookie(List<SearchResultEntry> entries,
- int expectedNbEntries, String tn, LDIFWriter ldifWriter, String cookie)
- throws Exception
+ private String assertContainsAndReadCookie(String tn, List<SearchResultEntry> entries,
+ LDIFWriter ldifWriter, CSN... csns) throws Exception
{
- assertThat(entries).hasSize(expectedNbEntries);
+ assertThat(getCSNs(entries)).containsExactly(csns);
debugAndWriteEntries(ldifWriter, entries, tn);
+ return readCookie(entries, csns.length - 1);
+ }
+ private List<CSN> getCSNs(List<SearchResultEntry> entries)
+ {
+ List<CSN> results = new ArrayList<CSN>(entries.size());
for (SearchResultEntry entry : entries)
{
- try
- {
- // Store the cookie returned with the 4rd ECL entry returned to use
- // it in the test below.
- List<Attribute> l = entry.getAttribute("changelogcookie");
- cookie = l.get(0).iterator().next().toString();
- }
- catch (NullPointerException e)
- {
- }
+ results.add(new CSN(getAttributeValue(entry, "replicationCSN")));
}
- return cookie;
+ return results;
}
private void publishDeleteMsgInOTest(ReplicationBroker broker, CSN csn,
@@ -1295,7 +1283,7 @@
private static String getAttributeValue(Entry entry, String attrName)
{
- List<Attribute> attrs = entry.getAttribute(attrName);
+ List<Attribute> attrs = entry.getAttribute(attrName.toLowerCase());
Attribute a = attrs.iterator().next();
AttributeValue av = a.iterator().next();
return av.toString();
@@ -2307,7 +2295,7 @@
InternalSearchOperation searchOp = searchOnChangelog(filter, tn, SUCCESS);
// test 4 entries returned
- assertEntries(searchOp.getSearchEntries(), firstChangeNumber, tn,
+ assertFourEntries(searchOp.getSearchEntries(), firstChangeNumber, tn,
ldifWriter, user1entryUUID, csns);
stop(server01);
@@ -2319,7 +2307,7 @@
"(changenumber<=" + (firstChangeNumber + 3) + ")))";
searchOp = searchOnChangelog(filter, tn, SUCCESS);
- assertEntries(searchOp.getSearchEntries(), firstChangeNumber, tn,
+ assertFourEntries(searchOp.getSearchEntries(), firstChangeNumber, tn,
ldifWriter, user1entryUUID, csns);
assertEquals(searchOp.getSearchEntries().size(), csns.length);
return csns[1];
@@ -2330,62 +2318,65 @@
}
}
- private void assertEntries(List<SearchResultEntry> entries,
+ private void assertFourEntries(List<SearchResultEntry> entries,
long firstChangeNumber, String tn, LDIFWriter ldifWriter,
String user1entryUUID, CSN... csns) throws Exception
{
debugAndWriteEntries(ldifWriter, entries, tn);
assertEquals(entries.size(), 4);
- int i=0;
- for (SearchResultEntry resultEntry : entries)
- {
- i++;
+ int i = -1;
+ // check the DEL entry has the right content
+ final SearchResultEntry delEntry = entries.get(++i);
+ checkValue(delEntry, "changetype", "delete");
+ commonAssert(delEntry, user1entryUUID, firstChangeNumber, i, tn, csns[i]);
+ checkValue(delEntry, "targetuniqueid", user1entryUUID);
- assertDnEquals(resultEntry, firstChangeNumber, i - 1);
- checkValue(resultEntry, "changenumber", String.valueOf(firstChangeNumber + i - 1));
- checkValue(resultEntry, "targetentryuuid", user1entryUUID);
- checkValue(resultEntry, "replicaidentifier", String.valueOf(SERVER_ID_1));
- final CSN csn = csns[i - 1];
- checkValue(resultEntry, "replicationcsn", csn.toString());
- checkValue(resultEntry, "changelogcookie", "o=test:" + csn + ";");
- checkValue(resultEntry, "targetdn", "uid=" + tn + i + "," + TEST_ROOT_DN_STRING);
+ // check the ADD entry has the right content
+ final SearchResultEntry addEntry = entries.get(++i);
+ checkValue(addEntry, "changetype", "add");
+ commonAssert(addEntry, user1entryUUID, firstChangeNumber, i, tn, csns[i]);
+ String expectedValue1 = "objectClass: domain\nobjectClass: top\n" + "entryUUID: "
+ + user1entryUUID + "\n";
+ String expectedValue2 = "entryUUID: " + user1entryUUID + "\n"
+ + "objectClass: domain\nobjectClass: top\n";
+ checkPossibleValues(addEntry, "changes", expectedValue1, expectedValue2);
- if (i==1)
- {
- // check the DEL entry has the right content
- checkValue(resultEntry,"changetype","delete");
- checkValue(resultEntry,"targetuniqueid",user1entryUUID);
- } else if (i==2)
- {
- // check the ADD entry has the right content
- checkValue(resultEntry, "changetype", "add");
- String expectedValue1 = "objectClass: domain\nobjectClass: top\n"
- + "entryUUID: " + user1entryUUID + "\n";
- String expectedValue2 = "entryUUID: " + user1entryUUID + "\n"
- + "objectClass: domain\nobjectClass: top\n";
- checkPossibleValues(resultEntry,"changes",expectedValue1, expectedValue2);
- } else if (i==3)
- {
- // check the MOD entry has the right content
- checkValue(resultEntry, "changetype", "modify");
- final String expectedValue = "replace: description\n" + "description: new value\n-\n";
- checkValue(resultEntry,"changes",expectedValue);
- } else if (i==4)
- {
- // check the MODDN entry has the right content
- checkValue(resultEntry, "changetype", "modrdn");
- checkValue(resultEntry,"newrdn","uid="+tn+"new4");
- checkValue(resultEntry,"newsuperior",TEST_ROOT_DN_STRING2);
- checkValue(resultEntry,"deleteoldrdn","true");
- }
- }
+ // check the MOD entry has the right content
+ final SearchResultEntry modEntry = entries.get(++i);
+ checkValue(modEntry, "changetype", "modify");
+ commonAssert(modEntry, user1entryUUID, firstChangeNumber, i, tn, csns[i]);
+ final String expectedValue = "replace: description\n" + "description: new value\n-\n";
+ checkValue(modEntry, "changes", expectedValue);
+
+ // check the MODDN entry has the right content
+ final SearchResultEntry moddnEntry = entries.get(++i);
+ checkValue(moddnEntry, "changetype", "modrdn");
+ commonAssert(moddnEntry, user1entryUUID, firstChangeNumber, i, tn, csns[i]);
+ checkValue(moddnEntry, "newrdn", "uid=" + tn + "new4");
+ checkValue(moddnEntry, "newsuperior", TEST_ROOT_DN_STRING2);
+ checkValue(moddnEntry, "deleteoldrdn", "true");
}
- private void assertDnEquals(SearchResultEntry resultEntry, long changeNumber, int i)
+ private void commonAssert(SearchResultEntry resultEntry, String entryUUID,
+ long firstChangeNumber, int i, String tn, CSN csn)
+ {
+ final long changeNumber = firstChangeNumber + i;
+ final String targetDN = "uid=" + tn + (i + 1) + "," + TEST_ROOT_DN_STRING;
+
+ assertDNEquals(resultEntry, changeNumber);
+ checkValue(resultEntry, "changenumber", String.valueOf(changeNumber));
+ checkValue(resultEntry, "targetentryuuid", entryUUID);
+ checkValue(resultEntry, "replicaidentifier", String.valueOf(SERVER_ID_1));
+ checkValue(resultEntry, "replicationcsn", csn.toString());
+ checkValue(resultEntry, "changelogcookie", "o=test:" + csn + ";");
+ checkValue(resultEntry, "targetdn", targetDN);
+ }
+
+ private void assertDNEquals(SearchResultEntry resultEntry, long changeNumber)
{
String actualDN = resultEntry.getDN().toNormalizedString();
- String expectedDN = "changenumber=" + (changeNumber + i) + ",cn=changelog";
+ String expectedDN = "changenumber=" + changeNumber + ",cn=changelog";
assertThat(actualDN).isEqualToIgnoringCase(expectedDN);
}
--
Gitblit v1.10.0