mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

ugaston
05.11.2007 84adb34c0da050c5774cb48cee4bb2dda61ef2f1
Extend schema replication testsuite
8 files added
2 files modified
588 ■■■■■ changed files
opends/tests/functional-tests/shared/data/replication/newtestuser-0.ldif 8 ●●●●● patch | view | raw | blame | history
opends/tests/functional-tests/shared/data/replication/newtestuser-1.ldif 10 ●●●●● patch | view | raw | blame | history
opends/tests/functional-tests/shared/data/replication/newtestuser-2.ldif 9 ●●●●● patch | view | raw | blame | history
opends/tests/functional-tests/shared/data/replication/schemamods-0.ldif 5 ●●●●● patch | view | raw | blame | history
opends/tests/functional-tests/shared/data/replication/schemamods-1.ldif 8 ●●●●● patch | view | raw | blame | history
opends/tests/functional-tests/shared/data/replication/schemamods-2.ldif 5 ●●●●● patch | view | raw | blame | history
opends/tests/functional-tests/shared/data/replication/schemamods-3.ldif 8 ●●●●● patch | view | raw | blame | history
opends/tests/functional-tests/shared/data/replication/testuser-2.ldif 9 ●●●●● patch | view | raw | blame | history
opends/tests/functional-tests/shared/functions/tools.xml 121 ●●●●● patch | view | raw | blame | history
opends/tests/functional-tests/testcases/replication/schema/schema.xml 405 ●●●●● patch | view | raw | blame | history
opends/tests/functional-tests/shared/data/replication/newtestuser-0.ldif
New file
@@ -0,0 +1,8 @@
dn: cn=newtestuser-0,ou=people,o=example
objectclass: top
objectclass: person
objectclass: newtestobjectclass-0
cn: newtestuser-0
sn: New Test
c: New Testland
street: New Test Lane
opends/tests/functional-tests/shared/data/replication/newtestuser-1.ldif
New file
@@ -0,0 +1,10 @@
dn: cn=newtestuser-1,ou=people,o=example
objectclass: top
objectclass: person
objectclass: newtestobjectclass-1
cn: newtestuser-1
sn: New Test
c: New Testland
street: New Test Lane
newtestattribute-1: new test attribute
opends/tests/functional-tests/shared/data/replication/newtestuser-2.ldif
New file
@@ -0,0 +1,9 @@
dn: cn=newtestuser-2,ou=people,o=example
objectclass: top
objectclass: person
objectclass: newtestobjectclass-1
cn: newtestuser-2
sn: New Test
c: New Testland
street: New Test Lane
opends/tests/functional-tests/shared/data/replication/schemamods-0.ldif
New file
@@ -0,0 +1,5 @@
dn: cn=schema
changetype: modify
add: objectClasses
objectClasses: ( newtestobjectclass-oid NAME 'newtestobjectclass-0' SUP person MUST ( street $ c ) X-ORIGIN 'user defined' )
opends/tests/functional-tests/shared/data/replication/schemamods-1.ldif
New file
@@ -0,0 +1,8 @@
dn: cn=schema
changetype: modify
add: attributeTypes
attributeTypes: ( newtestattribute1-oid NAME 'newtestattribute-1' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'user defined' )
-
add: objectClasses
objectClasses: ( newtestobjectclass1-oid NAME 'newtestobjectclass-1' SUP person MAY ( street $ newtestattribute-1 $ c ) X-ORIGIN 'user defined' )
opends/tests/functional-tests/shared/data/replication/schemamods-2.ldif
New file
@@ -0,0 +1,5 @@
dn: cn=schema
changetype: modify
delete: objectClasses
objectClasses: ( newtestobjectclass-oid NAME 'newtestobjectclass-0' SUP person MUST ( street $ c ) X-ORIGIN 'user defined' )
opends/tests/functional-tests/shared/data/replication/schemamods-3.ldif
New file
@@ -0,0 +1,8 @@
dn: cn=schema
changetype: modify
delete: objectClasses
objectClasses: ( newtestobjectclass1-oid NAME 'newtestobjectclass-1' SUP person MAY ( street $ newtestattribute-1 $ c ) X-ORIGIN 'user defined' )
-
add: objectClasses
objectClasses: ( newtestobjectclass1-oid NAME 'newtestobjectclass-1' SUP person MUST ( street $ newtestattribute-1 $ c ) X-ORIGIN 'user defined' )
opends/tests/functional-tests/shared/data/replication/testuser-2.ldif
New file
@@ -0,0 +1,9 @@
dn: cn=testuser-2,ou=people,o=example
objectclass: top
objectclass: person
objectclass: testobjectclass-1
cn: testuser-2
sn: Test
c: Testland
street: Test Lane
opends/tests/functional-tests/shared/functions/tools.xml
@@ -35,7 +35,7 @@
    <function-map-args>
      <function-arg-def name="location"
                        type="optional"
                        default="STAXServiceMachine">
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Location of target host
        </function-arg-description>
