From 7d9d0fb263d859f08a12262c4de6cae507561c95 Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Thu, 22 Mar 2007 16:59:32 +0000
Subject: [PATCH] Fix for issue 1370 : tests for resynchronization after import or restore are failing This was happening because in some cases the Changelog server was failing to re-send the changes to the LDAP servers.
---
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ReSyncTest.java | 10 ++++++----
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SchemaSynchronizationTest.java | 2 +-
opendj-sdk/opends/src/server/org/opends/server/synchronization/changelog/ChangelogDB.java | 16 +++++++++++++++-
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/changelog/ChangelogTest.java | 29 +++++++++++++++++++++++++++++
4 files changed, 51 insertions(+), 6 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/synchronization/changelog/ChangelogDB.java b/opendj-sdk/opends/src/server/org/opends/server/synchronization/changelog/ChangelogDB.java
index 1f9c67f..d443ddb 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/synchronization/changelog/ChangelogDB.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/synchronization/changelog/ChangelogDB.java
@@ -323,7 +323,21 @@
if (cursor.getSearchKey(key, data, LockMode.DEFAULT) !=
OperationStatus.SUCCESS)
{
- throw new Exception("ChangeNumber not available");
+ if (cursor.getSearchKeyRange(key, data, LockMode.DEFAULT) !=
+ OperationStatus.SUCCESS)
+ {
+ throw new Exception("ChangeNumber not available");
+ }
+ else
+ {
+ DatabaseEntry key = new DatabaseEntry();
+ DatabaseEntry data = new DatabaseEntry();
+ if (cursor.getPrev(key, data, LockMode.DEFAULT) !=
+ OperationStatus.SUCCESS)
+ {
+ cursor = db.openCursor(txn, null);
+ }
+ }
}
}
}
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ReSyncTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ReSyncTest.java
index 34348d6..7a1844a 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ReSyncTest.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ReSyncTest.java
@@ -116,15 +116,17 @@
+ "cn: example\n"
+ "ds-cfg-synchronization-dn: dc=example,dc=com\n"
+ "ds-cfg-changelog-server: localhost:"+ changelogPort + "\n"
- + "ds-cfg-directory-server-id: 1\n";
+ + "ds-cfg-directory-server-id: 123\n";
synchroServerEntry = TestCaseUtils.entryFromLdifString(synchroServerLdif);
configureSynchronization();
+ // Give some time to the synchronization to setup
+ Thread.sleep(1000);
+
// Create a dummy entry
addEntry("dn: dc=dummy, dc=example,dc=com\n"
+ "objectClass: top\n" + "objectClass: domain\n");
-
}
/**
@@ -153,7 +155,7 @@
/**
* Test re-synchronization after after backup/restore
*/
- @Test(enabled=false)
+ @Test(enabled=true, groups="slow")
public void testResyncAfterRestore() throws Exception
{
/*
@@ -208,7 +210,7 @@
/**
* Test re-synchronization after after backup/restore
*/
- @Test(enabled=false)
+ @Test(enabled=true, groups="slow")
public void testResyncAfterImport() throws Exception
{
/*
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SchemaSynchronizationTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SchemaSynchronizationTest.java
index 4bf3273..b20a411 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SchemaSynchronizationTest.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SchemaSynchronizationTest.java
@@ -255,7 +255,7 @@
* It causes schema tests in org.opends.server.core.AddOperationTestCase
* to fail when running the build test target.
*/
- @Test(enabled=false, dependsOnMethods = { "replaySchemaChange" })
+ @Test(enabled=true, dependsOnMethods = { "replaySchemaChange" })
public void pushSchemaFilesChange() throws Exception
{
logError(ErrorLogCategory.SYNCHRONIZATION,
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/changelog/ChangelogTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/changelog/ChangelogTest.java
index 60877b6..0b1bc2e 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/changelog/ChangelogTest.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/changelog/ChangelogTest.java
@@ -81,6 +81,8 @@
private ChangeNumber firstChangeNumberServer2 = null;
private ChangeNumber secondChangeNumberServer2 = null;
+ private ChangeNumber unknownChangeNumberServer1;
+
/**
* Before starting the tests, start the server and configure a
@@ -148,6 +150,16 @@
*/
firstChangeNumberServer2 = new ChangeNumber(time+ 1, 1, (short) 2);
secondChangeNumberServer2 = new ChangeNumber(time + 3, 2, (short) 2);
+
+ /*
+ * Create a ChangeNumber between firstChangeNumberServer1 and
+ * secondChangeNumberServer1 that will not be used to create a
+ * change sent to the changelog server but that will be used
+ * in the Server State when opening a connection to the
+ * Changelog Server to make sure that the Changelog server is
+ * able to accept such clients.
+ */
+ unknownChangeNumberServer1 = new ChangeNumber(time+1, 1, (short) 1);
/*
* Send and receive a Delete Msg from server 1 to server 2
@@ -308,6 +320,23 @@
newClientWithChanges(state, secondChangeNumberServer1);
}
+
+ /**
+ * Test with a client that has already seen a Change that the
+ * Changelog server has not seen.
+ */
+ @Test(enabled=true, dependsOnMethods = { "changelogBasic" })
+ public void newClientWithUnknownChanges() throws Exception
+ {
+ /*
+ * Create a ServerState with wrongChangeNumberServer1
+ */
+ ServerState state = new ServerState();
+ state.update(unknownChangeNumberServer1);
+ state.update(secondChangeNumberServer2);
+
+ newClientWithChanges(state, secondChangeNumberServer1);
+ }
/**
* Test that a client that has already seen the first change from server 1
--
Gitblit v1.10.0