From 75778303e7058b439622bce97f4f2c831b91b99b Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 06 Apr 2016 11:46:05 +0000
Subject: [PATCH] Fixed test errors related to HostPort not able to parse "Not connected"
---
opendj-server-legacy/src/test/java/org/opends/server/replication/ReplicationTestCase.java | 71 ++++++++++++++++++++++++++++-------
1 files changed, 57 insertions(+), 14 deletions(-)
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/replication/ReplicationTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/replication/ReplicationTestCase.java
index b88ea77..d3a7130 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/replication/ReplicationTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/replication/ReplicationTestCase.java
@@ -31,6 +31,7 @@
import org.forgerock.opendj.adapter.server3x.Converters;
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.ldap.ModificationType;
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
@@ -38,7 +39,6 @@
import org.forgerock.opendj.ldap.requests.Requests;
import org.opends.server.DirectoryServerTestCase;
import org.opends.server.TestCaseUtils;
-import org.forgerock.opendj.server.config.server.ReplicationDomainCfg;
import org.opends.server.backends.task.TaskState;
import org.opends.server.core.AddOperation;
import org.opends.server.core.DeleteOperation;
@@ -60,8 +60,8 @@
import org.opends.server.replication.service.ReplicationBroker;
import org.opends.server.types.Attribute;
import org.opends.server.types.Attributes;
-import org.forgerock.opendj.ldap.DN;
import org.opends.server.types.Entry;
+import org.opends.server.types.HostPort;
import org.opends.server.types.Modification;
import org.opends.server.types.SearchResultEntry;
import org.opends.server.util.TestTimer;
@@ -112,8 +112,6 @@
protected Entry synchroServerEntry;
protected Entry replServerEntry;
- private static final String REPLICATION_DB_IMPL_PROPERTY = "org.opends.test.replicationDbImpl";
-
/** Replication monitor stats. */
private DN monitorDN;
private String monitorAttr;
@@ -207,18 +205,13 @@
int serverId, int windowSize, int port, int timeout,
long generationId) throws Exception
{
- DomainFakeCfg config = newFakeCfg(baseDN, serverId, port);
+ final DomainFakeCfg config = newFakeCfg(baseDN, serverId, port);
config.setWindowSize(windowSize);
- return openReplicationSession(config, port, timeout, generationId);
- }
- protected ReplicationBroker openReplicationSession(ReplicationDomainCfg config,
- int port, int timeout, long generationId) throws Exception
- {
final ReplicationBroker broker = new ReplicationBroker(
new DummyReplicationDomain(generationId), new ServerState(),
config, getReplSessionSecurity());
- connect(broker, port, timeout);
+ connect(broker, timeout);
return broker;
}
@@ -230,11 +223,11 @@
return fakeCfg;
}
- protected void connect(ReplicationBroker broker, int port, int timeout) throws Exception
+ protected void connect(ReplicationBroker broker, int timeout) throws Exception
{
broker.start();
// give some time to the broker to connect to the replicationServer.
- checkConnection(30, broker, port);
+ checkConnection(30, broker);
if (timeout != 0)
{
@@ -246,7 +239,7 @@
* Check connection of the provided ds to the replication server. Waits for connection to be ok up
* to secTimeout seconds before failing.
*/
- protected void checkConnection(int secTimeout, final ReplicationBroker rb, int rsPort) throws Exception
+ protected void checkConnection(int secTimeout, final ReplicationBroker rb) throws Exception
{
TestTimer timer = new TestTimer.Builder()
.maxSleep(secTimeout, SECONDS)
@@ -919,4 +912,54 @@
}
});
}
+
+ protected void waitConnected(int dsId, int rsId, int rsPort, LDAPReplicationDomain rd, String msg) throws InterruptedException
+ {
+ final int secTimeout = 30;
+ int nSec = 0;
+
+ // Go out of the loop only if connection is verified or if timeout occurs
+ while (true)
+ {
+ boolean connected = rd.isConnected();
+ int rdPort = -1;
+ boolean rightPort = false;
+ if (connected)
+ {
+ String rsUrl = rd.getReplicationServer();
+ try {
+ rdPort = HostPort.valueOf(rsUrl).getPort();
+ rightPort = rdPort == rsPort;
+ }
+ catch (IllegalArgumentException notConnectedYet)
+ {
+ // wait a bit more
+ }
+ }
+ if (connected && rightPort)
+ {
+ // Connection verified
+ String s = "checkConnection: connection from domain " + dsId
+ + " to replication server " + rsId + " obtained after " + nSec + " seconds.";
+ logger.error(LocalizableMessage.raw(s));
+ if (logger.isTraceEnabled())
+ {
+ logger.trace("*** TEST *** " + s);
+ }
+ return;
+ }
+
+ Thread.sleep(1000);
+ nSec++;
+
+ if (nSec > secTimeout)
+ {
+ // Timeout reached, end with error
+ fail("checkConnection: could not verify connection from domain " + dsId
+ + " to replication server " + rsId + " after " + secTimeout + " seconds."
+ + " Domain connected: " + connected + ", connection port: " + rdPort
+ + " (should be: " + rsPort + "). [" + msg + "]");
+ }
+ }
+ }
}
--
Gitblit v1.10.0