@@ -135,7 +135,7 @@
  </function> 
  
  
  <!-- This function starts DS using the start-ds script -->
  <!-- This function compares two LDIF files using the ldif-diff script -->
  <function name="LdifDiffWithScript">
    <function-prolog>
      This function  compares two LDIF files and reports the differences in LDIF format
@@ -143,7 +143,7 @@
    <function-map-args>
      <function-arg-def name="location"
                        type="optional"
                        default="STAXServiceMachine">
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Location of target host
        </function-arg-description>
@@ -273,6 +273,105 @@
  </function>
  
  
  <!-- This function modifies an LDIF file using ldifmodify script -->
  <function name="LdifModifyWithScript">
    <function-prolog>
      This function modifies an LDIF file with the changes contained in another LDIF file
    </function-prolog>
    <function-map-args>
      <function-arg-def name="location"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <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="version" type="optional">
        <function-arg-description>
          Display Directory Server version information
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
      <function-arg-def name="sourceLdif" type="required">
        <function-arg-description>
          LDIF file containing the data to be updated
        </function-arg-description>
        <function-arg-property name="type" value="filepath"/>
      </function-arg-def>
      <function-arg-def name="targetLdif" type="required">
        <function-arg-description>
          LDIF file that will contain the updated data
        </function-arg-description>
        <function-arg-property name="type" value="filepath"/>
      </function-arg-def>
      <function-arg-def name="changesLdif" type="required">
        <function-arg-description>
          LDIF file containing the changes to apply
        </function-arg-description>
        <function-arg-property name="type" value="filepath"/>
      </function-arg-def>
      <function-arg-def name="Help" type="optional">
        <function-arg-description>
          Help option
        </function-arg-description>
        <function-arg-property name="help" value="option"/>
      </function-arg-def>
    </function-map-args>
    <sequence>
      <!-- Build the Command -->
      <script>
        STAFCmdParamsList=[]
        STAFCmdParams=''
        if dsPath:
          dsBinPath='%s/%s' % (dsPath,fileFolder)
          STAFCmd='%s/ldifmodify%s' % (dsBinPath,fileExt)
        if version:
          STAFCmdParamsList.append('-V')
        if sourceLdif:
          STAFCmdParamsList.append('-s %s' % sourceLdif)
        if targetLdif:
          STAFCmdParamsList.append('-t %s' % targetLdif)
        if changesLdif:
          STAFCmdParamsList.append('-m %s' % changesLdif)
        if Help:
          STAFCmdParamsList.append('-H')
        STAFCmdParams=' '.join(STAFCmdParamsList)
      </script>
      <call function="'runCommand'">
        { 'name'      : 'LDIF Modify Script',
          'location'  : location,
          'command'   : STAFCmd,
          'arguments' : STAFCmdParams,
        }
      </call>
      <return>STAXResult</return>
    </sequence>
  </function>
  <function name="verifyTrees">
    <function-prolog>
      This function verifies that the trees in a group of ldap servers are synchronized.
@@ -280,7 +379,7 @@
    <function-list-args>
      <function-arg-def name="location"
                        type="optional"
                        default="STAXServiceMachine">
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Location of target host
        </function-arg-description>
@@ -394,9 +493,9 @@
          failingServerList = 'List of non-synchronized servers (tree verify FAILED): %s ' % comma.join(failedServers)
        </script>
        <else>
          <script>
            failingServerList = 'All servers synchronized (tree verify SUCCEEDED).'
          </script>
          <message>
            'All servers synchronized (tree verify SUCCEEDED).'
          </message>
        </else>
      </if>
      <call function="'checktestRC'">
@@ -417,7 +516,7 @@
    <function-list-args>
      <function-arg-def name="location"
                        type="optional"
                        default="STAXServiceMachine">
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Location of target host
        </function-arg-description>
@@ -506,9 +605,9 @@
          failingServerList = 'List of non-synchronized servers (schema verify FAILED): %s ' % comma.join(failedServers)
        </script>
        <else>
          <script>
            failingServerList = 'All servers synchronized (schema verify SUCCEEDED).'
          </script>
          <message>
            'All servers synchronized (schema verify SUCCEEDED).'
          </message>
        </else>
      </if>
      <call function="'checktestRC'">
