From 3df7b26c6810ef008d6365a8f086dbed38adab12 Mon Sep 17 00:00:00 2001
From: ugaston <ugaston@localhost>
Date: Sat, 04 Aug 2007 16:13:42 +0000
Subject: [PATCH] New replication test suites + a few fixes in existing functions
---
opends/tests/functional-tests/shared/functions/tools.xml | 276 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 275 insertions(+), 1 deletions(-)
diff --git a/opends/tests/functional-tests/shared/functions/tools.xml b/opends/tests/functional-tests/shared/functions/tools.xml
index 360f936..7d132ff 100644
--- a/opends/tests/functional-tests/shared/functions/tools.xml
+++ b/opends/tests/functional-tests/shared/functions/tools.xml
@@ -326,12 +326,16 @@
myRC = 0
failedServers = []
failingServerList = ''
+ referenceServerPath = '%s/%s' % (referenceServer.getDir(), OPENDSNAME)
referenceTree = 'referenceTree.ldif'
sampleTree = 'sampleTree.ldif'
treeDiffs = 'treeDiffs.ldif'
</script>
-
+ <message>
+ 'Verify tree %s taking %s as reference.' % (treeSuffix, referenceServerPath)
+ </message>
+
<!-- Retrieve the tree from the reference server -->
<call function="'ldapSearchWithScript'">
{ 'location' : location,
@@ -421,8 +425,278 @@
</function>
+
+
+
+ <function name="verifySchemas">
+ <function-prolog>
+ This function verifies that a schema file is synchronized all over a group of servers.
+ </function-prolog>
+
+ <function-list-args>
+ <function-arg-def name="location" type="optional" default="'%s' % STAXServiceMachine">
+ <function-arg-description>
+ Location of target host
+ </function-arg-description>
+ <function-arg-property name="type" value="hostname"/>
+ </function-arg-def>
+ <function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
+ <function-arg-description>
+ Pathname to installation root
+ </function-arg-description>
+ <function-arg-property name="type" value="filepath"/>
+ </function-arg-def>
+ <function-arg-def name="referenceServer" type="required">
+ <function-arg-description>
+ Server that should be taken as reference.
+ </function-arg-description>
+ <function-arg-property name="type" value="Server"/>
+ </function-arg-def>
+ <function-arg-def name="serverList" type="required">
+ <function-arg-description>
+ List of the servers to verify against the referenceServer.
+ </function-arg-description>
+ <function-arg-property name="type" value="Server-list"/>
+ </function-arg-def>
+ <function-arg-def name="schemaFile" type="required">
+ <function-arg-description>
+ Schema file to verify.
+ </function-arg-description>
+ <function-arg-property name="type" value="filename"/>
+ </function-arg-def>
+ </function-list-args>
+
+
+
+ <sequence>
+
+ <script>
+ myRC = 0
+ failedServers = []
+ failingServerList = ''
+ referenceServerPath = '%s/%s' % (referenceServer.getDir(), OPENDSNAME)
+ referenceSchema = '%s/config/schema/%s' % (referenceServerPath, schemaFile)
+ schemaDiffs = 'schemaDiffs.ldif'
+ </script>
+
+ <message>
+ 'Verify schema file %s taking %s as reference.' % (schemaFile, referenceServerPath)
+ </message>
+
+ <iterate var="server" in="serverList">
+ <sequence>
+ <!-- Copy reference schema file to other server -->
+ <call function="'copyFile'">
+ { 'location' : referenceServer.getHostname(),
+ 'remotehost' : server.getHostname(),
+ 'srcfile' : referenceSchema,
+ 'destfile' : '%s/reference_%s' % (server.getDir(), schemaFile) }
+ </call>
+
+ <script>
+ serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+ </script>
+
+ <!-- Compare this schema to the reference one -->
+ <call function="'LdifDiffWithScript'">
+ { 'location' : location,
+ 'dsPath' : dsPath,
+ 'sourceLdif' : '%s/config/schema/%s' % (serverPath, schemaFile),
+ 'targetLdif' : '%s/reference_%s' % (server.getDir(), schemaFile),
+ 'outputLdif' : '%s/%s' % (server.getDir(), schemaDiffs) }
+ </call>
+
+ <script>
+ if STAXResult != 0 :
+ failedServers.append('%s:%s' % (server.getHostname(), server.getPort()))
+ </script>
+ </sequence>
+ </iterate>
+
+ <if expr="len(failedServers) > 0">
+ <!-- If at least one server failed to successfully compare to the reference tree,
+ ! return an error, along with the list of the servers that failed to do so -->
+ <script>
+ myRC = 1
+ comma = ','
+ failingServerList = 'List of non-synchronized servers (schema verify FAILED): %s ' % comma.join(failedServers)
+ </script>
+ <else>
+ <script>
+ failingServerList = 'All servers synchronized (schema verify SUCCEEDED).'
+ </script>
+ </else>
+ </if>
+
+
+ <call function="'checktestRC'">
+ { 'returncode' : myRC,
+ 'result' : failingServerList ,
+ 'expected' : 0 }
+ </call>
+
+ <return> [myRC, failedServers] </return>
+ </sequence>
+
+ </function>
+
+
+ <function name="deleteTrees">
+ <function-prolog>
+ This function deletes a (sub)tree from a list of servers.
+ </function-prolog>
+ <function-list-args>
+ <function-arg-def name="serverList" type="required">
+ <function-arg-description>
+ List of the servers (instances of "Server" class) where the tree will be deleted.
+ </function-arg-description>
+ <function-arg-property name="type" value="Server-list"/>
+ </function-arg-def>
+ <function-arg-def name="treeSuffix" type="required">
+ <function-arg-description>
+ Suffix of the tree to delete.
+ </function-arg-description>
+ <function-arg-property name="type" value="DN"/>
+ </function-arg-def>
+ <function-arg-def name="startDS" type="optional" default="True">
+ <function-arg-description>
+ Need to start the Directory Servers before deleting.
+ </function-arg-description>
+ <function-arg-property name="type" value="boolean"/>
+ </function-arg-def>
+ </function-list-args>
+
+ <sequence>
+
+ <if expr="startDS">
+ <!-- Start the servers in the list -->
+ <call function="'startServers'">
+ [serverList]
+ </call>
+ </if>
+
+ <!-- Delete the tree in every server in the list -->
+ <paralleliterate var="server" in="serverList">
+ <sequence>
+ <message>
+ 'Delete suffix %s on server running on host %s on port %s' % (treeSuffix, server.getHostname(), server.getPort())
+ </message>
+
+ <!-- Delete suffix and subtree -->
+ <call function="'ldapDeleteWithScript'">
+ { 'location' : server.getHostname(),
+ 'dsPath' : '%s/%s' % (server.getDir(),OPENDSNAME),
+ 'dsInstanceHost' : server.getHostname(),
+ 'dsInstancePort' : server.getPort(),
+ 'dsInstanceDn' : server.getRootDn(),
+ 'dsInstancePswd' : server.getRootPwd(),
+ 'dsDn' : [treeSuffix],
+ 'dsDeleteSubtree' : True }
+ </call>
+ </sequence>
+ </paralleliterate>
+
+ <if expr="startDS">
+ <!-- Stop the servers in the list -->
+ <call function="'stopServers'">
+ [serverList]
+ </call>
+ </if>
+
+ </sequence>
+
+ </function>
+
+
+
+
+ <function name="startServers">
+ <function-prolog>
+ This function starts a list of servers.
+ </function-prolog>
+ <function-list-args>
+ <function-arg-def name="serverList" type="required">
+ <function-arg-description>
+ List of the servers (instances of "Server" class) to be started.
+ </function-arg-description>
+ <function-arg-property name="type" value="Server-list"/>
+ </function-arg-def>
+ </function-list-args>
+
+ <sequence>
+ <!-- Start the servers in the list -->
+ <paralleliterate var="server" in="serverList">
+ <sequence>
+ <message>
+ 'Start DS on host %s to run on port %s' % (server.getHostname(),server.getPort())
+ </message>
+
+ <!--- Start DS -->
+ <call function="'StartDsWithScript'">
+ { 'location' : server.getHostname(),
+ 'dsPath' : '%s/%s' % (server.getDir(),OPENDSNAME) }
+ </call>
+
+ <!--- Check that DS started -->
+ <call function="'isAlive'">
+ { 'location' : server.getHostname(),
+ 'dsPath' : '%s/%s' % (server.getDir(),OPENDSNAME),
+ 'dsInstanceHost' : server.getHostname(),
+ 'dsInstancePort' : server.getPort(),
+ 'dsInstanceDn' : server.getRootDn(),
+ 'dsInstancePswd' : server.getRootPwd(),
+ 'noOfLoops' : 5 ,
+ 'noOfMilliSeconds' : 2000 }
+ </call>
+ </sequence>
+ </paralleliterate>
+
+ </sequence>
+
+ </function>
+
+
+
+ <function name="stopServers">
+ <function-prolog>
+ This function stops a list of servers.
+ </function-prolog>
+ <function-list-args>
+ <function-arg-def name="serverList" type="required">
+ <function-arg-description>
+ List of the servers (instances of "Server" class) to be stopped.
+ </function-arg-description>
+ <function-arg-property name="type" value="Server-list"/>
+ </function-arg-def>
+ </function-list-args>
+
+ <sequence>
+ <!-- Stop the servers in the list -->
+ <paralleliterate var="server" in="serverList">
+ <sequence>
+ <message>
+ 'Stop DS on host %s running on port %s' % (server.getHostname(),server.getPort())
+ </message>
+
+ <!--- Stop DS -->
+ <call function="'StopDsWithScript'">
+ { 'location' : server.getHostname(),
+ 'dsHost' : server.getHostname(),
+ 'dsPath' : '%s/%s' % (server.getDir(),OPENDSNAME),
+ 'dsPort' : server.getPort(),
+ 'dsBindDN' : server.getRootDn(),
+ 'dsBindPwd' : server.getRootPwd() }
+ </call>
+ </sequence>
+ </paralleliterate>
+
+ </sequence>
+
+ </function>
+
+
<function name="CLI_rebuild-index">
<function-prolog>
This wraps the rebuild-index tool to make it easy to use from STAX
--
Gitblit v1.10.0