From 84adb34c0da050c5774cb48cee4bb2dda61ef2f1 Mon Sep 17 00:00:00 2001
From: ugaston <ugaston@localhost>
Date: Wed, 05 Sep 2007 10:11:52 +0000
Subject: [PATCH] Extend schema replication testsuite
---
opends/tests/functional-tests/testcases/replication/schema/schema.xml | 413 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 409 insertions(+), 4 deletions(-)
diff --git a/opends/tests/functional-tests/testcases/replication/schema/schema.xml b/opends/tests/functional-tests/testcases/replication/schema/schema.xml
index b54d7cc..ee46d9c 100644
--- a/opends/tests/functional-tests/testcases/replication/schema/schema.xml
+++ b/opends/tests/functional-tests/testcases/replication/schema/schema.xml
@@ -41,7 +41,7 @@
if not CurrentTestPath.has_key('group'):
CurrentTestPath['group']='replication'
CurrentTestPath['suite']=STAXCurrentBlock
- </script>
+ </script>
<call function="'testSuite_Preamble'"/>
@@ -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">
@@ -116,7 +119,7 @@
</call>
<script>
- newObjectclass = '( testobjectclass-oid NAME \'testobjectclass-0\' SUP person MAY ( street $ c ) X-ORIGIN \'user defined\' )'
+ newObjectclass = '( testobjectclass-oid NAME \'testobjectclass-0\' SUP person MAY ( street $ c ) X-ORIGIN \'user defined\' )'
</script>
<!-- Modify schema in "master" server -->
@@ -178,7 +181,7 @@
</message>
<script>
- newObjectclass = '( testobjectclass1-oid NAME \'testobjectclass-1\' SUP person MAY ( street $ testattribute-1 $ c ) X-ORIGIN \'user defined\' )'
+ 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>
@@ -251,7 +254,7 @@
</message>
<script>
- newObjectclass = '( testobjectclass-oid NAME \'testobjectclass-0\' SUP person MAY ( street $ c ) X-ORIGIN \'user defined\' )'
+ newObjectclass = '( testobjectclass-oid NAME \'testobjectclass-0\' SUP person MAY ( street $ c ) X-ORIGIN \'user defined\' )'
</script>
<!-- Modify schema in "master" server -->
@@ -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'" />
--
Gitblit v1.10.0