From a9b738052607cc4c64e1765992d8e44e0fc3d3f0 Mon Sep 17 00:00:00 2001
From: ugaston <ugaston@localhost>
Date: Sat, 04 Aug 2007 16:13:42 +0000
Subject: [PATCH] New replication test suites + a few fixes in existing functions
---
opendj-sdk/opends/tests/functional-tests/testcases/replication/basic/replication_basic.xml | 476 ++++++------
opendj-sdk/opends/tests/functional-tests/shared/data/replication/testuser-0.ldif | 8
opendj-sdk/opends/tests/functional-tests/testcases/replication/replication_cleanup.xml | 32
opendj-sdk/opends/tests/functional-tests/testcases/replication/replication.xml | 20
opendj-sdk/opends/tests/functional-tests/shared/functions/topology.xml | 2
opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/replication_schema.xml | 313 ++++++++
opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/replication_resynchronization.xml | 316 ++++++++
opendj-sdk/opends/tests/functional-tests/shared/functions/dsadm.xml | 28
opendj-sdk/opends/tests/functional-tests/shared/data/replication/testuser-1.ldif | 10
opendj-sdk/opends/tests/functional-tests/testcases/replication/basic/replication_basic_setup.xml | 3
opendj-sdk/opends/tests/functional-tests/testcases/replication/replication_setup.xml | 47
opendj-sdk/opends/tests/functional-tests/shared/functions/stafcmd.xml | 8
opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/replication_ldifimport.xml | 300 ++++++++
opendj-sdk/opends/tests/functional-tests/shared/functions/tools.xml | 276 +++++++
opendj-sdk/opends/tests/functional-tests/shared/data/replication/tfitter.ldif | 15
opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/totalupdate.xml | 12
opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/replication_binarycopy.xml | 302 ++++++++
17 files changed, 1,849 insertions(+), 319 deletions(-)
diff --git a/opendj-sdk/opends/tests/functional-tests/shared/data/replication/testuser-0.ldif b/opendj-sdk/opends/tests/functional-tests/shared/data/replication/testuser-0.ldif
new file mode 100644
index 0000000..c8a96ae
--- /dev/null
+++ b/opendj-sdk/opends/tests/functional-tests/shared/data/replication/testuser-0.ldif
@@ -0,0 +1,8 @@
+dn: cn=testuser-0,ou=people,o=example
+objectclass: top
+objectclass: person
+objectclass: testobjectclass-0
+cn: testuser-0
+sn: Test
+c: Testland
+street: Test Lane
diff --git a/opendj-sdk/opends/tests/functional-tests/shared/data/replication/testuser-1.ldif b/opendj-sdk/opends/tests/functional-tests/shared/data/replication/testuser-1.ldif
new file mode 100644
index 0000000..5143124
--- /dev/null
+++ b/opendj-sdk/opends/tests/functional-tests/shared/data/replication/testuser-1.ldif
@@ -0,0 +1,10 @@
+dn: cn=testuser-1,ou=people,o=example
+objectclass: top
+objectclass: person
+objectclass: testobjectclass-1
+cn: testuser-1
+sn: Test
+c: Testland
+street: Test Lane
+testattribute-1: new test attribute
+
diff --git a/opendj-sdk/opends/tests/functional-tests/shared/data/replication/tfitter.ldif b/opendj-sdk/opends/tests/functional-tests/shared/data/replication/tfitter.ldif
new file mode 100644
index 0000000..b59b621
--- /dev/null
+++ b/opendj-sdk/opends/tests/functional-tests/shared/data/replication/tfitter.ldif
@@ -0,0 +1,15 @@
+dn: uid=tfitter, ou=People,o=example
+cn: Tom Fitter
+sn: Fitter
+givenname: Tom
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Sunnyvale
+uid: tfitter
+mail: tfitter@example.com
+userpassword: hamstring
+
diff --git a/opendj-sdk/opends/tests/functional-tests/shared/functions/dsadm.xml b/opendj-sdk/opends/tests/functional-tests/shared/functions/dsadm.xml
index 15aeb3b..1271eb0 100755
--- a/opendj-sdk/opends/tests/functional-tests/shared/functions/dsadm.xml
+++ b/opendj-sdk/opends/tests/functional-tests/shared/functions/dsadm.xml
@@ -1230,6 +1230,7 @@
<!-- Local variables -->
<script>
myLocation=location
+ myPath=dsPath
taskLdifFile='import-task.ldif'
taskLdif='%s/../%s/%s' % (dsPath,relativeDataDir,taskLdifFile)
tmpTaskLdif='%s/%s' % (logsTempDir,taskLdifFile)
@@ -1301,6 +1302,7 @@
<!-- Start the task using ldap task interface -->
<call function="'StartLdapTask'">
{ 'location' : myLocation,
+ 'dsPath' : myPath,
'taskLabel' : 'Online Import Task',
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -1314,6 +1316,7 @@
<sequence>
<call function="'CheckLdapTask'">
{ 'location' : myLocation,
+ 'dsPath' : myPath,
'dsTaskDn' : taskDN,
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -1772,6 +1775,7 @@
<!-- Start the task using ldap task interface -->
<call function="'StartLdapTask'">
{ 'location' : myLocation,
+ 'dsPath' : myPath,
'taskLabel' : 'Online Export Task',
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -1785,6 +1789,7 @@
<sequence>
<call function="'CheckLdapTask'">
{ 'location' : myLocation,
+ 'dsPath' : myPath,
'dsTaskDn' : taskDN,
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -1839,6 +1844,8 @@
<!-- Local variables -->
<script>
myLocation=location
+ if dsPath:
+ dsBinPath='%s/%s' % (dsPath,fileFolder)
</script>
<message>
'backup%s -n %s -d %s %s' % (fileExt,backEnd,backupDir,extraParams)
@@ -1973,6 +1980,7 @@
<script>
myLocation=location
+ myPath=dsPath
taskLdifFile='backup-task.ldif'
taskLdif='%s/../%s/%s' % (dsPath,relativeDataDir,taskLdifFile)
tmpTaskLdif='%s/%s' % (logsTempDir,taskLdifFile)
@@ -2026,6 +2034,7 @@
<!-- Start the task using ldap task interface -->
<call function="'StartLdapTask'">
{ 'location' : myLocation,
+ 'dsPath' : myPath,
'taskLabel' : 'Online Backup Task',
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -2039,6 +2048,7 @@
<sequence>
<call function="'CheckLdapTask'">
{ 'location' : myLocation,
+ 'dsPath' : myPath,
'dsTaskDn' : taskDN,
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -2087,6 +2097,8 @@
<!-- Local variables -->
<script>
myLocation=location
+ if dsPath:
+ dsBinPath='%s/%s' % (dsPath,fileFolder)
</script>
<message>
@@ -2187,6 +2199,7 @@
<script>
myLocation=location
+ myPath=dsPath
taskLdifFile='restore-task.ldif'
taskLdif='%s/../%s/%s' % (dsPath,relativeDataDir,taskLdifFile)
tmpTaskLdif='%s/%s' % (logsTempDir,taskLdifFile)
@@ -2232,6 +2245,7 @@
<!-- Start the task using ldap task interface -->
<call function="'StartLdapTask'">
{ 'location' : myLocation,
+ 'dsPath' : myPath,
'taskLabel' : 'Online Restore Task',
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -2245,6 +2259,7 @@
<sequence>
<call function="'CheckLdapTask'">
{ 'location' : myLocation,
+ 'dsPath' : myPath,
'dsTaskDn' : taskDN,
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -2312,6 +2327,7 @@
<!-- Local variables -->
<script>
myLocation=location
+ myPath=dsPath
taskLdifFile='shutdown-task.ldif'
taskLdif='%s/../%s/%s' % (dsPath,relativeDataDir,taskLdifFile)
tmpTaskLdif='%s/%s' % (logsTempDir,taskLdifFile)
@@ -2352,6 +2368,7 @@
<!-- Start the task using ldap task interface -->
<call function="'StartLdapTask'">
{ 'location' : myLocation,
+ 'dsPath' : myPath,
'taskLabel' : 'Online Export Task',
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -2420,6 +2437,7 @@
<!-- Local variables -->
<script>
myLocation=location
+ myPath=dsPath
taskLdifFile='restart-task.ldif'
taskLdif='%s/../%s/%s' % (dsPath,relativeDataDir,taskLdifFile)
tmpTaskLdif='%s/%s' % (logsTempDir,taskLdifFile)
@@ -2460,6 +2478,7 @@
<!-- Start the task using ldap task interface -->
<call function="'StartLdapTask'">
{ 'location' : myLocation,
+ 'dsPath' : myPath,
'taskLabel' : 'Online Export Task',
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -2544,6 +2563,7 @@
<script>
myLocation=location
+ myPath=dsPath
taskLdifFile='schema.ldif'
taskLdif='%s/../%s/%s' % (dsPath,relativeDataDir,taskLdifFile)
tmpTaskLdif='%s/%s' % (logsTempDir,taskLdifFile)
@@ -2595,6 +2615,7 @@
<!-- Start the task using ldap task interface -->
<call function="'StartLdapTask'">
{ 'location' : myLocation,
+ 'dsPath' : myPath,
'taskLabel' : 'Online Schema Task',
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -2606,6 +2627,7 @@
<!-- Check that the ldap task is completed -->
<call function="'CheckLdapTask'">
{ 'location' : myLocation,
+ 'dsPath' : myPath,
'dsTaskDn' : taskDN,
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -2671,6 +2693,7 @@
<script>
myLocation=location
+ myPath=dsPath
taskLdifFile='leaveShutdownTask.ldif'
taskLdif='%s/../%s/%s' % (dsPath,relativeDataDir,taskLdifFile)
tmpTaskLdif='%s/%s' % (logsTempDir,taskLdifFile)
@@ -2720,6 +2743,7 @@
<!-- Start the task using ldap task interface -->
<call function="'StartLdapTask'">
{ 'location' : myLocation,
+ 'dsPath' : myPath,
'taskLabel' : 'Online Schema Task',
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -2731,6 +2755,7 @@
<!-- Check that the ldap task is completed -->
<call function="'CheckLdapTask'">
{ 'location' : myLocation,
+ 'dsPath' : myPath,
'dsTaskDn' : taskDN,
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -3208,5 +3233,6 @@
</sequence>
</function>
-
+
+
</stax>
diff --git a/opendj-sdk/opends/tests/functional-tests/shared/functions/stafcmd.xml b/opendj-sdk/opends/tests/functional-tests/shared/functions/stafcmd.xml
index 135ca21..5846acc 100755
--- a/opendj-sdk/opends/tests/functional-tests/shared/functions/stafcmd.xml
+++ b/opendj-sdk/opends/tests/functional-tests/shared/functions/stafcmd.xml
@@ -85,6 +85,12 @@
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
+ <function-arg-def name="remotehost" type="optional" default="location">
+ <function-arg-description>
+ The name of remote host (default same as location)
+ </function-arg-description>
+ <function-arg-property name="type" value="hostname"/>
+ </function-arg-def>
<function-arg-def name="srcfolder" type="required">
<function-arg-description>
The name of the source folder
@@ -108,7 +114,7 @@
<stafcmd name="'STAF Command: Copy all %s Files.' % (extension)">
<location>'%s' % location</location>
<service>'fs'</service>
- <request>'COPY DIRECTORY %s TODIRECTORY %s TOMACHINE %s EXT %s RECURSE' % (srcfolder,destfolder,location,extension) </request>
+ <request>'COPY DIRECTORY %s TODIRECTORY %s TOMACHINE %s EXT %s RECURSE' % (srcfolder,destfolder,remotehost,extension) </request>
</stafcmd>
<script>
cmdRC=RC
diff --git a/opendj-sdk/opends/tests/functional-tests/shared/functions/tools.xml b/opendj-sdk/opends/tests/functional-tests/shared/functions/tools.xml
index 360f936..7d132ff 100644
--- a/opendj-sdk/opends/tests/functional-tests/shared/functions/tools.xml
+++ b/opendj-sdk/opends/tests/functional-tests/shared/functions/tools.xml
@@ -326,12 +326,16 @@
myRC = 0
failedServers = []
failingServerList = ''
+ referenceServerPath = '%s/%s' % (referenceServer.getDir(), OPENDSNAME)
referenceTree = 'referenceTree.ldif'
sampleTree = 'sampleTree.ldif'
treeDiffs = 'treeDiffs.ldif'
</script>
-
+ <message>
+ 'Verify tree %s taking %s as reference.' % (treeSuffix, referenceServerPath)
+ </message>
+
<!-- Retrieve the tree from the reference server -->
<call function="'ldapSearchWithScript'">
{ 'location' : location,
@@ -421,8 +425,278 @@
</function>
+
+
+
+ <function name="verifySchemas">
+ <function-prolog>
+ This function verifies that a schema file is synchronized all over a group of servers.
+ </function-prolog>
+
+ <function-list-args>
+ <function-arg-def name="location" type="optional" default="'%s' % STAXServiceMachine">
+ <function-arg-description>
+ Location of target host
+ </function-arg-description>
+ <function-arg-property name="type" value="hostname"/>
+ </function-arg-def>
+ <function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
+ <function-arg-description>
+ Pathname to installation root
+ </function-arg-description>
+ <function-arg-property name="type" value="filepath"/>
+ </function-arg-def>
+ <function-arg-def name="referenceServer" type="required">
+ <function-arg-description>
+ Server that should be taken as reference.
+ </function-arg-description>
+ <function-arg-property name="type" value="Server"/>
+ </function-arg-def>
+ <function-arg-def name="serverList" type="required">
+ <function-arg-description>
+ List of the servers to verify against the referenceServer.
+ </function-arg-description>
+ <function-arg-property name="type" value="Server-list"/>
+ </function-arg-def>
+ <function-arg-def name="schemaFile" type="required">
+ <function-arg-description>
+ Schema file to verify.
+ </function-arg-description>
+ <function-arg-property name="type" value="filename"/>
+ </function-arg-def>
+ </function-list-args>
+
+
+
+ <sequence>
+
+ <script>
+ myRC = 0
+ failedServers = []
+ failingServerList = ''
+ referenceServerPath = '%s/%s' % (referenceServer.getDir(), OPENDSNAME)
+ referenceSchema = '%s/config/schema/%s' % (referenceServerPath, schemaFile)
+ schemaDiffs = 'schemaDiffs.ldif'
+ </script>
+
+ <message>
+ 'Verify schema file %s taking %s as reference.' % (schemaFile, referenceServerPath)
+ </message>
+
+ <iterate var="server" in="serverList">
+ <sequence>
+ <!-- Copy reference schema file to other server -->
+ <call function="'copyFile'">
+ { 'location' : referenceServer.getHostname(),
+ 'remotehost' : server.getHostname(),
+ 'srcfile' : referenceSchema,
+ 'destfile' : '%s/reference_%s' % (server.getDir(), schemaFile) }
+ </call>
+
+ <script>
+ serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+ </script>
+
+ <!-- Compare this schema to the reference one -->
+ <call function="'LdifDiffWithScript'">
+ { 'location' : location,
+ 'dsPath' : dsPath,
+ 'sourceLdif' : '%s/config/schema/%s' % (serverPath, schemaFile),
+ 'targetLdif' : '%s/reference_%s' % (server.getDir(), schemaFile),
+ 'outputLdif' : '%s/%s' % (server.getDir(), schemaDiffs) }
+ </call>
+
+ <script>
+ if STAXResult != 0 :
+ failedServers.append('%s:%s' % (server.getHostname(), server.getPort()))
+ </script>
+ </sequence>
+ </iterate>
+
+ <if expr="len(failedServers) > 0">
+ <!-- If at least one server failed to successfully compare to the reference tree,
+ ! return an error, along with the list of the servers that failed to do so -->
+ <script>
+ myRC = 1
+ comma = ','
+ failingServerList = 'List of non-synchronized servers (schema verify FAILED): %s ' % comma.join(failedServers)
+ </script>
+ <else>
+ <script>
+ failingServerList = 'All servers synchronized (schema verify SUCCEEDED).'
+ </script>
+ </else>
+ </if>
+
+
+ <call function="'checktestRC'">
+ { 'returncode' : myRC,
+ 'result' : failingServerList ,
+ 'expected' : 0 }
+ </call>
+
+ <return> [myRC, failedServers] </return>
+ </sequence>
+
+ </function>
+
+
+ <function name="deleteTrees">
+ <function-prolog>
+ This function deletes a (sub)tree from a list of servers.
+ </function-prolog>
+ <function-list-args>
+ <function-arg-def name="serverList" type="required">
+ <function-arg-description>
+ List of the servers (instances of "Server" class) where the tree will be deleted.
+ </function-arg-description>
+ <function-arg-property name="type" value="Server-list"/>
+ </function-arg-def>
+ <function-arg-def name="treeSuffix" type="required">
+ <function-arg-description>
+ Suffix of the tree to delete.
+ </function-arg-description>
+ <function-arg-property name="type" value="DN"/>
+ </function-arg-def>
+ <function-arg-def name="startDS" type="optional" default="True">
+ <function-arg-description>
+ Need to start the Directory Servers before deleting.
+ </function-arg-description>
+ <function-arg-property name="type" value="boolean"/>
+ </function-arg-def>
+ </function-list-args>
+
+ <sequence>
+
+ <if expr="startDS">
+ <!-- Start the servers in the list -->
+ <call function="'startServers'">
+ [serverList]
+ </call>
+ </if>
+
+ <!-- Delete the tree in every server in the list -->
+ <paralleliterate var="server" in="serverList">
+ <sequence>
+ <message>
+ 'Delete suffix %s on server running on host %s on port %s' % (treeSuffix, server.getHostname(), server.getPort())
+ </message>
+
+ <!-- Delete suffix and subtree -->
+ <call function="'ldapDeleteWithScript'">
+ { 'location' : server.getHostname(),
+ 'dsPath' : '%s/%s' % (server.getDir(),OPENDSNAME),
+ 'dsInstanceHost' : server.getHostname(),
+ 'dsInstancePort' : server.getPort(),
+ 'dsInstanceDn' : server.getRootDn(),
+ 'dsInstancePswd' : server.getRootPwd(),
+ 'dsDn' : [treeSuffix],
+ 'dsDeleteSubtree' : True }
+ </call>
+ </sequence>
+ </paralleliterate>
+
+ <if expr="startDS">
+ <!-- Stop the servers in the list -->
+ <call function="'stopServers'">
+ [serverList]
+ </call>
+ </if>
+
+ </sequence>
+
+ </function>
+
+
+
+
+ <function name="startServers">
+ <function-prolog>
+ This function starts a list of servers.
+ </function-prolog>
+ <function-list-args>
+ <function-arg-def name="serverList" type="required">
+ <function-arg-description>
+ List of the servers (instances of "Server" class) to be started.
+ </function-arg-description>
+ <function-arg-property name="type" value="Server-list"/>
+ </function-arg-def>
+ </function-list-args>
+
+ <sequence>
+ <!-- Start the servers in the list -->
+ <paralleliterate var="server" in="serverList">
+ <sequence>
+ <message>
+ 'Start DS on host %s to run on port %s' % (server.getHostname(),server.getPort())
+ </message>
+
+ <!--- Start DS -->
+ <call function="'StartDsWithScript'">
+ { 'location' : server.getHostname(),
+ 'dsPath' : '%s/%s' % (server.getDir(),OPENDSNAME) }
+ </call>
+
+ <!--- Check that DS started -->
+ <call function="'isAlive'">
+ { 'location' : server.getHostname(),
+ 'dsPath' : '%s/%s' % (server.getDir(),OPENDSNAME),
+ 'dsInstanceHost' : server.getHostname(),
+ 'dsInstancePort' : server.getPort(),
+ 'dsInstanceDn' : server.getRootDn(),
+ 'dsInstancePswd' : server.getRootPwd(),
+ 'noOfLoops' : 5 ,
+ 'noOfMilliSeconds' : 2000 }
+ </call>
+ </sequence>
+ </paralleliterate>
+
+ </sequence>
+
+ </function>
+
+
+
+ <function name="stopServers">
+ <function-prolog>
+ This function stops a list of servers.
+ </function-prolog>
+ <function-list-args>
+ <function-arg-def name="serverList" type="required">
+ <function-arg-description>
+ List of the servers (instances of "Server" class) to be stopped.
+ </function-arg-description>
+ <function-arg-property name="type" value="Server-list"/>
+ </function-arg-def>
+ </function-list-args>
+
+ <sequence>
+ <!-- Stop the servers in the list -->
+ <paralleliterate var="server" in="serverList">
+ <sequence>
+ <message>
+ 'Stop DS on host %s running on port %s' % (server.getHostname(),server.getPort())
+ </message>
+
+ <!--- Stop DS -->
+ <call function="'StopDsWithScript'">
+ { 'location' : server.getHostname(),
+ 'dsHost' : server.getHostname(),
+ 'dsPath' : '%s/%s' % (server.getDir(),OPENDSNAME),
+ 'dsPort' : server.getPort(),
+ 'dsBindDN' : server.getRootDn(),
+ 'dsBindPwd' : server.getRootPwd() }
+ </call>
+ </sequence>
+ </paralleliterate>
+
+ </sequence>
+
+ </function>
+
+
<function name="CLI_rebuild-index">
<function-prolog>
This wraps the rebuild-index tool to make it easy to use from STAX
diff --git a/opendj-sdk/opends/tests/functional-tests/shared/functions/topology.xml b/opendj-sdk/opends/tests/functional-tests/shared/functions/topology.xml
index 58349fc..f559b1f 100755
--- a/opendj-sdk/opends/tests/functional-tests/shared/functions/topology.xml
+++ b/opendj-sdk/opends/tests/functional-tests/shared/functions/topology.xml
@@ -600,7 +600,7 @@
<script>
replicationServer = syncserver.getChangelogServer()
- replicatedSuffixList = server.getSynchronizedSuffixList()
+ replicatedSuffixList = syncserver.getSynchronizedSuffixList()
</script>
<if expr="replicationServer">
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/replication/basic/replication_basic.xml b/opendj-sdk/opends/tests/functional-tests/testcases/replication/basic/replication_basic.xml
index ecd6d83..ee98365 100644
--- a/opendj-sdk/opends/tests/functional-tests/testcases/replication/basic/replication_basic.xml
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/replication/basic/replication_basic.xml
@@ -44,7 +44,18 @@
</script>
<call function="'testSuite_Preamble'"/>
-
+
+ <!--- Test Suite information
+ #@TestSuiteName Replication Basic Tests
+ #@TestSuitePurpose Verify that the basic operations are replicated correctly between two serrvers.
+ #@TestSuiteID Basic Tests
+ #@TestSuiteGroup Basic
+ #@TestGroup Replication
+ #@TestScript replication_basic.xml
+ #@TestHTMLLink http://opends.dev.java.net/
+ -->
+
+
<import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
file="'%s/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/>
<call function="'replication_setup'" />
@@ -74,10 +85,10 @@
<call function="'addEntry'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname(),
- 'dsInstancePort' : server1.getPort(),
- 'dsInstanceDn' : server1.getRootDn(),
- 'dsInstancePswd' : server1.getRootPwd(),
+ 'dsInstanceHost' : masterHost,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
'entryToBeAdded' : '%s/replication_add_root_suffix.ldif' % clientDataDir }
</call>
@@ -85,10 +96,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : synchroSuffix ,
'dsFilter' : 'objectclass=*' }
</call>
@@ -96,7 +107,7 @@
<!-- Verify the synchronization of the trees among the servers in the topology -->
<call function="'verifyTrees'">
- [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
</call>
<call function="'testCase_Postamble'"/>
@@ -127,19 +138,19 @@
<call function="'addEntry'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname(),
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'entryToBeAdded' : '%s/replication_add_single.ldif' % clientDataDir }
</call>
<call function="'ldapModifyWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsFilename' : '%s/replication_mod.ldif' % clientDataDir }
</call>
@@ -147,10 +158,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : entryDn,
'dsFilter' : '%s=%s' % (attr_type,attr_value) }
</call>
@@ -168,7 +179,7 @@
<!-- Verify the synchronization of the trees among the servers in the topology -->
<call function="'verifyTrees'">
- [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
</call>
<call function="'testCase_Postamble'"/>
@@ -198,10 +209,10 @@
<call function="'DeleteEntry'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : entryDn }
</call>
@@ -209,10 +220,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : entryDn,
'dsFilter' : 'objectclass=*' ,
'expectedRC' : 32 }
@@ -221,7 +232,7 @@
<!-- Verify the synchronization of the trees among the servers in the topology -->
<call function="'verifyTrees'">
- [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
</call>
<call function="'testCase_Postamble'"/>
@@ -250,10 +261,10 @@
<call function="'DeleteEntry'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : synchroSuffix }
</call>
@@ -261,10 +272,10 @@
<call function="'addEntry'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname(),
- 'dsInstancePort' : server1.getPort(),
- 'dsInstanceDn' : server1.getRootDn(),
- 'dsInstancePswd' : server1.getRootPwd(),
+ 'dsInstanceHost' : masterHost,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
'entryToBeAdded' : '%s/replication/Example.ldif' % clientDataDir }
</call>
@@ -272,10 +283,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : 'uid=scarter,ou=People,%s' % synchroSuffix,
'dsFilter' : 'objectclass=*' }
</call>
@@ -283,7 +294,7 @@
<!-- Verify the synchronization of the trees among the servers in the topology -->
<call function="'verifyTrees'">
- [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
</call>
<call function="'testCase_Postamble'"/>
@@ -313,11 +324,11 @@
<!-- Modify "master" server -->
<call function="'modifyAnAttribute'">
- { 'dsPath' : server1Path,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort(),
- 'dsInstanceDn' : server1.getRootDn(),
- 'dsInstancePswd' : server1.getRootPwd(),
+ { 'dsPath' : masterPath,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
'DNToModify' : 'uid=tmorris, ou=People,%s' % synchroSuffix,
'attributeName' : 'description',
'newAttributeValue' : ' ',
@@ -328,10 +339,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : 'uid=tmorris, ou=People,%s' % synchroSuffix,
'dsFilter' : 'description=*' }
</call>
@@ -349,7 +360,7 @@
<!-- Verify the synchronization of the trees among the servers in the topology -->
<call function="'verifyTrees'">
- [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
</call>
<call function="'testCase_Postamble'"/>
@@ -379,11 +390,11 @@
<!-- Modify "master" server -->
<call function="'modifyAnAttribute'">
- { 'dsPath' : server1Path,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort(),
- 'dsInstanceDn' : server1.getRootDn(),
- 'dsInstancePswd' : server1.getRootPwd(),
+ { 'dsPath' : masterPath,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
'DNToModify' : 'uid=tmorris, ou=People,%s' % synchroSuffix,
'attributeName' : 'departmentnumber',
'newAttributeValue' : '5203214400',
@@ -394,10 +405,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : 'uid=tmorris, ou=People,%s' % synchroSuffix,
'dsFilter' : 'departmentnumber=5203214400' }
</call>
@@ -415,7 +426,7 @@
<!-- Verify the synchronization of the trees among the servers in the topology -->
<call function="'verifyTrees'">
- [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
</call>
<call function="'testCase_Postamble'"/>
@@ -466,10 +477,10 @@
<call function="'ldapModifyWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsFilename' : '%s/%s' % (clientDataDir, filename) }
</call>
@@ -477,10 +488,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : 'uid=smason, ou=People,%s' % synchroSuffix,
'dsFilter' : 'roomNumber=*',
'expectedRC' : 0 }
@@ -499,7 +510,7 @@
<!-- Verify the synchronization of the trees among the servers in the topology -->
<call function="'verifyTrees'">
- [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
</call>
<call function="'testCase_Postamble'"/>
@@ -527,11 +538,11 @@
<!-- Modify "master" server -->
<call function="'modifyAnAttribute'">
- { 'dsPath' : server1Path,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort(),
- 'dsInstanceDn' : server1.getRootDn(),
- 'dsInstancePswd' : server1.getRootPwd(),
+ { 'dsPath' : masterPath,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
'DNToModify' : 'uid=jwalker, ou=People,%s' % synchroSuffix,
'attributeName' : 'roomNumber',
'newAttributeValue' : '3915',
@@ -542,10 +553,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : 'uid=jwalker, ou=People,%s' % synchroSuffix,
'dsFilter' : 'roomNumber=3915' ,
'expectedRC' : 0 }
@@ -564,7 +575,7 @@
<!-- Verify the synchronization of the trees among the servers in the topology -->
<call function="'verifyTrees'">
- [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
</call>
<call function="'testCase_Postamble'"/>
@@ -601,11 +612,11 @@
<!-- Modify "master" server -->
<call function="'modifyAnAttribute'">
- { 'dsPath' : server1Path,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort(),
- 'dsInstanceDn' : server1.getRootDn(),
- 'dsInstancePswd' : server1.getRootPwd(),
+ { 'dsPath' : masterPath,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
'DNToModify' : 'uid=jwallace, ou=People,%s' % synchroSuffix,
'listAttributes' : valuesToAdd,
'changetype' : 'add' }
@@ -615,10 +626,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : 'uid=jwallace, ou=People,%s' % synchroSuffix,
'dsFilter' : '&(postaladdress=Residence Parc Europe)(postaladdress=Appartement #6)(postaladdress=31 Rue General Mangin)(postaladdress=38100 Grenoble)' }
</call>
@@ -636,7 +647,7 @@
<!-- Verify the synchronization of the trees among the servers in the topology -->
<call function="'verifyTrees'">
- [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
</call>
<call function="'testCase_Postamble'"/>
@@ -672,11 +683,11 @@
<!-- Modify "master" server -->
<call function="'modifyAnAttribute'">
- { 'dsPath' : server1Path,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort(),
- 'dsInstanceDn' : server1.getRootDn(),
- 'dsInstancePswd' : server1.getRootPwd(),
+ { 'dsPath' : masterPath,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
'DNToModify' : 'uid=jwallace, ou=People,%s' % synchroSuffix,
'listAttributes' : valuesToDelete,
'changetype' : 'delete' }
@@ -686,10 +697,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : 'uid=jwallace, ou=People,%s' % synchroSuffix,
'dsFilter' : '|(postaladdress=Appartement #6)(postaladdress=38100 Grenoble)',
'expectedRC' : 0 }
@@ -708,7 +719,7 @@
<!-- Verify the synchronization of the trees among the servers in the topology -->
<call function="'verifyTrees'">
- [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
</call>
<call function="'testCase_Postamble'"/>
@@ -746,11 +757,11 @@
<!-- Modify "master" server -->
<call function="'modifyAnAttribute'">
- { 'dsPath' : server1Path,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort(),
- 'dsInstanceDn' : server1.getRootDn(),
- 'dsInstancePswd' : server1.getRootPwd(),
+ { 'dsPath' : masterPath,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
'DNToModify' : 'uid=jwallace, ou=People,%s' % synchroSuffix,
'listAttributes' : valuesToReplace,
'changetype' : 'replace' }
@@ -760,10 +771,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : 'uid=jwallace, ou=People,%s' % synchroSuffix,
'dsFilter' : '&(postaladdress=Residence Letilleuil)(postaladdress=18 rue Nicolas Chorier)',
'expectedRC' : 0 }
@@ -782,7 +793,7 @@
<!-- Verify the synchronization of the trees among the servers in the topology -->
<call function="'verifyTrees'">
- [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
</call>
<call function="'testCase_Postamble'"/>
@@ -818,11 +829,11 @@
<!-- Modify "master" server -->
<call function="'modifyAnAttribute'">
- { 'dsPath' : server1Path,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort(),
- 'dsInstanceDn' : server1.getRootDn(),
- 'dsInstancePswd' : server1.getRootPwd(),
+ { 'dsPath' : masterPath,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
'DNToModify' : 'uid=jwallace, ou=People,%s' % synchroSuffix,
'listAttributes' : valuesToAdd,
'changetype' : 'add' }
@@ -832,10 +843,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : 'uid=jwallace, ou=People,%s' % synchroSuffix,
'dsFilter' : 'postaladdress=38000 Grenoble',
'expectedRC' : 0 }
@@ -854,7 +865,7 @@
<!-- Verify the synchronization of the trees among the servers in the topology -->
<call function="'verifyTrees'">
- [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
</call>
<call function="'testCase_Postamble'"/>
@@ -890,11 +901,11 @@
<!-- Modify "master" server -->
<call function="'modifyAnAttribute'">
- { 'dsPath' : server1Path,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort(),
- 'dsInstanceDn' : server1.getRootDn(),
- 'dsInstancePswd' : server1.getRootPwd(),
+ { 'dsPath' : masterPath,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
'DNToModify' : 'uid=jwallace, ou=People,%s' % synchroSuffix,
'listAttributes' : valuesToDelete,
'changetype' : 'delete' }
@@ -904,10 +915,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : 'uid=jwallace, ou=People,%s' % synchroSuffix,
'dsFilter' : 'postaladdress=Residence Letilleuil',
'expectedRC' : 0 }
@@ -926,7 +937,7 @@
<!-- Verify the synchronization of the trees among the servers in the topology -->
<call function="'verifyTrees'">
- [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
</call>
<call function="'testCase_Postamble'"/>
@@ -953,48 +964,29 @@
'Replication: Basic: Modify Entry - replace case sensitive attribute. Check that case sensitive attribute modifications are replicated.'
</message>
-
- <script>
- entryAttributes = []
- entryAttributes.append('cn: Tom Fitter')
- entryAttributes.append('sn: Fitter')
- entryAttributes.append('givenname: Tom')
- entryAttributes.append('objectclass: top')
- entryAttributes.append('objectclass: person')
- entryAttributes.append('objectclass: organizationalPerson')
- entryAttributes.append('objectclass: inetOrgPerson')
- entryAttributes.append('ou: Accounting')
- entryAttributes.append('ou: People')
- entryAttributes.append('l: Sunnyvale')
- entryAttributes.append('uid: tfitter')
- entryAttributes.append('mail: tfitter@example.com')
- entryAttributes.append('telephonenumber: +1 804 555 8974')
- entryAttributes.append('facsimiletelephonenumber: +1 804 555 1579')
- entryAttributes.append('roomnumber: 2164')
- entryAttributes.append('userpassword: hamstring')
- entryAttributes.append('description: PROFESSION Tap Fitter and PLUMBER')
-
+
+ <!-- Modify "master" server -->
+ <call function="'addEntry'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : masterHost,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'entryToBeAdded' : '%s/replication/tfitter.ldif' % clientDataDir }
+ </call>
+
+ <script>
valuesToReplace = []
valuesToReplace.append('description: Profession Tap Fitter and Plumber')
</script>
- <!-- Modify "master" server -->
- <call function="'addAnEntry'">
- { 'dsPath' : server1Path,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort(),
- 'dsInstanceDn' : server1.getRootDn(),
- 'dsInstancePswd' : server1.getRootPwd(),
- 'DNToAdd' : 'uid=tfitter, ou=People,%s' % synchroSuffix,
- 'listAttributes' : entryAttributes }
- </call>
-
<call function="'modifyAnAttribute'">
- { 'dsPath' : server1Path,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort(),
- 'dsInstanceDn' : server1.getRootDn(),
- 'dsInstancePswd' : server1.getRootPwd(),
+ { 'dsPath' : masterPath,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
'DNToModify' : 'uid=tfitter, ou=People,%s' % synchroSuffix,
'listAttributes' : valuesToReplace,
'changetype' : 'replace' }
@@ -1004,10 +996,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : 'uid=tfitter, ou=People,%s' % synchroSuffix,
'dsFilter' : 'description=Profession Tap Fitter and Plumber',
'expectedRC' : 0 }
@@ -1026,7 +1018,7 @@
<!-- Verify the synchronization of the trees among the servers in the topology -->
<call function="'verifyTrees'">
- [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
</call>
<call function="'testCase_Postamble'"/>
@@ -1077,10 +1069,10 @@
<call function="'ldapModifyWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsFilename' : '%s/%s' % (clientDataDir, filename) }
</call>
@@ -1089,10 +1081,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : 'uid=hmiller, ou=People,%s' % synchroSuffix,
'dsFilter' : 'jpegPhoto=*',
'expectedRC' : 0 }
@@ -1111,7 +1103,7 @@
<!-- Verify the synchronization of the trees among the servers in the topology -->
<call function="'verifyTrees'">
- [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
</call>
<call function="'testCase_Postamble'"/>
@@ -1162,10 +1154,10 @@
<call function="'ldapModifyWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsFilename' : '%s/%s' % (clientDataDir, filename) }
</call>
@@ -1174,10 +1166,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : 'uid=hmiller, ou=People,%s' % synchroSuffix,
'dsFilter' : 'jpegPhoto=*',
'expectedRC' : 0 }
@@ -1196,7 +1188,7 @@
<!-- Verify the synchronization of the trees among the servers in the topology -->
<call function="'verifyTrees'">
- [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
</call>
<call function="'testCase_Postamble'"/>
@@ -1248,10 +1240,10 @@
<call function="'ldapModifyWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsFilename' : '%s/%s' % (clientDataDir, filename) }
</call>
@@ -1259,10 +1251,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : 'uid=hmiller, ou=People,%s' % synchroSuffix,
'dsFilter' : 'jpegPhoto=*',
'expectedRC' : 0 }
@@ -1281,7 +1273,7 @@
<!-- Verify the synchronization of the trees among the servers in the topology -->
<call function="'verifyTrees'">
- [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
</call>
<call function="'testCase_Postamble'"/>
@@ -1332,10 +1324,10 @@
<call function="'ldapModifyWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsFilename' : '%s/%s' % (clientDataDir, filename) }
</call>
@@ -1345,10 +1337,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : 'uid=kvaughan, ou=People,%s' % synchroSuffix,
'dsFilter' : 'objectclass=*',
'expectedRC' : 32 }
@@ -1358,10 +1350,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : 'uid=kvaughan2, ou=People,%s' % synchroSuffix,
'dsFilter' : 'objectclass=*' }
</call>
@@ -1369,7 +1361,7 @@
<!-- Verify the synchronization of the trees among the servers in the topology -->
<call function="'verifyTrees'">
- [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
</call>
<call function="'testCase_Postamble'"/>
@@ -1421,10 +1413,10 @@
<call function="'ldapModifyWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsFilename' : '%s/%s' % (clientDataDir, filename) }
</call>
@@ -1434,10 +1426,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : 'uid=jwallace, ou=People,%s' % synchroSuffix,
'dsFilter' : 'objectclass=*',
'expectedRC' : 32 }
@@ -1447,10 +1439,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : 'uid=igueye, ou=People,%s' % synchroSuffix,
'dsFilter' : 'uid=jwallace' }
</call>
@@ -1468,7 +1460,7 @@
<!-- Verify the synchronization of the trees among the servers in the topology -->
<call function="'verifyTrees'">
- [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
</call>
<call function="'testCase_Postamble'"/>
@@ -1520,10 +1512,10 @@
<call function="'ldapModifyWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsFilename' : '%s/%s' % (clientDataDir, filename) }
</call>
@@ -1533,10 +1525,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : 'uid=gfarmer, ou=People,%s' % synchroSuffix,
'dsFilter' : 'objectclass=*',
'expectedRC' : 32 }
@@ -1546,10 +1538,10 @@
<call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort() ,
+ 'dsInstanceDn' : master.getRootDn() ,
+ 'dsInstancePswd' : master.getRootPwd() ,
'dsBaseDN' : 'uid=gfarmer, ou=Special People, ou=Special Users,%s' % synchroSuffix,
'dsFilter' : 'objectclass=*' }
</call>
@@ -1557,7 +1549,7 @@
<!-- Verify the synchronization of the trees among the servers in the topology -->
<call function="'verifyTrees'">
- [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
</call>
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/replication/basic/replication_basic_setup.xml b/opendj-sdk/opends/tests/functional-tests/testcases/replication/basic/replication_basic_setup.xml
index 734eba6..ab185bb 100644
--- a/opendj-sdk/opends/tests/functional-tests/testcases/replication/basic/replication_basic_setup.xml
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/replication/basic/replication_basic_setup.xml
@@ -39,8 +39,7 @@
</message>
<script>
- server1Path = '%s/%s' % (server1.getDir(),OPENDSNAME)
- synchroSuffix = server1.getSynchronizedSuffixList()[0].getSuffixDn()
+ synchroSuffix = master.getSynchronizedSuffixList()[0].getSuffixDn()
entryDn = 'uid=scarter,%s' % synchroSuffix
grandchildEntryDn = 'uid=scarter,ou=People,o=replication tests,%s' % synchroSuffix
mod_type = 'replace'
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/replication/replication.xml b/opendj-sdk/opends/tests/functional-tests/testcases/replication/replication.xml
index 253d23d..410f172 100644
--- a/opendj-sdk/opends/tests/functional-tests/testcases/replication/replication.xml
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/replication/replication.xml
@@ -44,15 +44,31 @@
</script>
<call function="'testGroup_Preamble'"/>
-
+
<import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
file="'%s/testcases/replication/totalupdate/totalupdate.xml' % (TESTS_DIR)"/>
<call function="'main_totalupdate'" />
-
+
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/replication/binarycopy/replication_binarycopy.xml' % (TESTS_DIR)"/>
+ <call function="'replication_binarycopy'" />
+
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/replication/ldifimport/replication_ldifimport.xml' % (TESTS_DIR)"/>
+ <call function="'replication_ldifimport'" />
+
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/replication/resynchronization/replication_resynchronization.xml' % (TESTS_DIR)"/>
+ <call function="'replication_resynchronization'" />
+
<import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
file="'%s/testcases/replication/basic/replication_basic.xml' % (TESTS_DIR)"/>
<call function="'replication_basic'" />
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/replication/schema/replication_schema.xml' % (TESTS_DIR)"/>
+ <call function="'replication_schema'" />
+
<call function="'testGroup_Postamble'"/>
</sequence>
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/replication/replication_cleanup.xml b/opendj-sdk/opends/tests/functional-tests/testcases/replication/replication_cleanup.xml
index 46c55c6..222e448 100644
--- a/opendj-sdk/opends/tests/functional-tests/testcases/replication/replication_cleanup.xml
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/replication/replication_cleanup.xml
@@ -37,34 +37,12 @@
<sequence>
- <!-- Stop the servers in the topology -->
- <iterate var="server" in="_topologyServerList">
- <sequence>
-
- <message>
- 'Stop DS on host %s running on port %s' % (server.getHostname(),server.getPort())
- </message>
-
- <!--- Stop DS -->
- <call function="'StopDsWithScript'">
- { 'location' : server.getHostname(),
- 'dsHost' : server.getHostname(),
- 'dsPath' : '%s/%s' % (server.getDir(),OPENDSNAME),
- 'dsPort' : server.getPort(),
- 'dsBindDN' : server.getRootDn(),
- 'dsBindPwd' : server.getRootPwd() }
- </call>
-
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
-
- </sequence>
-
- </iterate>
+ <!-- Stop the servers in the topology -->
+ <call function="'stopServers'">
+ [_topologyServerList]
+ </call>
- <!-- Remove the topology created for the test suite -->
+ <!-- Remove the topology created for the test suite -->
<message>
'Remove DS topology created for the Synchronization Basic Test Suite'
</message>
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/replication/replication_setup.xml b/opendj-sdk/opends/tests/functional-tests/testcases/replication/replication_setup.xml
index 88d08e0..5875ff5 100644
--- a/opendj-sdk/opends/tests/functional-tests/testcases/replication/replication_setup.xml
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/replication/replication_setup.xml
@@ -68,45 +68,20 @@
server1 = _topologyServerList[0]
server2 = _topologyServerList[1]
+
+ master = _topologyServerList[0]
+ masterHost = master.getHostname()
+ masterPath = '%s/%s' % (master.getDir(),OPENDSNAME)
+ masterDataDir = '%s/%s' % (master.getDir(),relativeDataDir)
+
+ consumerList = _topologyServerList[1:]
</script>
<!-- Start the servers in the topology -->
- <iterate var="server" in="_topologyServerList">
- <sequence>
-
- <message>
- 'Start DS on host %s to run on port %s' % (server.getHostname(),server.getPort())
- </message>
-
- <!--- Start DS -->
- <call function="'StartDsWithScript'">
- { 'location' : server.getHostname(),
- 'dsPath' : '%s/%s' % (server.getDir(),OPENDSNAME) }
- </call>
-
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
-
- </sequence>
- </iterate>
-
- <!-- Check that the servers in the topology started -->
- <iterate var="server" in="_topologyServerList">
- <!--- Check that DS started -->
- <call function="'isAlive'">
- { 'location' : server.getHostname(),
- 'dsPath' : '%s/%s' % (server.getDir(),OPENDSNAME),
- 'dsInstanceHost' : server.getHostname(),
- 'dsInstancePort' : server.getPort(),
- 'dsInstanceDn' : server.getRootDn(),
- 'dsInstancePswd' : server.getRootPwd(),
- 'noOfLoops' : 5 ,
- 'noOfMilliSeconds' : 2000 }
- </call>
- </iterate>
-
+ <call function="'startServers'">
+ [_topologyServerList]
+ </call>
+
</sequence>
</block>
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/replication_binarycopy.xml b/opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/replication_binarycopy.xml
new file mode 100644
index 0000000..f3e51e5
--- /dev/null
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/replication_binarycopy.xml
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License"). You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ ! Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ ! Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+ <defaultcall function="replication_binarycopy"/>
+
+ <function name="replication_binarycopy">
+
+ <sequence>
+
+ <block name="'binarycopy'">
+
+ <sequence>
+
+ <script>
+ if not CurrentTestPath.has_key('group'):
+ CurrentTestPath['group']='replication'
+ CurrentTestPath['suite']=STAXCurrentBlock
+ </script>
+
+ <call function="'testSuite_Preamble'"/>
+
+ <!--- Test Suite information
+ #@TestSuiteName Replication Binary Copy Tests
+ #@TestSuitePurpose Verify that the servers in a replicated topology can be initialised by the means of a binary copy (backup-restore).
+ #@TestSuiteID Binary Copy Tests
+ #@TestSuiteGroup Binary Copy
+ #@TestGroup Replication
+ #@TestScript replication_binarycopy.xml
+ #@TestHTMLLink http://opends.dev.java.net/
+ -->
+
+
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/>
+ <call function="'replication_setup'" />
+
+ <script>
+ synchroSuffix = master.getSynchronizedSuffixList()[0].getSuffixDn()
+ </script>
+
+ <!--- Test Case information
+ #@TestMarker Replication Binary Copy Tests
+ #@TestName Replication: Binary Copy: Off-line initialisation
+ #@TestID Off-line initialisation
+ #@TestPurpose Initialise replicated servers using off-line backup/restore
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Binary Copy: Off-line initialisation'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Binary Copy: Off-line initialisation. Initialise replicated servers using off-line backup/restore'
+ </message>
+
+ <!-- Stop the servers in the topology -->
+ <call function="'stopServers'">
+ [_topologyServerList]
+ </call>
+
+
+ <!-- Import data into "master" server -->
+ <call function="'ImportLdifWithScript'">
+ { 'location' : masterHost,
+ 'dsPath' : masterPath,
+ 'dsLdifFile' : '%s/replication/Example.ldif' % masterDataDir }
+ </call>
+
+ <!-- Check some data was imported into "master" server -->
+ <call function="'checkImport'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsHost' : masterHost,
+ 'dsPort' : master.getPort(),
+ 'dsDn' : master.getRootDn(),
+ 'dsPswd' : master.getRootPwd(),
+ 'expectedEntries' : ['uid=scarter,ou=People,o=example',
+ 'uid=dmiller, ou=People, o=example',
+ 'uid=rhunt, ou=People, o=example'] }
+ </call>
+
+
+ <!-- Backup "master" server -->
+ <call function="'backup'">
+ { 'location' : masterHost,
+ 'dsPath' : masterPath,
+ 'backupDir' : '%s/replication/master_backup' % masterDataDir }
+ </call>
+
+ <!-- Copy backup to "consumer" servers and restore it -->
+ <paralleliterate var="consumer" in="consumerList">
+ <sequence>
+ <call function="'CopyFolderByExtension'">
+ { 'location' : masterHost,
+ 'remotehost' : consumer.getHostname(),
+ 'srcfolder' : '%s/replication/master_backup' % masterDataDir,
+ 'destfolder' : '%s/%s/replication/master_backup' % (consumer.getDir(),relativeDataDir),
+ 'extension' : '*' }
+ </call>
+
+ <call function="'restore'">
+ { 'location' : consumer.getHostname(),
+ 'dsPath' : '%s/%s' % (consumer.getDir(), OPENDSNAME),
+ 'backupDir' : '%s/%s/replication/master_backup' % (consumer.getDir(),relativeDataDir) }
+ </call>
+ </sequence>
+ </paralleliterate>
+
+
+
+ <!-- Start the servers in the topology -->
+ <call function="'startServers'">
+ [_topologyServerList]
+ </call>
+
+
+
+ <!-- Add entry to "master" server -->
+ <call function="'addEntry'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : masterHost,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'entryToBeAdded' : '%s/replication/tfitter.ldif' % clientDataDir }
+ </call>
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Binary Copy Tests
+ #@TestName Replication: Binary Copy: On-line initialisation
+ #@TestID On-line initialisation
+ #@TestPurpose Initialise replicated servers using on-line backup/restore
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Binary Copy: On-line initialisation'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Binary Copy: On-line initialisation. Initialise replicated servers using on-line backup/restore'
+ </message>
+
+ <!-- Clean the servers in the topology
+ <call function="'deleteTrees'">
+ [_topologyServerList, synchroSuffix, False]
+ </call> -->
+
+ <!-- Delete manually added entry so that replication server won't add it automatically later on -->
+ <call function="'ldapDeleteWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : master.getHostname(),
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'dsDn' : ['uid=tfitter, ou=People,%s' % synchroSuffix] }
+ </call>
+
+ <!-- Import data into "master" server -->
+ <call function="'importLdifTask'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : masterHost,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'taskID' : 'import task',
+ 'ldifFile' : '%s/replication/Example.ldif' % masterDataDir }
+ </call>
+
+ <!-- Check some data was imported into "master" server -->
+ <call function="'checkImport'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsHost' : masterHost,
+ 'dsPort' : master.getPort(),
+ 'dsDn' : master.getRootDn(),
+ 'dsPswd' : master.getRootPwd(),
+ 'expectedEntries' : ['uid=scarter,ou=People,o=example',
+ 'uid=dmiller, ou=People, o=example',
+ 'uid=rhunt, ou=People, o=example'],
+ 'startDS' : 'no' }
+ </call>
+
+
+ <!-- Backup "master" server -->
+ <call function="'backupTask'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : masterHost,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'taskID' : 'backup task',
+ 'backupDir' : '%s/replication/master_backup_online' % masterDataDir }
+ </call>
+
+ <!-- Copy backup to "consumer" servers and restore it -->
+ <paralleliterate var="consumer" in="consumerList">
+ <sequence>
+ <call function="'CopyFolderByExtension'">
+ { 'location' : masterHost,
+ 'remotehost' : consumer.getHostname(),
+ 'srcfolder' : '%s/replication/master_backup_online' % masterDataDir,
+ 'destfolder' : '%s/%s/replication/master_backup_online' % (consumer.getDir(),relativeDataDir),
+ 'extension' : '*' }
+ </call>
+
+ <call function="'restoreTask'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : consumer.getHostname(),
+ 'dsInstancePort' : consumer.getPort(),
+ 'dsInstanceDn' : consumer.getRootDn(),
+ 'dsInstancePswd' : consumer.getRootPwd(),
+ 'taskID' : 'restore task',
+ 'backupDir' : '%s/%s/replication/master_backup_online' % (consumer.getDir(),relativeDataDir) }
+ </call>
+ </sequence>
+ </paralleliterate>
+
+
+
+ <!-- Add entry to "master" server -->
+ <call function="'addEntry'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : masterHost,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'entryToBeAdded' : '%s/replication/tfitter.ldif' % clientDataDir }
+ </call>
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
+ <call function="'replication_cleanup'" />
+
+ <call function="'testSuite_Postamble'"/>
+
+ </sequence>
+
+ </block>
+
+ </sequence>
+
+ </function>
+
+</stax>
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/replication_ldifimport.xml b/opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/replication_ldifimport.xml
new file mode 100644
index 0000000..6a530b5
--- /dev/null
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/replication_ldifimport.xml
@@ -0,0 +1,300 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License"). You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ ! Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ ! Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+ <defaultcall function="replication_ldifimport"/>
+
+ <function name="replication_ldifimport">
+
+ <sequence>
+
+ <block name="'ldifimport'">
+
+ <sequence>
+
+ <script>
+ if not CurrentTestPath.has_key('group'):
+ CurrentTestPath['group']='replication'
+ CurrentTestPath['suite']=STAXCurrentBlock
+ </script>
+
+ <call function="'testSuite_Preamble'"/>
+
+ <!--- Test Suite information
+ #@TestSuiteName Replication Ldif Import Tests
+ #@TestSuitePurpose Verify that the servers in a replicated topology can be initialised by the means of an ldif import.
+ #@TestSuiteID Ldif Import Tests
+ #@TestSuiteGroup Ldif Import
+ #@TestGroup Replication
+ #@TestScript replication_ldifimport.xml
+ #@TestHTMLLink http://opends.dev.java.net/
+ -->
+
+
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/>
+ <call function="'replication_setup'" />
+
+ <script>
+ synchroSuffix = master.getSynchronizedSuffixList()[0].getSuffixDn()
+ </script>
+
+ <!--- Test Case information
+ #@TestMarker Replication Ldif Import Tests
+ #@TestName Replication: Ldif Import: Off-line initialisation
+ #@TestID Off-line initialisation
+ #@TestPurpose Initialise replicated servers using off-line export/import
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Ldif Import: Off-line initialisation'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Ldif Import: Off-line initialisation. Initialise replicated servers using off-line export/import'
+ </message>
+
+ <!-- Stop the servers in the topology -->
+ <call function="'stopServers'">
+ [_topologyServerList]
+ </call>
+
+
+ <!-- Import data into "master" server -->
+ <call function="'ImportLdifWithScript'">
+ { 'location' : masterHost,
+ 'dsPath' : masterPath,
+ 'dsLdifFile' : '%s/replication/Example.ldif' % masterDataDir }
+ </call>
+
+ <!-- Check some data was imported into "master" server -->
+ <call function="'checkImport'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsHost' : masterHost,
+ 'dsPort' : master.getPort(),
+ 'dsDn' : master.getRootDn(),
+ 'dsPswd' : master.getRootPwd(),
+ 'expectedEntries' : ['uid=scarter,ou=People,o=example',
+ 'uid=dmiller, ou=People, o=example',
+ 'uid=rhunt, ou=People, o=example'] }
+ </call>
+
+
+ <!-- Export data from "master" server -->
+ <call function="'exportLdif'">
+ { 'location' : masterHost,
+ 'dsPath' : masterPath,
+ 'ldifFile' : '%s/replication/master_export.ldif' % masterDataDir }
+ </call>
+
+ <!-- Copy export file to "consumer" servers and import it -->
+ <paralleliterate var="consumer" in="consumerList">
+ <sequence>
+ <call function="'copyFile'">
+ { 'location' : masterHost,
+ 'remotehost' : consumer.getHostname(),
+ 'srcfile' : '%s/replication/master_export.ldif' % masterDataDir,
+ 'destfile' : '%s/%s/replication/master_export.ldif' % (consumer.getDir(),relativeDataDir) }
+ </call>
+
+ <call function="'ImportLdifWithScript'">
+ { 'location' : consumer.getHostname(),
+ 'dsPath' : '%s/%s' % (consumer.getDir(), OPENDSNAME),
+ 'dsLdifFile' : '%s/%s/replication/master_export.ldif' % (consumer.getDir(),relativeDataDir) }
+ </call>
+ </sequence>
+ </paralleliterate>
+
+
+
+ <!-- Start the servers in the topology -->
+ <call function="'startServers'">
+ [_topologyServerList]
+ </call>
+
+
+ <!-- Add entry to "master" server -->
+ <call function="'addEntry'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : masterHost,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'entryToBeAdded' : '%s/replication/tfitter.ldif' % clientDataDir }
+ </call>
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Ldif Import Tests
+ #@TestName Replication: Ldif Import: On-line initialisation
+ #@TestID On-line initialisation
+ #@TestPurpose Initialise replicated servers using on-line export/import
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Ldif Import: On-line initialisation'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Ldif Import: On-line initialisation. Initialise replicated servers using on-line export/import'
+ </message>
+
+ <!-- Clean the servers in the topology
+ <call function="'deleteTrees'">
+ [_topologyServerList, synchroSuffix, False]
+ </call> -->
+
+ <!-- Delete manually added entry so that replication server won't add it automatically later on -->
+ <call function="'ldapDeleteWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : master.getHostname(),
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'dsDn' : ['uid=tfitter, ou=People,%s' % synchroSuffix] }
+ </call>
+
+ <!-- Import data into "master" server -->
+ <call function="'importLdifTask'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : masterHost,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'taskID' : 'import task',
+ 'ldifFile' : '%s/replication/Example.ldif' % masterDataDir }
+ </call>
+
+ <!-- Check some data was imported into "master" server -->
+ <call function="'checkImport'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsHost' : masterHost,
+ 'dsPort' : master.getPort(),
+ 'dsDn' : master.getRootDn(),
+ 'dsPswd' : master.getRootPwd(),
+ 'expectedEntries' : ['uid=scarter,ou=People,o=example',
+ 'uid=dmiller, ou=People, o=example',
+ 'uid=rhunt, ou=People, o=example'],
+ 'startDS' : 'no' }
+ </call>
+
+
+ <!-- Export data from "master" server -->
+ <call function="'exportLdifTask'">
+ { 'location' : masterHost,
+ 'dsPath' : masterPath,
+ 'dsInstanceHost' : masterHost,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'taskID' : 'export task',
+ 'ldifFile' : '%s/replication/master_export_online.ldif' % masterDataDir }
+ </call>
+
+ <!-- Copy export file to "consumer" servers and import it -->
+ <paralleliterate var="consumer" in="consumerList">
+ <sequence>
+ <call function="'copyFile'">
+ { 'location' : masterHost,
+ 'remotehost' : consumer.getHostname(),
+ 'srcfile' : '%s/replication/master_export_online.ldif' % masterDataDir,
+ 'destfile' : '%s/%s/replication/master_export_online.ldif' % (consumer.getDir(),relativeDataDir) }
+ </call>
+
+ <call function="'importLdifTask'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : consumer.getHostname(),
+ 'dsInstancePort' : consumer.getPort(),
+ 'dsInstanceDn' : consumer.getRootDn(),
+ 'dsInstancePswd' : consumer.getRootPwd(),
+ 'taskID' : 'import task',
+ 'ldifFile' : '%s/%s/replication/master_export_online.ldif' % (consumer.getDir(),relativeDataDir) }
+ </call>
+ </sequence>
+ </paralleliterate>
+
+
+
+ <!-- Add entry to "master" server -->
+ <call function="'addEntry'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : masterHost,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'entryToBeAdded' : '%s/replication/tfitter.ldif' % clientDataDir }
+ </call>
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
+ <call function="'replication_cleanup'" />
+
+ <call function="'testSuite_Postamble'"/>
+
+ </sequence>
+
+ </block>
+
+ </sequence>
+
+ </function>
+
+</stax>
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/replication_resynchronization.xml b/opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/replication_resynchronization.xml
new file mode 100644
index 0000000..f44cebd
--- /dev/null
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/replication_resynchronization.xml
@@ -0,0 +1,316 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License"). You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ ! Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ ! Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+ <defaultcall function="replication_resynchronization"/>
+
+ <function name="replication_resynchronization">
+
+ <sequence>
+
+ <block name="'resynchronization'">
+
+ <sequence>
+
+ <script>
+ if not CurrentTestPath.has_key('group'):
+ CurrentTestPath['group']='replication'
+ CurrentTestPath['suite']=STAXCurrentBlock
+ </script>
+
+ <call function="'testSuite_Preamble'"/>
+
+ <!--- Test Suite information
+ #@TestSuiteName Replication Re-Synchronization Tests
+ #@TestSuitePurpose Verify that the servers in a replicated topology can be initialised with an old backup and still re-synchronize.
+ #@TestSuiteID Re-Synchronization Tests
+ #@TestSuiteGroup Re-Synchronization
+ #@TestGroup Replication
+ #@TestScript replication_resynchronization.xml
+ #@TestHTMLLink http://opends.dev.java.net/
+ -->
+
+
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/>
+ <call function="'replication_setup'" />
+
+ <script>
+ synchroSuffix = master.getSynchronizedSuffixList()[0].getSuffixDn()
+ </script>
+
+ <!--- Test Case information
+ #@TestMarker Replication Re-Synchronization Tests
+ #@TestName Replication: Re-Synchronization: Off-line initialisation
+ #@TestID Off-line initialisation
+ #@TestPurpose Initialise replicated servers using off-line backup/restore
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Re-Synchronization: Off-line initialisation'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Re-Synchronization: Off-line initialisation. Initialise replicated servers using off-line backup/restore'
+ </message>
+
+ <!-- Stop the servers in the topology -->
+ <call function="'stopServers'">
+ [_topologyServerList]
+ </call>
+
+
+ <!-- Import data into "master" server -->
+ <call function="'ImportLdifWithScript'">
+ { 'location' : masterHost,
+ 'dsPath' : masterPath,
+ 'dsLdifFile' : '%s/replication/Example.ldif' % masterDataDir }
+ </call>
+
+ <!-- Check some data was imported into "master" server -->
+ <call function="'checkImport'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsHost' : masterHost,
+ 'dsPort' : master.getPort(),
+ 'dsDn' : master.getRootDn(),
+ 'dsPswd' : master.getRootPwd(),
+ 'expectedEntries' : ['uid=scarter,ou=People,o=example',
+ 'uid=dmiller, ou=People, o=example',
+ 'uid=rhunt, ou=People, o=example'] }
+ </call>
+
+
+ <!-- Backup "master" server -->
+ <call function="'backup'">
+ { 'location' : masterHost,
+ 'dsPath' : masterPath,
+ 'backupDir' : '%s/replication/master_backup' % masterDataDir }
+ </call>
+
+
+ <!-- Start the "master" server -->
+ <call function="'StartDsWithScript'">
+ { 'location' : masterHost,
+ 'dsPath' : masterPath }
+ </call>
+
+
+ <!-- Add entry to "master" server -->
+ <call function="'addEntry'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : masterHost,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'entryToBeAdded' : '%s/replication/tfitter.ldif' % clientDataDir }
+ </call>
+
+
+ <!-- Copy backup to "consumer" servers and restore it -->
+ <paralleliterate var="consumer" in="consumerList">
+ <sequence>
+ <call function="'CopyFolderByExtension'">
+ { 'location' : masterHost,
+ 'remotehost' : consumer.getHostname(),
+ 'srcfolder' : '%s/replication/master_backup' % masterDataDir,
+ 'destfolder' : '%s/%s/replication/master_backup' % (consumer.getDir(),relativeDataDir),
+ 'extension' : '*' }
+ </call>
+
+ <call function="'restore'">
+ { 'location' : consumer.getHostname(),
+ 'dsPath' : '%s/%s' % (consumer.getDir(), OPENDSNAME),
+ 'backupDir' : '%s/%s/replication/master_backup' % (consumer.getDir(),relativeDataDir) }
+ </call>
+ </sequence>
+ </paralleliterate>
+
+
+
+ <!-- Start the "consumer" servers -->
+ <call function="'startServers'">
+ [consumerList]
+ </call>
+
+
+
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Re-Synchronization Tests
+ #@TestName Replication: Re-Synchronization: On-line initialisation
+ #@TestID On-line initialisation
+ #@TestPurpose Initialise replicated servers using on-line backup/restore
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Re-Synchronization: On-line initialisation'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Re-Synchronization: On-line initialisation. Initialise replicated servers using on-line backup/restore'
+ </message>
+
+ <!-- Clean the servers in the topology
+ <call function="'deleteTrees'">
+ [_topologyServerList, synchroSuffix, False]
+ </call> -->
+
+ <!-- Delete manually added entry so that replication server won't add it automatically later on -->
+ <call function="'ldapDeleteWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : master.getHostname(),
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'dsDn' : ['uid=tfitter, ou=People,%s' % synchroSuffix] }
+ </call>
+
+ <!-- Import data into "master" server -->
+ <call function="'importLdifTask'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : masterHost,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'taskID' : 'import task',
+ 'ldifFile' : '%s/replication/Example.ldif' % masterDataDir }
+ </call>
+
+ <!-- Check some data was imported into "master" server -->
+ <call function="'checkImport'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsHost' : masterHost,
+ 'dsPort' : master.getPort(),
+ 'dsDn' : master.getRootDn(),
+ 'dsPswd' : master.getRootPwd(),
+ 'expectedEntries' : ['uid=scarter,ou=People,o=example',
+ 'uid=dmiller, ou=People, o=example',
+ 'uid=rhunt, ou=People, o=example'],
+ 'startDS' : 'no' }
+ </call>
+
+
+ <!-- Backup "master" server -->
+ <call function="'backupTask'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : masterHost,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'taskID' : 'backup task',
+ 'backupDir' : '%s/replication/master_backup_online' % masterDataDir }
+ </call>
+
+
+
+ <!-- Add entry to "master" server -->
+ <call function="'addEntry'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : masterHost,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'entryToBeAdded' : '%s/replication/tfitter.ldif' % clientDataDir }
+ </call>
+
+
+ <!-- Copy backup to "consumer" servers and restore it -->
+ <paralleliterate var="consumer" in="consumerList">
+ <sequence>
+ <call function="'CopyFolderByExtension'">
+ { 'location' : masterHost,
+ 'remotehost' : consumer.getHostname(),
+ 'srcfolder' : '%s/replication/master_backup_online' % masterDataDir,
+ 'destfolder' : '%s/%s/replication/master_backup_online' % (consumer.getDir(),relativeDataDir),
+ 'extension' : '*' }
+ </call>
+
+ <call function="'restoreTask'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : consumer.getHostname(),
+ 'dsInstancePort' : consumer.getPort(),
+ 'dsInstanceDn' : consumer.getRootDn(),
+ 'dsInstancePswd' : consumer.getRootPwd(),
+ 'taskID' : 'restore task',
+ 'backupDir' : '%s/%s/replication/master_backup_online' % (consumer.getDir(),relativeDataDir) }
+ </call>
+ </sequence>
+ </paralleliterate>
+
+
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
+ <call function="'replication_cleanup'" />
+
+ <call function="'testSuite_Postamble'"/>
+
+ </sequence>
+
+ </block>
+
+ </sequence>
+
+ </function>
+
+</stax>
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/replication_schema.xml b/opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/replication_schema.xml
new file mode 100644
index 0000000..1e95063
--- /dev/null
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/replication_schema.xml
@@ -0,0 +1,313 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License"). You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ ! Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ ! Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+ <defaultcall function="replication_schema"/>
+
+ <function name="replication_schema">
+
+ <sequence>
+
+ <block name="'schema'">
+
+ <sequence>
+
+ <script>
+ if not CurrentTestPath.has_key('group'):
+ CurrentTestPath['group']='replication'
+ CurrentTestPath['suite']=STAXCurrentBlock
+ </script>
+
+ <call function="'testSuite_Preamble'"/>
+
+ <!--- Test Suite information
+ #@TestSuiteName Replication Schema Replication Tests
+ #@TestSuitePurpose Verify that the schema is replicated as any other suffix in a replicated topology.
+ #@TestSuiteID Schema Replication Tests
+ #@TestSuiteGroup Schema Replication
+ #@TestGroup Replication
+ #@TestScript replication_schema.xml
+ #@TestHTMLLink http://opends.dev.java.net/
+ -->
+
+
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/>
+ <call function="'replication_setup'" />
+
+ <script>
+ synchroSuffix = master.getSynchronizedSuffixList()[0].getSuffixDn()
+ replServerList = master.getSynchronizedSuffixList()[0].getChangelogServerList()
+ </script>
+
+ <iterate var="server" in="_topologyServerList" indexvar="i">
+ <sequence>
+ <message>
+ 'Create domain name for schema on server %s/%s' % (server.getDir(), OPENDSNAME)
+ </message>
+
+ <call function="'createMultimasterDomain'">
+ { 'location' : server.getHostname(),
+ 'dsPath' : '%s/%s' % (server.getDir(), OPENDSNAME),
+ 'dsInstanceHost' : server.getHostname(),
+ 'dsInstancePort' : server.getPort(),
+ 'dsInstanceDn' : server.getRootDn(),
+ 'dsInstancePswd' : server.getRootPwd(),
+ 'domainName' : 'schema',
+ 'replicationDn' : 'cn=schema',
+ 'serverId' : i + 1,
+ 'replicationServerList' : replServerList }
+ </call>
+ </sequence>
+ </iterate>
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Schema Replication Tests
+ #@TestName Replication: Schema Replication: Add objectclass
+ #@TestID Add objectclass
+ #@TestPurpose Check schema replication when a new objectclass is added
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Schema Replication: Add objectclass'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Schema Replication: Add objectclass. Check schema replication when a new objectclass is added'
+ </message>
+
+ <!-- Load entries into "master" server -->
+ <call function="'addEntry'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : masterHost,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'entryToBeAdded' : '%s/replication/Example.ldif' % clientDataDir }
+ </call>
+
+ <script>
+ newObjectclass = '( testobjectclass-oid NAME \'testobjectclass-0\' SUP person MAY ( street $ c ) X-ORIGIN \'user defined\' )'
+ </script>
+
+ <!-- Modify schema in "master" server -->
+ <call function="'modifyAnAttribute'">
+ { 'dsPath' : masterPath,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'DNToModify' : 'cn=schema',
+ 'attributeName' : 'objectClasses',
+ 'newAttributeValue' : newObjectclass,
+ 'changetype' : 'add' }
+ </call>
+
+ <!-- Add entry to "master" server -->
+ <call function="'addEntry'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : masterHost,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'entryToBeAdded' : '%s/replication/testuser-0.ldif' % clientDataDir }
+ </call>
+
+ <!-- Verify the synchronization of the schema among the servers in the topology -->
+ <call function="'verifySchemas'">
+ [ clientHost, clientPath, master, consumerList, '99-user.ldif' ]
+ </call>
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Schema Replication Tests
+ #@TestName Replication: Schema Replication: Add attributetype
+ #@TestID Add attributetype
+ #@TestPurpose Check schema replication when a new attributetype is added
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Schema Replication: Add attributetype'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Schema Replication: Add attributetype Check schema replication when a new attributetype is added'
+ </message>
+
+ <script>
+ newObjectclass = '( testobjectclass1-oid NAME \'testobjectclass-1\' SUP person MAY ( street $ testattribute-1 $ c ) X-ORIGIN \'user defined\' )'
+ newAttributetype = '( testattribute1-oid NAME \'testattribute-1\' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN \'user defined\' )'
+ </script>
+
+ <!-- Modify schema in "master" server -->
+ <call function="'modifyAnAttribute'">
+ { 'dsPath' : masterPath,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'DNToModify' : 'cn=schema',
+ 'attributeName' : 'attributeTypes',
+ 'newAttributeValue' : newAttributetype,
+ 'changetype' : 'add' }
+ </call>
+ <call function="'modifyAnAttribute'">
+ { 'dsPath' : masterPath,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'DNToModify' : 'cn=schema',
+ 'attributeName' : 'objectClasses',
+ 'newAttributeValue' : newObjectclass,
+ 'changetype' : 'add' }
+ </call>
+
+ <!-- Add entry to "master" server -->
+ <call function="'addEntry'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : masterHost,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'entryToBeAdded' : '%s/replication/testuser-1.ldif' % clientDataDir }
+ </call>
+
+ <!-- Verify the synchronization of the schema among the servers in the topology -->
+ <call function="'verifySchemas'">
+ [ clientHost, clientPath, master, consumerList, '99-user.ldif' ]
+ </call>
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Schema Replication Tests
+ #@TestName Replication: Schema Replication: Delete objectclass
+ #@TestID Delete objectclass
+ #@TestPurpose Check schema replication when an objectclass is deleted
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+
+ <testcase name="'Replication: Schema Replication: Delete objectclass'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Schema Replication: Delete objectclass Check schema replication when an objectclass is deleted'
+ </message>
+
+ <script>
+ newObjectclass = '( testobjectclass-oid NAME \'testobjectclass-0\' SUP person MAY ( street $ c ) X-ORIGIN \'user defined\' )'
+ </script>
+
+ <!-- Modify schema in "master" server
+ <call function="'modifyAnAttribute'">
+ { 'dsPath' : masterPath,
+ 'dsInstanceHost' : masterHost ,
+ 'dsInstancePort' : master.getPort(),
+ 'dsInstanceDn' : master.getRootDn(),
+ 'dsInstancePswd' : master.getRootPwd(),
+ 'DNToModify' : 'cn=schema',
+ 'attributeName' : 'objectClasses',
+ 'newAttributeValue' : newObjectclass,
+ 'changetype' : 'delete' }
+ </call>
+
+ <!-- Try to add entry to servers; should be rejected with error 65 (objectclass violation)
+ <iterate var="server" in="_topologyServerList">
+ <call function="'addEntry'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server.getHostname(),
+ 'dsInstancePort' : server.getPort(),
+ 'dsInstanceDn' : server.getRootDn(),
+ 'dsInstancePswd' : server.getRootPwd(),
+ 'entryToBeAdded' : '%s/replication/testuser-0.ldif' % clientDataDir,
+ 'expectedRC' : 65 }
+ </call>
+ </iterate>
+
+ <!-- Verify the synchronization of the schema among the servers in the topology
+ <call function="'verifySchemas'">
+ [ clientHost, clientPath, master, consumerList, '99-user.ldif' ]
+ </call>
+
+ <!-- Verify the synchronization of the trees among the servers in the topology
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, master, consumerList, synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+-->
+
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
+ <call function="'replication_cleanup'" />
+
+ <call function="'testSuite_Postamble'"/>
+
+ </sequence>
+
+ </block>
+
+ </sequence>
+
+ </function>
+
+</stax>
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/totalupdate.xml b/opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/totalupdate.xml
index 276e071..f6b13a1 100644
--- a/opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/totalupdate.xml
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/totalupdate.xml
@@ -137,12 +137,12 @@
<!-- Verify the total update -->
<call function="'checkImport'">
- { 'location' : server1.getHostname(),
- 'dsPath' : '%s/%s' % (server1.getDir(),OPENDSNAME),
- 'dsHost' : server1.getHostname(),
- 'dsPort' : server1.getPort(),
- 'dsDn' : server1.getRootDn(),
- 'dsPswd' : server1.getRootPwd(),
+ { 'location' : server2.getHostname(),
+ 'dsPath' : '%s/%s' % (server2.getDir(),OPENDSNAME),
+ 'dsHost' : server2.getHostname(),
+ 'dsPort' : server2.getPort(),
+ 'dsDn' : server2.getRootDn(),
+ 'dsPswd' : server2.getRootPwd(),
'expectedEntries' : ['uid=scarter,ou=People,o=example',
'uid=dmiller, ou=People, o=example',
'uid=rhunt, ou=People, o=example'],
--
Gitblit v1.10.0