opends/tests/functional-tests/testcases/replication/schema/schema.xml
@@ -63,6 +63,9 @@
          <script>
            synchroSuffix = master.getSynchronizedSuffixList()[0].getSuffixDn()    
            replServerList = master.getSynchronizedSuffixList()[0].getChangelogServerList()
            currentSchemaFile = '%s/config/schema/99-user.ldif' % masterPath
            provSchemaFile = '%s/../last-99-user.ldif' % masterPath
          </script>            
            
          <iterate var="server" in="_topologyServerList" indexvar="i">
@@ -267,6 +270,18 @@
                  'changetype' : 'delete' }
              </call>
              <!-- Delete previously added entry -->
              <call function="'ldapDeleteWithScript'">
                { 'location'       :  clientHost,
                  'dsPath'         :  clientPath,
                  'dsInstanceHost' :  master.getHostname(),
                  'dsInstancePort' :  master.getPort(),
                  'dsInstanceDn'   : master.getRootDn(),
                  'dsInstancePswd' :  master.getRootPwd(),
                  'dsDn'           :  ['cn=testuser-0,ou=People,%s' % synchroSuffix]
                }
              </call>
              <!-- Try to add entry to servers; should be rejected with error 65 (objectclass violation) -->
              <iterate var="server" in="_topologyServerList">
                <call function="'addEntry'">
