From 9dde9d2af6504fa06e7a2d4fb43549a74dd5e868 Mon Sep 17 00:00:00 2001
From: ugaston <ugaston@localhost>
Date: Tue, 10 Jul 2007 20:50:17 +0000
Subject: [PATCH] New basic replication testcases + new shared functions library (tools.xml)
---
opends/tests/functional-tests/testcases/replication/basic/replication_basic.xml | 1480 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 1,411 insertions(+), 69 deletions(-)
diff --git a/opends/tests/functional-tests/testcases/replication/basic/replication_basic.xml b/opends/tests/functional-tests/testcases/replication/basic/replication_basic.xml
index 8ccd4d1..ecd6d83 100644
--- a/opends/tests/functional-tests/testcases/replication/basic/replication_basic.xml
+++ b/opends/tests/functional-tests/testcases/replication/basic/replication_basic.xml
@@ -33,7 +33,7 @@
<sequence>
- <block name="'basic'">
+ <block name="'basic'">
<sequence>
@@ -69,7 +69,8 @@
<message>
'Replication: Basic: Add Entry. Check that an added entry is well propagated by replication.'
</message>
-
+
+ <!-- Modify "master" server -->
<call function="'addEntry'">
{ 'location' : clientHost,
'dsPath' : clientPath,
@@ -79,29 +80,25 @@
'dsInstancePswd' : server1.getRootPwd(),
'entryToBeAdded' : '%s/replication_add_root_suffix.ldif' % clientDataDir }
</call>
-
- <call function="'checkRC'">
- { 'returncode' : RC,
- 'result' : STAXResult }
- </call>
-
-
- <call function="'SearchObject'">
- { 'location' : clientHost,
- 'dsPath' : clientPath,
- 'dsInstanceHost' : server2.getHostname() ,
- 'dsInstancePort' : server2.getPort() ,
- 'dsInstanceDn' : server2.getRootDn() ,
- 'dsInstancePswd' : server2.getRootPwd() ,
+
+ <!-- Check modify worked on "master" server -->
+ <call function="'ldapSearchWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
'dsBaseDN' : synchroSuffix ,
'dsFilter' : 'objectclass=*' }
</call>
-
- <call function="'checktestRC'">
- { 'returncode' : RC,
- 'result' : STAXResult,
- 'expected' : 0 }
- </call>
+
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ </call>
+
<call function="'testCase_Postamble'"/>
</sequence>
</testcase>
@@ -124,7 +121,9 @@
<message>
'Replication: Basic: Modify Entry. Check that an entry modify is well propagated by replication.'
</message>
-
+
+
+ <!-- Modify "master" server -->
<call function="'addEntry'">
{ 'location' : clientHost,
'dsPath' : clientPath,
@@ -134,45 +133,44 @@
'dsInstancePswd' : server1.getRootPwd() ,
'entryToBeAdded' : '%s/replication_add_single.ldif' % clientDataDir }
</call>
-
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
-
-
- <call function="'modifyEntry'">
+ <call function="'ldapModifyWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
'dsInstanceHost' : server1.getHostname() ,
'dsInstancePort' : server1.getPort() ,
'dsInstanceDn' : server1.getRootDn() ,
'dsInstancePswd' : server1.getRootPwd() ,
- 'entryToBeModified' : '%s/replication_mod.ldif' % clientDataDir }
+ 'dsFilename' : '%s/replication_mod.ldif' % clientDataDir }
</call>
-
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
-
-
- <call function="'SearchObject'">
+
+ <!-- Check modify worked on "master" server -->
+ <call function="'ldapSearchWithScript'">
{ 'location' : clientHost,
'dsPath' : clientPath,
- 'dsInstanceHost' : server2.getHostname() ,
- 'dsInstancePort' : server2.getPort() ,
- 'dsInstanceDn' : server2.getRootDn() ,
- 'dsInstancePswd' : server2.getRootPwd() ,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
'dsBaseDN' : entryDn,
- 'dsFilter' : '%s=%s' % (attr_type,attr_value) }
+ 'dsFilter' : '%s=%s' % (attr_type,attr_value) }
</call>
-
+ <script>
+ searchRC = STAXResult[0][0]
+ searchResult = STAXResult[0][1]
+ resultLength = len(searchResult) > 0
+ </script>
<call function="'checktestRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult ,
- 'expected' : 0 }
- </call>
+ { 'returncode' : resultLength ,
+ 'result' : searchResult ,
+ 'expected' : 1 }
+ </call>
+
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ </call>
+
<call function="'testCase_Postamble'"/>
</sequence>
</testcase>
@@ -194,7 +192,9 @@
<message>
'Replication: Basic: Delete Entry. Check that an entry delete is well propagated by replication.'
</message>
-
+
+
+ <!-- Modify "master" server -->
<call function="'DeleteEntry'">
{ 'location' : clientHost,
'dsPath' : clientPath,
@@ -204,30 +204,1372 @@
'dsInstancePswd' : server1.getRootPwd() ,
'dsBaseDN' : entryDn }
</call>
-
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
-
-
- <call function="'SearchObject'">
- { 'location' : clientHost,
- 'dsPath' : clientPath,
- 'dsInstanceHost' : server2.getHostname() ,
- 'dsInstancePort' : server2.getPort() ,
- 'dsInstanceDn' : server2.getRootDn() ,
- 'dsInstancePswd' : server2.getRootPwd() ,
+
+ <!-- Check modify worked on "master" server -->
+ <call function="'ldapSearchWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
'dsBaseDN' : entryDn,
'dsFilter' : 'objectclass=*' ,
- 'expectedRC' : 32
- }
- </call>
+ 'expectedRC' : 32 }
+ </call>
+
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ </call>
<call function="'testCase_Postamble'"/>
</sequence>
</testcase>
-
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Basic Tests
+ #@TestName Replication: Basic: Add Multiple Entries
+ #@TestID Add Multiple Entries
+ #@TestPurpose Check that a multiple-entry add is well propagated by replication.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Basic: Add Multiple Entries'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Basic: Add Multiple Entries. Check that a multiple-entry add is well propagated by replication.'
+ </message>
+
+ <!-- Delete the root entry, as it is already present in Example.ldif file -->
+ <call function="'DeleteEntry'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsBaseDN' : synchroSuffix }
+ </call>
+
+ <!-- Modify "master" server -->
+ <call function="'addEntry'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname(),
+ 'dsInstancePort' : server1.getPort(),
+ 'dsInstanceDn' : server1.getRootDn(),
+ 'dsInstancePswd' : server1.getRootPwd(),
+ 'entryToBeAdded' : '%s/replication/Example.ldif' % clientDataDir }
+ </call>
+
+ <!-- Check modify worked on "master" server -->
+ <call function="'ldapSearchWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsBaseDN' : 'uid=scarter,ou=People,%s' % synchroSuffix,
+ 'dsFilter' : 'objectclass=*' }
+ </call>
+
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Basic Tests
+ #@TestName Replication: Basic: Modify Entry - add single attribute
+ #@TestID Modify Entry - add single attribute
+ #@TestPurpose Check that an entry modify is well propagated by replication.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Basic: Modify Entry - add single attribute'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Basic: Modify Entry - add single attribute. Check that an entry modify is well propagated by replication.'
+ </message>
+
+ <!-- Modify "master" server -->
+ <call function="'modifyAnAttribute'">
+ { 'dsPath' : server1Path,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort(),
+ 'dsInstanceDn' : server1.getRootDn(),
+ 'dsInstancePswd' : server1.getRootPwd(),
+ 'DNToModify' : 'uid=tmorris, ou=People,%s' % synchroSuffix,
+ 'attributeName' : 'description',
+ 'newAttributeValue' : ' ',
+ 'changetype' : 'add' }
+ </call>
+
+ <!-- Check modify worked on "master" server -->
+ <call function="'ldapSearchWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsBaseDN' : 'uid=tmorris, ou=People,%s' % synchroSuffix,
+ 'dsFilter' : 'description=*' }
+ </call>
+ <script>
+ searchRC = STAXResult[0][0]
+ searchResult = STAXResult[0][1]
+ resultLength = len(searchResult) > 0
+ </script>
+ <call function="'checktestRC'">
+ { 'returncode' : resultLength ,
+ 'result' : searchResult ,
+ 'expected' : 1 }
+ </call>
+
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Basic Tests
+ #@TestName Replication: Basic: Modify Entry - add single value
+ #@TestID Modify Entry - add single value
+ #@TestPurpose Check that an entry modify is well propagated by replication.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Basic: Modify Entry - add single value'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Basic: Modify Entry - add single value. Check that an entry modify is well propagated by replication.'
+ </message>
+
+ <!-- Modify "master" server -->
+ <call function="'modifyAnAttribute'">
+ { 'dsPath' : server1Path,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort(),
+ 'dsInstanceDn' : server1.getRootDn(),
+ 'dsInstancePswd' : server1.getRootPwd(),
+ 'DNToModify' : 'uid=tmorris, ou=People,%s' % synchroSuffix,
+ 'attributeName' : 'departmentnumber',
+ 'newAttributeValue' : '5203214400',
+ 'changetype' : 'add' }
+ </call>
+
+ <!-- Check modify worked on "master" server -->
+ <call function="'ldapSearchWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsBaseDN' : 'uid=tmorris, ou=People,%s' % synchroSuffix,
+ 'dsFilter' : 'departmentnumber=5203214400' }
+ </call>
+ <script>
+ searchRC = STAXResult[0][0]
+ searchResult = STAXResult[0][1]
+ resultLength = len(searchResult) > 0
+ </script>
+ <call function="'checktestRC'">
+ { 'returncode' : resultLength ,
+ 'result' : searchResult ,
+ 'expected' : 1 }
+ </call>
+
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Basic Tests
+ #@TestName Replication: Basic: Modify Entry - delete single attribute
+ #@TestID Modify Entry - delete single attribute
+ #@TestPurpose Check that an entry modify is well propagated by replication.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Basic: Modify Entry - delete single attribute'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Basic: Modify Entry - delete single attribute. Check that an entry modify is well propagated by replication.'
+ </message>
+
+
+ <script>
+ filename = 'replication_mod_delete.ldif'
+ filePath = '%s/%s' % (logsTestDataDir,filename)
+ dn = 'uid=smason, ou=People,%s' % synchroSuffix
+ modif = 'delete'
+ attrType = 'roomNumber'
+ attrValue = None
+ write_replication_mod_ldif_file(filePath, dn, modif, attrType, attrValue)
+ </script>
+
+ <!-- Copy the replication_mod ldif to client host -->
+ <message>
+ 'Copy %s file from %s to %s' % (filename,logsTestDataDir,clientDataDir)
+ </message>
+ <call function="'copyFile'">
+ { 'srcfile' : filePath,
+ 'destfile' : '%s/%s' % (clientDataDir,filename),
+ 'remotehost' : client.getHostname() }
+ </call>
+
+ <!-- Modify "master" server -->
+ <call function="'ldapModifyWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsFilename' : '%s/%s' % (clientDataDir, filename) }
+ </call>
+
+ <!-- Check modify worked on "master" server -->
+ <call function="'ldapSearchWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsBaseDN' : 'uid=smason, ou=People,%s' % synchroSuffix,
+ 'dsFilter' : 'roomNumber=*',
+ 'expectedRC' : 0 }
+ </call>
+ <script>
+ searchRC = STAXResult[0][0]
+ searchResult = STAXResult[0][1]
+ resultLength = len(searchResult) > 0
+ </script>
+ <call function="'checktestRC'">
+ { 'returncode' : resultLength ,
+ 'result' : searchResult ,
+ 'expected' : 0 }
+ </call>
+
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Basic Tests
+ #@TestName Replication: Basic: Modify Entry - delete single value
+ #@TestID Modify Entry - delete single value
+ #@TestPurpose Check that an entry modify is well propagated by replication.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Basic: Modify Entry - delete single value'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Basic: Modify Entry - delete single value. Check that an entry modify is well propagated by replication.'
+ </message>
+
+ <!-- Modify "master" server -->
+ <call function="'modifyAnAttribute'">
+ { 'dsPath' : server1Path,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort(),
+ 'dsInstanceDn' : server1.getRootDn(),
+ 'dsInstancePswd' : server1.getRootPwd(),
+ 'DNToModify' : 'uid=jwalker, ou=People,%s' % synchroSuffix,
+ 'attributeName' : 'roomNumber',
+ 'newAttributeValue' : '3915',
+ 'changetype' : 'delete' }
+ </call>
+
+ <!-- Check modify worked on "master" server -->
+ <call function="'ldapSearchWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsBaseDN' : 'uid=jwalker, ou=People,%s' % synchroSuffix,
+ 'dsFilter' : 'roomNumber=3915' ,
+ 'expectedRC' : 0 }
+ </call>
+ <script>
+ searchRC = STAXResult[0][0]
+ searchResult = STAXResult[0][1]
+ resultLength = len(searchResult) > 0
+ </script>
+ <call function="'checktestRC'">
+ { 'returncode' : resultLength ,
+ 'result' : searchResult ,
+ 'expected' : 0 }
+ </call>
+
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Basic Tests
+ #@TestName Replication: Basic: Modify Entry - add multiple values
+ #@TestID Modify Entry - add multiple values
+ #@TestPurpose Check that an entry modify is well propagated by replication.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Basic: Modify Entry - add multiple values'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Basic: Modify Entry - add multiple values. Check that an entry modify is well propagated by replication.'
+ </message>
+
+ <script>
+ valuesToAdd = []
+ valuesToAdd.append('postaladdress:Residence Parc Europe')
+ valuesToAdd.append('postaladdress:Appartement #6')
+ valuesToAdd.append('postaladdress:31 Rue General Mangin')
+ valuesToAdd.append('postaladdress:38100 Grenoble')
+ </script>
+
+ <!-- Modify "master" server -->
+ <call function="'modifyAnAttribute'">
+ { 'dsPath' : server1Path,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort(),
+ 'dsInstanceDn' : server1.getRootDn(),
+ 'dsInstancePswd' : server1.getRootPwd(),
+ 'DNToModify' : 'uid=jwallace, ou=People,%s' % synchroSuffix,
+ 'listAttributes' : valuesToAdd,
+ 'changetype' : 'add' }
+ </call>
+
+ <!-- Check modify worked on "master" server -->
+ <call function="'ldapSearchWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.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>
+ <script>
+ searchRC = STAXResult[0][0]
+ searchResult = STAXResult[0][1]
+ resultLength = len(searchResult) > 0
+ </script>
+ <call function="'checktestRC'">
+ { 'returncode' : resultLength ,
+ 'result' : searchResult ,
+ 'expected' : 1 }
+ </call>
+
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Basic Tests
+ #@TestName Replication: Basic: Modify Entry - delete multiple values
+ #@TestID Modify Entry - delete multiple values
+ #@TestPurpose Check that an entry modify is well propagated by replication.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Basic: Modify Entry - delete multiple values'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Basic: Modify Entry - delete multiple values. Check that an entry modify is well propagated by replication.'
+ </message>
+
+
+ <script>
+ valuesToDelete = []
+ valuesToDelete.append('postaladdress:Appartement #6')
+ valuesToDelete.append('postaladdress:38100 Grenoble')
+ </script>
+
+ <!-- Modify "master" server -->
+ <call function="'modifyAnAttribute'">
+ { 'dsPath' : server1Path,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort(),
+ 'dsInstanceDn' : server1.getRootDn(),
+ 'dsInstancePswd' : server1.getRootPwd(),
+ 'DNToModify' : 'uid=jwallace, ou=People,%s' % synchroSuffix,
+ 'listAttributes' : valuesToDelete,
+ 'changetype' : 'delete' }
+ </call>
+
+ <!-- Check modify worked on "master" server -->
+ <call function="'ldapSearchWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsBaseDN' : 'uid=jwallace, ou=People,%s' % synchroSuffix,
+ 'dsFilter' : '|(postaladdress=Appartement #6)(postaladdress=38100 Grenoble)',
+ 'expectedRC' : 0 }
+ </call>
+ <script>
+ searchRC = STAXResult[0][0]
+ searchResult = STAXResult[0][1]
+ resultLength = len(searchResult) > 0
+ </script>
+ <call function="'checktestRC'">
+ { 'returncode' : resultLength ,
+ 'result' : searchResult ,
+ 'expected' : 0 }
+ </call>
+
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Basic Tests
+ #@TestName Replication: Basic: Modify Entry - replace multiple values
+ #@TestID Modify Entry - replace multiple values
+ #@TestPurpose Check that an entry modify is well propagated by replication.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Basic: Modify Entry - replace multiple values'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Basic: Modify Entry - replace multiple values. Check that an entry modify is well propagated by replication.'
+ </message>
+
+
+ <script>
+ valuesToReplace = []
+ valuesToReplace.append('postaladdress: Residence Letilleuil')
+ valuesToReplace.append('postaladdress: 18 rue Nicolas Chorier')
+ </script>
+
+ <!-- Modify "master" server -->
+ <call function="'modifyAnAttribute'">
+ { 'dsPath' : server1Path,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort(),
+ 'dsInstanceDn' : server1.getRootDn(),
+ 'dsInstancePswd' : server1.getRootPwd(),
+ 'DNToModify' : 'uid=jwallace, ou=People,%s' % synchroSuffix,
+ 'listAttributes' : valuesToReplace,
+ 'changetype' : 'replace' }
+ </call>
+
+ <!-- Check modify worked on "master" server -->
+ <call function="'ldapSearchWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsBaseDN' : 'uid=jwallace, ou=People,%s' % synchroSuffix,
+ 'dsFilter' : '&(postaladdress=Residence Letilleuil)(postaladdress=18 rue Nicolas Chorier)',
+ 'expectedRC' : 0 }
+ </call>
+ <script>
+ searchRC = STAXResult[0][0]
+ searchResult = STAXResult[0][1]
+ resultLength = len(searchResult) > 0
+ </script>
+ <call function="'checktestRC'">
+ { 'returncode' : resultLength ,
+ 'result' : searchResult ,
+ 'expected' : 1 }
+ </call>
+
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Basic Tests
+ #@TestName Replication: Basic: Modify Entry - add single value to multiple valued attribute
+ #@TestID Modify Entry - add single value to multiple valued attribute
+ #@TestPurpose Check that an entry modify is well propagated by replication.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Basic: Modify Entry - add single value to multiple valued attribute'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Basic: Modify Entry - add single value to multiple valued attribute. Check that an entry modify is well propagated by replication.'
+ </message>
+
+
+ <script>
+ valuesToAdd = []
+ valuesToAdd.append('postaladdress:38000 Grenoble')
+ </script>
+
+ <!-- Modify "master" server -->
+ <call function="'modifyAnAttribute'">
+ { 'dsPath' : server1Path,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort(),
+ 'dsInstanceDn' : server1.getRootDn(),
+ 'dsInstancePswd' : server1.getRootPwd(),
+ 'DNToModify' : 'uid=jwallace, ou=People,%s' % synchroSuffix,
+ 'listAttributes' : valuesToAdd,
+ 'changetype' : 'add' }
+ </call>
+
+ <!-- Check modify worked on "master" server -->
+ <call function="'ldapSearchWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsBaseDN' : 'uid=jwallace, ou=People,%s' % synchroSuffix,
+ 'dsFilter' : 'postaladdress=38000 Grenoble',
+ 'expectedRC' : 0 }
+ </call>
+ <script>
+ searchRC = STAXResult[0][0]
+ searchResult = STAXResult[0][1]
+ resultLength = len(searchResult) > 0
+ </script>
+ <call function="'checktestRC'">
+ { 'returncode' : resultLength ,
+ 'result' : searchResult ,
+ 'expected' : 1 }
+ </call>
+
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Basic Tests
+ #@TestName Replication: Basic: Modify Entry - delete single value from multiple valued attribute
+ #@TestID Modify Entry - delete single value from multiple valued attribute
+ #@TestPurpose Check that an entry modify is well propagated by replication.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Basic: Modify Entry - delete single value from multiple valued attribute'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Basic: Modify Entry - delete single value from multiple valued attribute. Check that an entry modify is well propagated by replication.'
+ </message>
+
+
+ <script>
+ valuesToDelete = []
+ valuesToDelete.append('postaladdress: Residence Letilleuil')
+ </script>
+
+ <!-- Modify "master" server -->
+ <call function="'modifyAnAttribute'">
+ { 'dsPath' : server1Path,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort(),
+ 'dsInstanceDn' : server1.getRootDn(),
+ 'dsInstancePswd' : server1.getRootPwd(),
+ 'DNToModify' : 'uid=jwallace, ou=People,%s' % synchroSuffix,
+ 'listAttributes' : valuesToDelete,
+ 'changetype' : 'delete' }
+ </call>
+
+ <!-- Check modify worked on "master" server -->
+ <call function="'ldapSearchWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsBaseDN' : 'uid=jwallace, ou=People,%s' % synchroSuffix,
+ 'dsFilter' : 'postaladdress=Residence Letilleuil',
+ 'expectedRC' : 0 }
+ </call>
+ <script>
+ searchRC = STAXResult[0][0]
+ searchResult = STAXResult[0][1]
+ resultLength = len(searchResult) > 0
+ </script>
+ <call function="'checktestRC'">
+ { 'returncode' : resultLength ,
+ 'result' : searchResult ,
+ 'expected' : 0 }
+ </call>
+
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Basic Tests
+ #@TestName Replication: Basic: Modify Entry - replace case sensitive attribute
+ #@TestID Modify Entry - replace case sensitive attribute
+ #@TestPurpose Check that case sensitive attribute modifications are replicated.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Basic: Modify Entry - replace case sensitive attribute'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ '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')
+
+ 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(),
+ 'DNToModify' : 'uid=tfitter, ou=People,%s' % synchroSuffix,
+ 'listAttributes' : valuesToReplace,
+ 'changetype' : 'replace' }
+ </call>
+
+ <!-- Check modify worked on "master" server -->
+ <call function="'ldapSearchWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsBaseDN' : 'uid=tfitter, ou=People,%s' % synchroSuffix,
+ 'dsFilter' : 'description=Profession Tap Fitter and Plumber',
+ 'expectedRC' : 0 }
+ </call>
+ <script>
+ searchRC = STAXResult[0][0]
+ searchResult = STAXResult[0][1]
+ resultLength = len(searchResult) > 0
+ </script>
+ <call function="'checktestRC'">
+ { 'returncode' : resultLength ,
+ 'result' : searchResult ,
+ 'expected' : 1 }
+ </call>
+
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Basic Tests
+ #@TestName Replication: Basic: Modify Entry - add binary attribute
+ #@TestID Modify Entry - add binary attribute
+ #@TestPurpose Check that an entry modify is well propagated by replication.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Basic: Modify Entry - add binary attribute'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Basic: Modify Entry - add binary attribute. Check that an entry modify is well propagated by replication.'
+ </message>
+
+ <script>
+ filename = 'replication_mod_add_binary.ldif'
+ filePath = '%s/%s' % (logsTestDataDir,filename)
+ binaryFilePath = '%s/photo1.uu' % testsGroupDir
+ dn = 'uid=hmiller, ou=People,%s' % synchroSuffix
+ modif = 'add'
+ attrType = 'jpegPhoto'
+ write_replication_mod_binary_ldif_file(filePath, dn, modif, attrType, binaryFilePath)
+ </script>
+
+ <!-- Copy the replication_mod ldif to client host -->
+ <message>
+ 'Copy %s file from %s to %s' % (filename,logsTestDataDir,clientDataDir)
+ </message>
+ <call function="'copyFile'">
+ { 'srcfile' : filePath,
+ 'destfile' : '%s/%s' % (clientDataDir,filename),
+ 'remotehost' : client.getHostname() }
+ </call>
+
+ <!-- Modify "master" server -->
+ <call function="'ldapModifyWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsFilename' : '%s/%s' % (clientDataDir, filename) }
+ </call>
+
+
+ <!-- Check modify worked on "master" server -->
+ <call function="'ldapSearchWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsBaseDN' : 'uid=hmiller, ou=People,%s' % synchroSuffix,
+ 'dsFilter' : 'jpegPhoto=*',
+ 'expectedRC' : 0 }
+ </call>
+ <script>
+ searchRC = STAXResult[0][0]
+ searchResult = STAXResult[0][1]
+ resultLength = len(searchResult) > 0
+ </script>
+ <call function="'checktestRC'">
+ { 'returncode' : resultLength ,
+ 'result' : searchResult ,
+ 'expected' : 1 }
+ </call>
+
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Basic Tests
+ #@TestName Replication: Basic: Modify Entry - replace binary attribute
+ #@TestID Modify Entry - replace binary attribute
+ #@TestPurpose Check that an entry modify is well propagated by replication.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Basic: Modify Entry - replace binary attribute'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Basic: Modify Entry - replace binary attribute. Check that an entry modify is well propagated by replication.'
+ </message>
+
+ <script>
+ filename = 'replication_mod_replace_binary.ldif'
+ filePath = '%s/%s' % (logsTestDataDir,filename)
+ binaryFilePath = '%s/photo2.uu' % testsGroupDir
+ dn = 'uid=hmiller, ou=People,%s' % synchroSuffix
+ modif = 'replace'
+ attrType = 'jpegPhoto'
+ write_replication_mod_binary_ldif_file(filePath, dn, modif, attrType, binaryFilePath)
+ </script>
+
+ <!-- Copy the replication_mod ldif to client host -->
+ <message>
+ 'Copy %s file from %s to %s' % (filename,logsTestDataDir,clientDataDir)
+ </message>
+ <call function="'copyFile'">
+ { 'srcfile' : filePath,
+ 'destfile' : '%s/%s' % (clientDataDir,filename),
+ 'remotehost' : client.getHostname() }
+ </call>
+
+ <!-- Modify "master" server -->
+ <call function="'ldapModifyWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsFilename' : '%s/%s' % (clientDataDir, filename) }
+ </call>
+
+
+ <!-- Check modify worked on "master" server -->
+ <call function="'ldapSearchWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsBaseDN' : 'uid=hmiller, ou=People,%s' % synchroSuffix,
+ 'dsFilter' : 'jpegPhoto=*',
+ 'expectedRC' : 0 }
+ </call>
+ <script>
+ searchRC = STAXResult[0][0]
+ searchResult = STAXResult[0][1]
+ resultLength = len(searchResult) > 0
+ </script>
+ <call function="'checktestRC'">
+ { 'returncode' : resultLength ,
+ 'result' : searchResult ,
+ 'expected' : 1 }
+ </call>
+
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Basic Tests
+ #@TestName Replication: Basic: Modify Entry - delete binary attribute
+ #@TestID Modify Entry - delete binary attribute
+ #@TestPurpose Check that an entry modify is well propagated by replication.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Basic: Modify Entry - delete binary attribute'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Basic: Modify Entry - delete binary attribute. Check that an entry modify is well propagated by replication.'
+ </message>
+
+
+ <script>
+ filename = 'replication_mod_delete_binary.ldif'
+ filePath = '%s/%s' % (logsTestDataDir,filename)
+ dn = 'uid=hmiller, ou=People,%s' % synchroSuffix
+ modif = 'delete'
+ attrType = 'jpegPhoto'
+ attrValue = None
+ write_replication_mod_ldif_file(filePath, dn, modif, attrType, attrValue)
+ </script>
+
+ <!-- Copy the replication_mod ldif to client host -->
+ <message>
+ 'Copy %s file from %s to %s' % (filename,logsTestDataDir,clientDataDir)
+ </message>
+ <call function="'copyFile'">
+ { 'srcfile' : filePath,
+ 'destfile' : '%s/%s' % (clientDataDir,filename),
+ 'remotehost' : client.getHostname() }
+ </call>
+
+ <!-- Modify "master" server -->
+ <call function="'ldapModifyWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsFilename' : '%s/%s' % (clientDataDir, filename) }
+ </call>
+
+ <!-- Check modify worked on "master" server -->
+ <call function="'ldapSearchWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsBaseDN' : 'uid=hmiller, ou=People,%s' % synchroSuffix,
+ 'dsFilter' : 'jpegPhoto=*',
+ 'expectedRC' : 0 }
+ </call>
+ <script>
+ searchRC = STAXResult[0][0]
+ searchResult = STAXResult[0][1]
+ resultLength = len(searchResult) > 0
+ </script>
+ <call function="'checktestRC'">
+ { 'returncode' : resultLength ,
+ 'result' : searchResult ,
+ 'expected' : 0 }
+ </call>
+
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Basic Tests
+ #@TestName Replication: Basic: Rename Entry
+ #@TestID Rename Entry
+ #@TestPurpose Check that a rename (modrdn) operation is well propagated by replication.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Basic: Rename Entry'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Basic: Rename Entry. Check that a rename (modrdn) operation is well propagated by replication.'
+ </message>
+
+ <script>
+ filename = 'replication_modrdn.ldif'
+ filePath = '%s/%s' % (logsTestDataDir,filename)
+ dn = 'uid=kvaughan, ou=People,%s' % synchroSuffix
+ newrdn = 'uid=kvaughan2'
+ newsuperior = None
+ deleteoldrdn = 1
+ write_replication_moddn_ldif_file(filePath, dn, newrdn, newsuperior, deleteoldrdn)
+ </script>
+
+ <!-- Copy the replication_mod ldif to client host -->
+ <message>
+ 'Copy %s file from %s to %s' % (filename,logsTestDataDir,clientDataDir)
+ </message>
+ <call function="'copyFile'">
+ { 'srcfile' : filePath,
+ 'destfile' : '%s/%s' % (clientDataDir,filename),
+ 'remotehost' : client.getHostname() }
+ </call>
+
+ <!-- Modify "master" server -->
+ <call function="'ldapModifyWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsFilename' : '%s/%s' % (clientDataDir, filename) }
+ </call>
+
+
+ <!-- Check modify worked on "master" server -->
+ <!-- check that "uid=kvaughan, ou=People, ${DIRECTORY_BASE}" does NOT exist anymore -->
+ <call function="'ldapSearchWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsBaseDN' : 'uid=kvaughan, ou=People,%s' % synchroSuffix,
+ 'dsFilter' : 'objectclass=*',
+ 'expectedRC' : 32 }
+ </call>
+
+ <!-- check that new entry "uid=kvaughan2, ou=People, ${DIRECTORY_BASE}" exists -->
+ <call function="'ldapSearchWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsBaseDN' : 'uid=kvaughan2, ou=People,%s' % synchroSuffix,
+ 'dsFilter' : 'objectclass=*' }
+ </call>
+
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Basic Tests
+ #@TestName Replication: Basic: Rename Entry (preserving old rdn)
+ #@TestID Rename Entry (preserving old rdn)
+ #@TestPurpose Check that a rename (modrdn) operation is well propagated by replication.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Basic: Rename Entry (preserving old rdn)'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Basic: Rename Entry (preserving old rdn). Check that a rename (modrdn) operation is well propagated by replication.'
+ </message>
+
+ <script>
+ filename = 'replication_modrdn_preserve.ldif'
+ filePath = '%s/%s' % (logsTestDataDir,filename)
+ dn = 'uid=jwallace, ou=People,%s' % synchroSuffix
+ newrdn = 'uid=igueye'
+ newsuperior = None
+ deleteoldrdn = 0
+ write_replication_moddn_ldif_file(filePath, dn, newrdn, newsuperior, deleteoldrdn)
+ </script>
+
+ <!-- Copy the replication_mod ldif to client host -->
+ <message>
+ 'Copy %s file from %s to %s' % (filename,logsTestDataDir,clientDataDir)
+ </message>
+ <call function="'copyFile'">
+ { 'srcfile' : filePath,
+ 'destfile' : '%s/%s' % (clientDataDir,filename),
+ 'remotehost' : client.getHostname() }
+ </call>
+
+ <!-- Modify "master" server -->
+ <call function="'ldapModifyWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsFilename' : '%s/%s' % (clientDataDir, filename) }
+ </call>
+
+
+ <!-- Check modify worked on "master" server -->
+ <!-- check that "uid=jwallace, ou=People, ${DIRECTORY_BASE}" does NOT exist anymore -->
+ <call function="'ldapSearchWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsBaseDN' : 'uid=jwallace, ou=People,%s' % synchroSuffix,
+ 'dsFilter' : 'objectclass=*',
+ 'expectedRC' : 32 }
+ </call>
+
+ <!-- check that new entry "uid=igueye, ou=People, ${DIRECTORY_BASE}" exists -->
+ <call function="'ldapSearchWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsBaseDN' : 'uid=igueye, ou=People,%s' % synchroSuffix,
+ 'dsFilter' : 'uid=jwallace' }
+ </call>
+ <script>
+ searchRC = STAXResult[0][0]
+ searchResult = STAXResult[0][1]
+ resultLength = len(searchResult) > 0
+ </script>
+ <call function="'checktestRC'">
+ { 'returncode' : resultLength ,
+ 'result' : searchResult ,
+ 'expected' : 1 }
+ </call>
+
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, server1, [server2], synchroSuffix ]
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Basic Tests
+ #@TestName Replication: Basic: Rename Subtree
+ #@TestID Rename Subtree
+ #@TestPurpose Check that a subtree rename (moddn) operation is well propagated by replication.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Basic: Rename Subtree'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Basic: Rename Subtree. Check that a subtree rename (moddn) operation is well propagated by replication.'
+ </message>
+
+ <script>
+ filename = 'replication_moddn.ldif'
+ filePath = '%s/%s' % (logsTestDataDir,filename)
+ dn = 'ou=People,%s' % synchroSuffix
+ newrdn = 'ou=Special People'
+ newsuperior = 'ou=Special Users,%s' % synchroSuffix
+ deleteoldrdn = 0
+ write_replication_moddn_ldif_file(filePath, dn, newrdn, newsuperior, deleteoldrdn)
+ </script>
+
+ <!-- Copy the replication_mod ldif to client host -->
+ <message>
+ 'Copy %s file from %s to %s' % (filename,logsTestDataDir,clientDataDir)
+ </message>
+ <call function="'copyFile'">
+ { 'srcfile' : filePath,
+ 'destfile' : '%s/%s' % (clientDataDir,filename),
+ 'remotehost' : client.getHostname() }
+ </call>
+
+ <!-- Modify "master" server -->
+ <call function="'ldapModifyWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsFilename' : '%s/%s' % (clientDataDir, filename) }
+ </call>
+
+
+ <!-- Check modify worked on "master" server -->
+ <!-- check that "uid=gfarmer, ou=People, ${DIRECTORY_BASE}" does NOT exist anymore -->
+ <call function="'ldapSearchWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsBaseDN' : 'uid=gfarmer, ou=People,%s' % synchroSuffix,
+ 'dsFilter' : 'objectclass=*',
+ 'expectedRC' : 32 }
+ </call>
+
+ <!-- check that new entry "uid=gfarmer, ou=Special People, ou=Special Users, ${DIRECTORY_BASE}" exists -->
+ <call function="'ldapSearchWithScript'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsBaseDN' : 'uid=gfarmer, ou=Special People, ou=Special Users,%s' % synchroSuffix,
+ 'dsFilter' : 'objectclass=*' }
+ </call>
+
+
+ <!-- Verify the synchronization of the trees among the servers in the topology -->
+ <call function="'verifyTrees'">
+ [ clientHost, clientPath, server1, [server2], 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'" />
--
Gitblit v1.10.0