From a8dc36aaf6ac977e7e4695339826cee08764bf81 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 02 Jul 2014 10:28:22 +0000
Subject: [PATCH] Code cleanup: - hid ReplicationDomain internals - moved test code out of production code - removed duplicated test code
---
opendj-sdk/opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java | 6
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/service/FakeReplicationDomain.java | 32 +++-
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/FractionalReplicationTest.java | 114 ------------------
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/AssuredReplicationServerTest.java | 19 +-
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/service/FakeStressReplicationDomain.java | 8
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/service/ReplicationDomainTest.java | 79 +++++++++----
opendj-sdk/opends/src/server/org/opends/server/replication/service/ReplicationDomain.java | 63 ---------
7 files changed, 101 insertions(+), 220 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java b/opendj-sdk/opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java
index b36a8bd..e6eee2b 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/plugin/LDAPReplicationDomain.java
@@ -43,7 +43,7 @@
import org.opends.messages.Message;
import org.opends.messages.Severity;
import org.opends.server.admin.server.ConfigurationChangeListener;
-import org.opends.server.admin.std.meta.ReplicationDomainCfgDefn.*;
+import org.opends.server.admin.std.meta.ReplicationDomainCfgDefn.IsolationPolicy;
import org.opends.server.admin.std.server.ExternalChangelogDomainCfg;
import org.opends.server.admin.std.server.ReplicationDomainCfg;
import org.opends.server.api.AlertGenerator;
@@ -76,7 +76,7 @@
import org.opends.server.util.LDIFReader;
import org.opends.server.util.TimeThread;
import org.opends.server.workflowelement.externalchangelog.ECLWorkflowElement;
-import org.opends.server.workflowelement.localbackend.*;
+import org.opends.server.workflowelement.localbackend.LocalBackendModifyOperation;
import static org.opends.messages.ReplicationMessages.*;
import static org.opends.messages.ToolMessages.*;
@@ -511,7 +511,7 @@
// register as an AlertGenerator
DirectoryServer.registerAlertGenerator(this);
- startPublishService(configuration);
+ startPublishService();
}
/**
diff --git a/opendj-sdk/opends/src/server/org/opends/server/replication/service/ReplicationDomain.java b/opendj-sdk/opends/src/server/org/opends/server/replication/service/ReplicationDomain.java
index c17e470..06376f1 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/replication/service/ReplicationDomain.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/replication/service/ReplicationDomain.java
@@ -70,7 +70,7 @@
* The startup phase of the ReplicationDomain subclass,
* should read the list of replication servers from the configuration,
* instantiate a {@link ServerState} then start the publish service
- * by calling {@link #startPublishService(ReplicationDomainCfg)}.
+ * by calling {@link #startPublishService()}.
* At this point it can start calling the {@link #publish(UpdateMsg)}
* method if needed.
* <p>
@@ -399,11 +399,7 @@
*/
public ReplicationDomain(ReplicationDomainCfg config, long generationId)
{
- this.config = config;
- this.assuredConfig = config;
- this.generationId = generationId;
- this.state = new ServerState();
- this.generator = new CSNGenerator(getServerId(), state);
+ this(config, generationId, new ServerState());
}
/**
@@ -528,16 +524,6 @@
}
/**
- * Returns the current config of this ReplicationDomain.
- *
- * @return the config
- */
- protected ReplicationDomainCfg getConfig()
- {
- return config;
- }
-
- /**
* Returns the base DN of this ReplicationDomain. All Replication Domain using
* this baseDN will be connected through the Replication Service.
*
@@ -2967,13 +2953,10 @@
* has been called, the publish service can be used by calling the
* {@link #publish(UpdateMsg)} method.
*
- * @param config
- * The configuration that should be used.
* @throws ConfigException
* If the DirectoryServer configuration was incorrect.
*/
- public void startPublishService(ReplicationDomainCfg config)
- throws ConfigException
+ public void startPublishService() throws ConfigException
{
synchronized (sessionLock)
{
@@ -2994,7 +2977,7 @@
* calling the {@link #processUpdate(UpdateMsg)}.
* <p>
* This method must be called once and must be called after the
- * {@link #startPublishService(ReplicationDomainCfg)}.
+ * {@link #startPublishService()}.
*/
public void startListenService()
{
@@ -3104,7 +3087,7 @@
* <p>
* The Replication Service will restart from the point indicated by the
* {@link ServerState} that was given as a parameter to the
- * {@link #startPublishService(ReplicationDomainCfg)} at startup time.
+ * {@link #startPublishService()} at startup time.
* <p>
* If some data have changed in the repository during the period of time when
* the Replication Service was disabled, this {@link ServerState} should
@@ -3459,42 +3442,6 @@
}
/**
- * Publish information to the Replication Service (not assured mode).
- *
- * @param msg The byte array containing the information that should
- * be sent to the remote entities.
- */
- void publish(byte[] msg)
- {
- UpdateMsg update;
- synchronized (this)
- {
- update = new UpdateMsg(generator.newCSN(), msg);
- /*
- If assured replication is configured, this will prepare blocking
- mechanism. If assured replication is disabled, this returns immediately
- */
- prepareWaitForAckIfAssuredEnabled(update);
-
- publish(update);
- }
-
- try
- {
- /*
- If assured replication is enabled, this will wait for the matching ack or
- time out. If assured replication is disabled, this returns immediately
- */
- waitForAckIfAssuredEnabled(update);
- } catch (TimeoutException ex)
- {
- // This exception may only be raised if assured replication is enabled
- logError(NOTE_DS_ACK_TIMEOUT.get(getBaseDNString(),
- Long.toString(getAssuredTimeout()), update.toString()));
- }
- }
-
- /**
* This method should return the generationID to use for this
* ReplicationDomain.
* This method can be called at any time after the ReplicationDomain
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/FractionalReplicationTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/FractionalReplicationTest.java
index 3e1c5c7..8513220 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/FractionalReplicationTest.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/FractionalReplicationTest.java
@@ -26,19 +26,13 @@
*/
package org.opends.server.replication.plugin;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
import java.util.*;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.LinkedBlockingQueue;
import org.opends.messages.Category;
import org.opends.messages.Message;
import org.opends.messages.Severity;
import org.opends.server.TestCaseUtils;
import org.opends.server.backends.task.Task;
-import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryServer;
import org.opends.server.loggers.debug.DebugTracer;
import org.opends.server.replication.ReplicationTestCase;
@@ -47,16 +41,15 @@
import org.opends.server.replication.protocol.AddMsg;
import org.opends.server.replication.protocol.ModifyDNMsg;
import org.opends.server.replication.protocol.ModifyMsg;
-import org.opends.server.replication.protocol.UpdateMsg;
import org.opends.server.replication.server.ReplServerFakeConfiguration;
import org.opends.server.replication.server.ReplicationServer;
+import org.opends.server.replication.service.FakeReplicationDomain;
import org.opends.server.replication.service.ReplicationDomain;
import org.opends.server.types.*;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
-import static org.opends.messages.ReplicationMessages.*;
import static org.opends.server.TestCaseUtils.*;
import static org.opends.server.loggers.ErrorLogger.*;
import static org.opends.server.loggers.debug.DebugLogger.*;
@@ -104,7 +97,7 @@
private static final String ENTRY_UUID3 =
"33333333-3333-3333-3333-333333333333";
/** Dn of the manipulated entry */
- private static String ENTRY_DN = "uid=1," + TEST_ROOT_DN_STRING;
+ private static final String ENTRY_DN = "uid=1," + TEST_ROOT_DN_STRING;
/**
* Optional attribute not part of concerned attributes of the fractional
@@ -124,7 +117,7 @@
/** Second test backend */
private static final String TEST2_ROOT_DN_STRING = "dc=example,dc=com";
private static final String TEST2_ORG_DN_STRING = "o=test2," + TEST2_ROOT_DN_STRING;
- private static String ENTRY_DN2 = "uid=1," + TEST2_ORG_DN_STRING;
+ private static final String ENTRY_DN2 = "uid=1," + TEST2_ORG_DN_STRING;
private void debugInfo(String s) {
logError(Message.raw(Category.SYNC, Severity.NOTICE, s));
@@ -539,107 +532,6 @@
replicationServer = new ReplicationServer(conf);
}
- private static DomainFakeCfg newConfig(DN baseDN, int serverID,
- SortedSet<String> replicationServers, long heartbeatInterval)
- {
- DomainFakeCfg fakeCfg =
- new DomainFakeCfg(baseDN, serverID, replicationServers);
- fakeCfg.setHeartbeatInterval(heartbeatInterval);
- fakeCfg.setChangetimeHeartbeatInterval(500);
- return fakeCfg;
- }
-
- /**
- * This class is the minimum implementation of a Concrete ReplicationDomain
- * used to be able to connect to the RS with a known genid. Also to be able
- * to send updates
- */
- private class FakeReplicationDomain extends ReplicationDomain
- {
- /**
- * A blocking queue that is used to receive updates from the Replication
- * Service.
- */
- private BlockingQueue<UpdateMsg> queue =
- new LinkedBlockingQueue<UpdateMsg>();
-
- /** A string that will be exported should exportBackend be called. */
- private String exportString;
-
- /**
- * A StringBuilder that will be used to build a new String should the import
- * be called.
- */
- private StringBuilder importString;
- private int exportedEntryCount;
-
- public FakeReplicationDomain(DN baseDN, int serverID,
- SortedSet<String> replicationServers, long heartbeatInterval,
- long generationId) throws ConfigException
- {
- super(newConfig(baseDN, serverID, replicationServers, heartbeatInterval),
- generationId);
- startPublishService(getConfig());
- startListenService();
- }
-
- public void initExport(String exportString, int exportedEntryCount)
- {
- this.exportString = exportString;
- this.exportedEntryCount = exportedEntryCount;
- }
-
- @Override
- public long countEntries() throws DirectoryException
- {
- return exportedEntryCount;
- }
-
- @Override
- protected void exportBackend(OutputStream output) throws DirectoryException
- {
- try
- {
- output.write(exportString.getBytes());
- output.flush();
- output.close();
- } catch (IOException e)
- {
- throw new DirectoryException(ResultCode.OPERATIONS_ERROR,
- ERR_BACKEND_EXPORT_ENTRY.get("", ""));
- }
- }
-
- @Override
- protected void importBackend(InputStream input) throws DirectoryException
- {
- byte[] buffer = new byte[1000];
-
- int ret;
- do
- {
- try
- {
- ret = input.read(buffer, 0, 1000);
- } catch (IOException e)
- {
- throw new DirectoryException(
- ResultCode.OPERATIONS_ERROR,
- ERR_BACKEND_EXPORT_ENTRY.get("", ""));
- }
- importString.append(new String(buffer, 0, ret));
- } while (ret >= 0);
- }
-
- @Override
- public boolean processUpdate(UpdateMsg updateMsg)
- {
- if (queue != null)
- queue.add(updateMsg);
- return true;
- }
- }
-
private static final String REPLICATION_GENERATION_ID =
"ds-sync-generation-id";
private static final Task NO_INIT_TASK = null;
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/AssuredReplicationServerTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/AssuredReplicationServerTest.java
index c353736..6f03ceb 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/AssuredReplicationServerTest.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/AssuredReplicationServerTest.java
@@ -133,9 +133,9 @@
private static final int OTHER_GID_BIS = 3;
/** Default generation id */
- private static long DEFAULT_GENID = EMPTY_DN_GENID;
+ private static final long DEFAULT_GENID = EMPTY_DN_GENID;
/** Other generation id */
- private static long OTHER_GENID = 500L;
+ private static final long OTHER_GENID = 500L;
/*
* Definitions for the scenario of the fake DS
@@ -302,7 +302,7 @@
FakeReplicationDomain fakeReplicationDomain =
new FakeReplicationDomain(config, generationId, scenario, serverState);
- fakeReplicationDomain.startPublishService(config);
+ fakeReplicationDomain.startPublishService();
if (startListen)
fakeReplicationDomain.startListenService();
@@ -445,18 +445,17 @@
* According to the configured scenario, it will answer to updates with acks
* as the scenario is requesting.
*/
- public class FakeReplicationDomain extends ReplicationDomain
+ private class FakeReplicationDomain extends ReplicationDomain
{
/** The scenario this DS is expecting */
- private int scenario = -1;
+ private final int scenario;
- private CSNGenerator gen;
+ private final CSNGenerator gen;
/** False if a received update had assured parameters not as expected */
private boolean everyUpdatesAreOk = true;
/** Number of received updates */
private int nReceivedUpdates = 0;
-
private int nWrongReceivedUpdates = 0;
/**
@@ -473,7 +472,7 @@
* behavior upon reception of updates)
* @throws org.opends.server.config.ConfigException
*/
- public FakeReplicationDomain(ReplicationDomainCfg config,
+ private FakeReplicationDomain(ReplicationDomainCfg config,
long generationId, int scenario, ServerState serverState)
throws ConfigException
{
@@ -483,7 +482,7 @@
gen = new CSNGenerator(config.getServerId(), 0L);
}
- public boolean receivedUpdatesOk()
+ private boolean receivedUpdatesOk()
{
return everyUpdatesAreOk;
}
@@ -591,7 +590,7 @@
* Sends a new update from this DS
* @throws TimeoutException If timeout waiting for an assured ack
*/
- public void sendNewFakeUpdate() throws TimeoutException
+ private void sendNewFakeUpdate() throws TimeoutException
{
// Create a new delete update message (the simplest to create)
DeleteMsg delMsg = new DeleteMsg(getBaseDN(), gen.newCSN(), UUID.randomUUID().toString());
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/service/FakeReplicationDomain.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/service/FakeReplicationDomain.java
index 2108816..9656915 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/service/FakeReplicationDomain.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/service/FakeReplicationDomain.java
@@ -58,20 +58,19 @@
private String exportString;
/**
- * A StringBuilder that will be used to build a build a new String should the
- * import be called.
+ * A StringBuilder that will be used to build a new String should the import
+ * be called.
*/
private StringBuilder importString;
private int exportedEntryCount;
private FakeReplicationDomain(DN baseDN, int serverID,
- SortedSet<String> replicationServers, int window, long heartbeatInterval)
- throws ConfigException
+ SortedSet<String> replicationServers, int window, long heartbeatInterval,
+ long generationId) throws ConfigException
{
- super(newConfig(baseDN, serverID, replicationServers, window,
- heartbeatInterval), 1);
- startPublishService(getConfig());
+ super(newConfig(baseDN, serverID, replicationServers, window, heartbeatInterval), generationId);
+ startPublishService();
startListenService();
}
@@ -86,24 +85,37 @@
}
public FakeReplicationDomain(DN baseDN, int serverID,
+ SortedSet<String> replicationServers, long heartbeatInterval,
+ long generationId) throws ConfigException
+ {
+ this(baseDN, serverID, replicationServers, 100, heartbeatInterval, generationId);
+ }
+
+ FakeReplicationDomain(DN baseDN, int serverID,
SortedSet<String> replicationServers, int window, long heartbeatInterval,
BlockingQueue<UpdateMsg> queue) throws ConfigException
{
- this(baseDN, serverID, replicationServers, window, heartbeatInterval);
+ this(baseDN, serverID, replicationServers, window, heartbeatInterval, 1);
this.queue = queue;
}
- public FakeReplicationDomain(DN baseDN, int serverID,
+ FakeReplicationDomain(DN baseDN, int serverID,
SortedSet<String> replicationServers, long heartbeatInterval,
String exportString, StringBuilder importString, int exportedEntryCount)
throws ConfigException
{
- this(baseDN, serverID, replicationServers, 100, heartbeatInterval);
+ this(baseDN, serverID, replicationServers, 100, heartbeatInterval, 1);
this.exportString = exportString;
this.importString = importString;
this.exportedEntryCount = exportedEntryCount;
}
+ public void initExport(String exportString, int exportedEntryCount)
+ {
+ this.exportString = exportString;
+ this.exportedEntryCount = exportedEntryCount;
+ }
+
@Override
public long countEntries() throws DirectoryException
{
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/service/FakeStressReplicationDomain.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/service/FakeStressReplicationDomain.java
index d6b5ca1..50b5fb8 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/service/FakeStressReplicationDomain.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/service/FakeStressReplicationDomain.java
@@ -46,20 +46,20 @@
* used to test the Generic Replication Service.
*/
@SuppressWarnings("javadoc")
-public class FakeStressReplicationDomain extends ReplicationDomain
+class FakeStressReplicationDomain extends ReplicationDomain
{
/**
* A blocking queue that is used to send the UpdateMsg received from the
* Replication Service.
*/
- private BlockingQueue<UpdateMsg> queue;
+ private final BlockingQueue<UpdateMsg> queue;
- public FakeStressReplicationDomain(DN baseDN, int serverID,
+ FakeStressReplicationDomain(DN baseDN, int serverID,
SortedSet<String> replicationServers, long heartbeatInterval,
BlockingQueue<UpdateMsg> queue) throws ConfigException
{
super(newConfig(baseDN, serverID, replicationServers, heartbeatInterval), 1);
- startPublishService(getConfig());
+ startPublishService();
startListenService();
this.queue = queue;
}
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/service/ReplicationDomainTest.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/service/ReplicationDomainTest.java
index 6dd89d4..15f9a12 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/service/ReplicationDomainTest.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/service/ReplicationDomainTest.java
@@ -33,6 +33,7 @@
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
import org.opends.server.TestCaseUtils;
import org.opends.server.backends.task.Task;
@@ -44,13 +45,15 @@
import org.opends.server.replication.protocol.UpdateMsg;
import org.opends.server.replication.server.ReplServerFakeConfiguration;
import org.opends.server.replication.server.ReplicationServer;
-import org.opends.server.replication.service.ReplicationDomain.*;
+import org.opends.server.replication.service.ReplicationDomain.ImportExportContext;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
+import static org.opends.messages.ReplicationMessages.*;
import static org.opends.server.TestCaseUtils.*;
+import static org.opends.server.loggers.ErrorLogger.*;
import static org.testng.Assert.*;
/**
@@ -117,7 +120,7 @@
* Check that domain2 receives it shortly after.
*/
byte[] test = {1, 2, 3 ,4, 0, 1, 2, 3, 4, 5};
- domain1.publish(test);
+ publish(domain1, test);
UpdateMsg rcvdMsg = rcvQueue2.poll(20, TimeUnit.SECONDS);
assertNotNull(rcvdMsg);
@@ -185,6 +188,40 @@
}
}
+ /**
+ * Publish information to the Replication Service (not assured mode).
+ *
+ * @param msg The byte array containing the information that should
+ * be sent to the remote entities.
+ */
+ void publish(FakeReplicationDomain domain, byte[] msg)
+ {
+ UpdateMsg updateMsg;
+ synchronized (this)
+ {
+ updateMsg = new UpdateMsg(domain.getGenerator().newCSN(), msg);
+ // If assured replication is configured,
+ // this will prepare blocking mechanism.
+ // If assured replication is disabled, this returns immediately
+ domain.prepareWaitForAckIfAssuredEnabled(updateMsg);
+ domain.publish(updateMsg);
+ }
+
+ try
+ {
+ // If assured replication is enabled,
+ // this will wait for the matching ack or time out.
+ // If assured replication is disabled, this returns immediately
+ domain.waitForAckIfAssuredEnabled(updateMsg);
+ }
+ catch (TimeoutException ex)
+ {
+ // This exception may only be raised if assured replication is enabled
+ logError(NOTE_DS_ACK_TIMEOUT.get(domain.getBaseDNString(), Long
+ .toString(domain.getAssuredTimeout()), updateMsg.toString()));
+ }
+ }
+
private void assertExpectedServerStatuses(Map<Integer, DSInfo> dsInfos,
int domain1ServerId, int domain2ServerId)
{
@@ -236,29 +273,11 @@
*/
byte[] test = {1, 2, 3 ,4, 0, 1, 2, 3, 4, 5};
- long timeStart = System.nanoTime();
- for (int i=0; i< 100000; i++)
- domain1.publish(test);
long timeNow = System.nanoTime();
- System.out.println(timeNow - timeStart);
-
- timeStart = timeNow;
- for (int i=0; i< 100000; i++)
- domain1.publish(test);
- timeNow = System.nanoTime();
- System.out.println(timeNow - timeStart);
-
- timeStart = timeNow;
- for (int i=0; i< 100000; i++)
- domain1.publish(test);
- timeNow = System.nanoTime();
- System.out.println(timeNow - timeStart);
-
- timeStart = timeNow;
- for (int i=0; i< 100000; i++)
- domain1.publish(test);
- timeNow = System.nanoTime();
- System.out.println(timeNow - timeStart);
+ timeNow = publishRepeatedly(domain1, test, timeNow);
+ timeNow = publishRepeatedly(domain1, test, timeNow);
+ timeNow = publishRepeatedly(domain1, test, timeNow);
+ timeNow = publishRepeatedly(domain1, test, timeNow);
}
finally
{
@@ -267,6 +286,18 @@
}
}
+ private long publishRepeatedly(FakeReplicationDomain domain1, byte[] test, long timeNow)
+ {
+ long timeStart = timeNow;
+ for (int i = 0; i < 100000; i++)
+ {
+ publish(domain1, test);
+ }
+ timeNow = System.nanoTime();
+ System.out.println(timeNow - timeStart);
+ return timeNow;
+ }
+
private ReplicationServer createReplicationServer(int serverId,
int replicationPort, String dirName, int windowSize,
String... replServers) throws Exception
--
Gitblit v1.10.0