@@ -295,6 +310,396 @@
            </sequence>
          </testcase>                                                                     
 
          <!-- Test Case information
          #@TestMarker          Replication Schema Replication Tests
          #@TestName            Replication: Schema Replication: Modify objectclass
          #@TestID                  Modify objectclass
          #@TestPurpose        Check schema replication when an objectclass is modified
          #@TestPreamble
          #@TestSteps
          #@TestPostamble
          #@TestResult
          -->
          <testcase name="getTestCaseName('Modify objectclass')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                 'Replication: Schema Replication: Modify objectclass Check schema replication when an objectclass is modified'
              </message>
              <script>
                oldObjectclass = '( testobjectclass1-oid NAME \'testobjectclass-1\' SUP person MAY ( street $ testattribute-1 $ c ) X-ORIGIN \'user defined\' )'
                newObjectclass = '( testobjectclass1-oid NAME \'testobjectclass-1\' SUP person MUST ( street $ testattribute-1 $ 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' : oldObjectclass,
                  'changetype' : 'delete' }
              </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>
              <!-- 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-2.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>
          <!--- Test Case information
          #@TestMarker          Replication Schema Replication Tests
          #@TestName            Replication: Schema Replication: Add objectclass (edit schema file)
          #@TestID                  Add objectclass (edit schema file)
          #@TestPurpose        Check schema replication when a new objectclass is added manually
          #@TestPreamble
          #@TestSteps
          #@TestPostamble
          #@TestResult
          -->
          <testcase name="getTestCaseName('Add objectclass (edit schema file)')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                 'Replication: Schema Replication: Add objectclass (edit schema file). Check schema replication when a new objectclass is added manually'
              </message>
              <!-- Stop the servers in the topology -->
              <call function="'stopServers'">
                [_topologyServerList]
              </call>
              <!-- Modify schema  in "master" server -->
              <call function="'copyFile'">
                { 'location'  :  masterHost,
                  'srcfile'  :  currentSchemaFile,
                  'destfile'  :  provSchemaFile }
              </call>
              <call function="'LdifModifyWithScript'">
                { 'location'   :  masterHost,
                  'dsPath'     :  masterPath,
                  'sourceLdif' : provSchemaFile,
                  'changesLdif'  :  '%s/replication/schemamods-0.ldif' % masterDataDir,
                  'targetLdif' :  currentSchemaFile }
              </call>
              <!-- Start the servers in the topology -->
              <call function="'startServers'">
                [_topologyServerList]
              </call>
              <call function="'Sleep'">
                { 'location'  :  masterHost,
                  'sleepForMilliSeconds'  :  1000 }
              </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/newtestuser-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 (edit schema file)
          #@TestID                  Add attributetype (edit schema file)
          #@TestPurpose        Check schema replication when a new attributetype is added manually
          #@TestPreamble
          #@TestSteps
          #@TestPostamble
          #@TestResult
          -->
          <testcase name="getTestCaseName('Add attributetype (edit schema file)')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                 'Replication: Schema Replication: Add attributetype (edit schema file). Check schema replication when a new attributetype is added manually'
              </message>
              <!-- Stop the servers in the topology -->
              <call function="'stopServers'">
                [_topologyServerList]
              </call>
              <!-- Modify schema  in "master" server -->
              <call function="'copyFile'">
                { 'location'  :  masterHost,
                  'srcfile'  :  currentSchemaFile,
                  'destfile'  :  provSchemaFile }
              </call>
              <call function="'LdifModifyWithScript'">
                { 'location'   :  masterHost,
                  'dsPath'     :  masterPath,
                  'sourceLdif' : provSchemaFile,
                  'changesLdif'  :  '%s/replication/schemamods-1.ldif' % masterDataDir,
                  'targetLdif' :  currentSchemaFile }
              </call>
              <!-- Start the servers in the topology -->
              <call function="'startServers'">
                [_topologyServerList]
              </call>
              <call function="'Sleep'">
                { 'location'  :  masterHost,
                  'sleepForMilliSeconds'  :  1000 }
              </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/newtestuser-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 (edit schema file)
          #@TestID                  Delete objectclass (edit schema file)
          #@TestPurpose        Check schema replication when an objectclass is deleted manually
          #@TestPreamble
          #@TestSteps
          #@TestPostamble
          #@TestResult
          -->
          <testcase name="getTestCaseName('Delete objectclass (edit schema file)')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                 'Replication: Schema Replication: Delete objectclass (edit schema file). Check schema replication when an objectclass is deleted manually'
              </message>
              <!-- Stop the servers in the topology -->
              <call function="'stopServers'">
                [_topologyServerList]
              </call>
              <!-- Modify schema  in "master" server -->
              <call function="'copyFile'">
                { 'location'  :  masterHost,
                  'srcfile'  :  currentSchemaFile,
                  'destfile'  :  provSchemaFile }
              </call>
              <call function="'LdifModifyWithScript'">
                { 'location'   :  masterHost,
                  'dsPath'     :  masterPath,
                  'sourceLdif' : provSchemaFile,
                  'changesLdif'  :  '%s/replication/schemamods-2.ldif' % masterDataDir,
                  'targetLdif' :  currentSchemaFile }
              </call>
              <!-- Start the servers in the topology -->
              <call function="'startServers'">
                [_topologyServerList]
              </call>
              <!-- Delete previously added entry -->
              <call function="'ldapDeleteWithScript'">
                { 'location'       :  clientHost,
                  'dsPath'         :  clientPath,
                  'dsInstanceHost' :  master.getHostname(),
                  'dsInstancePort' :  master.getPort(),
                  'dsInstanceDn'   : master.getRootDn(),
                  'dsInstancePswd' :  master.getRootPwd(),
                  'dsDn'           :  ['cn=newtestuser-0,ou=People,%s' % synchroSuffix]
                }
              </call>
              <call function="'Sleep'">
                { 'location'  :  masterHost,
                  'sleepForMilliSeconds'  :  1000 }
              </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/newtestuser-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>
          <!-- Test Case information
          #@TestMarker          Replication Schema Replication Tests
          #@TestName            Replication: Schema Replication: Modify objectclass (edit schema file)
          #@TestID                  Modify objectclass (edit schema file)
          #@TestPurpose        Check schema replication when an objectclass is modified manually
          #@TestPreamble
          #@TestSteps
          #@TestPostamble
          #@TestResult
          -->
          <testcase name="getTestCaseName('Modify objectclass (edit schema file)')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                 'Replication: Schema Replication: Modify objectclass (edit schema file). Check schema replication when an objectclass is modified manually'
              </message>
              <!-- Stop the servers in the topology -->
              <call function="'stopServers'">
                [_topologyServerList]
              </call>
              <!-- Modify schema  in "master" server -->
              <call function="'copyFile'">
                { 'location'  :  masterHost,
                  'srcfile'  :  currentSchemaFile,
                  'destfile'  :  provSchemaFile }
              </call>
              <call function="'LdifModifyWithScript'">
                { 'location'   :  masterHost,
                  'dsPath'     :  masterPath,
                  'sourceLdif' : provSchemaFile,
                  'changesLdif'  :  '%s/replication/schemamods-3.ldif' % masterDataDir,
                  'targetLdif' :  currentSchemaFile }
              </call>
              <!-- Start the servers in the topology -->
              <call function="'startServers'">
                [_topologyServerList]
              </call>
              <call function="'Sleep'">
                { 'location'  :  masterHost,
                  'sleepForMilliSeconds'  :  1000 }
              </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/newtestuser-2.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="STAF_LOCAL_HOSTNAME"
            file="'%s/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
          <call function="'replication_cleanup'" />