From 67316a5084cfe45b725ceb0608ae0b3412ade74f Mon Sep 17 00:00:00 2001
From: ugaston <ugaston@localhost>
Date: Thu, 13 Sep 2007 17:17:34 +0000
Subject: [PATCH] Introduce new replication configuration procedure
---
opendj-sdk/opends/tests/functional-tests/testcases/replication/replication_setup.xml | 60 ++++++++++-
opendj-sdk/opends/tests/functional-tests/shared/functions/topology.xml | 220 +++++++++++++++++++++++++++++++++++++++++++
opendj-sdk/opends/tests/functional-tests/shared/functions/environment.xml | 6 +
3 files changed, 276 insertions(+), 10 deletions(-)
diff --git a/opendj-sdk/opends/tests/functional-tests/shared/functions/environment.xml b/opendj-sdk/opends/tests/functional-tests/shared/functions/environment.xml
index cb43d88..b45fb63 100755
--- a/opendj-sdk/opends/tests/functional-tests/shared/functions/environment.xml
+++ b/opendj-sdk/opends/tests/functional-tests/shared/functions/environment.xml
@@ -152,9 +152,13 @@
True = 1
False = 0
- DSCONFIG = 'dsconfig'
+ DSCONFIG = 'dsconfig'
+ DSREPLICATION = 'dsreplication'
NO_CHECK = 'noCheck'
+ AdminUID = 'admin'
+ AdminPswd = 'admin'
+
# Replication configuration default names
MultimasterSync = 'Multimaster Synchronization'
MultimasterType = 'multimaster'
diff --git a/opendj-sdk/opends/tests/functional-tests/shared/functions/topology.xml b/opendj-sdk/opends/tests/functional-tests/shared/functions/topology.xml
index ee5ec82..c279ebf 100755
--- a/opendj-sdk/opends/tests/functional-tests/shared/functions/topology.xml
+++ b/opendj-sdk/opends/tests/functional-tests/shared/functions/topology.xml
@@ -111,7 +111,7 @@
<!-- Configure replication if required so by the server
! (i.e. server is a changelog server and/or has synchronized suffixes)
-->
- <if expr="server.requiresSynchronization()">
+<!-- <if expr="server.requiresSynchronization()">
<sequence>
<message>
'Instance requires REPLICATION configuration.'
@@ -121,6 +121,7 @@
</call>
</sequence>
</if>
+-->
</sequence>
</iterate>
</sequence>
@@ -700,7 +701,222 @@
</sequence>
</function>
-
+
+
+
+ <!-- Enable replication between servers using dsreplication -->
+ <function name="enableReplication">
+ <function-prolog>
+ This function enables replication between servers using dsreplication.
+ </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="dsInstanceHost"
+ type="optional"
+ default="STAF_REMOTE_HOSTNAME">
+ <function-arg-description>
+ Directory server hostname or IP address
+ </function-arg-description>
+ <function-arg-property name="type" value="hostname" />
+ </function-arg-def>
+
+ <function-arg-def name="dsInstancePort" type="required">
+ <function-arg-description>
+ Directory server port number
+ </function-arg-description>
+ <function-arg-property name="type" value="Port number" />
+ </function-arg-def>
+
+ <function-arg-def name="dsInstanceDn" type="required">
+ <function-arg-description>
+ Bind DN
+ </function-arg-description>
+ <function-arg-property name="type" value="DN" />
+ </function-arg-def>
+
+ <function-arg-def name="dsInstancePswd" type="required">
+ <function-arg-description>
+ Bind password
+ </function-arg-description>
+ <function-arg-property name="type" value="string" />
+ </function-arg-def>
+
+ <function-arg-def name="dsReplicationPort" type="required">
+ <function-arg-description>
+ Replication port number
+ </function-arg-description>
+ <function-arg-property name="type" value="Port number" />
+ </function-arg-def>
+
+ <function-arg-def name="refInstanceHost"
+ type="optional"
+ default="STAF_REMOTE_HOSTNAME">
+ <function-arg-description>
+ Reference Directory server hostname or IP address
+ </function-arg-description>
+ <function-arg-property name="type" value="hostname" />
+ </function-arg-def>
+
+ <function-arg-def name="refInstancePort" type="required">
+ <function-arg-description>
+ Reference Directory server port number
+ </function-arg-description>
+ <function-arg-property name="type" value="Port number" />
+ </function-arg-def>
+
+ <function-arg-def name="refInstanceDn" type="required">
+ <function-arg-description>
+ Reference server Bind DN
+ </function-arg-description>
+ <function-arg-property name="type" value="DN" />
+ </function-arg-def>
+
+ <function-arg-def name="refInstancePswd" type="required">
+ <function-arg-description>
+ Reference server Bind password
+ </function-arg-description>
+ <function-arg-property name="type" value="string" />
+ </function-arg-def>
+
+ <function-arg-def name="refReplicationPort" type="required">
+ <function-arg-description>
+ Reference server Replication port number
+ </function-arg-description>
+ <function-arg-property name="type" value="Port number" />
+ </function-arg-def>
+
+ <function-arg-def name="replicationDnList" type="required">
+ <function-arg-description>
+ DN of the replicated suffix
+ </function-arg-description>
+ <function-arg-property name="type" value="DN list" />
+ </function-arg-def>
+
+ <function-arg-def name="adminUID"
+ type="optional"
+ default="AdminUID">
+ <function-arg-description>
+ Global Administrator UID
+ </function-arg-description>
+ <function-arg-property name="type" value="UID" />
+ </function-arg-def>
+
+ <function-arg-def name="adminPswd"
+ type="optional"
+ default="AdminPswd">
+ <function-arg-description>
+ Global Administrator password
+ </function-arg-description>
+ <function-arg-property name="type" value="string" />
+ </function-arg-def>
+
+ <function-arg-def name="expectedRC" type="optional" default="0">
+ <function-arg-description>
+ Expected return code value. Default value is 0
+ </function-arg-description>
+ <function-arg-property name="type" value="string" />
+ </function-arg-def>
+ </function-map-args>
+ <sequence>
+ <!-- Local variables -->
+ <script>
+ mylocation=location
+ STAFCmdParams=''
+ STAFCmd=''
+
+ if dsPath:
+ dsBinPath='%s/%s' % (dsPath,fileFolder)
+ STAFCmd='%s/%s%s' % (dsBinPath,DSREPLICATION,fileExt)
+
+ STAFCmdParamsList=[]
+ STAFCmdParamsList.append('enable')
+ STAFCmdParamsList.append('-n')
+ STAFCmdParamsList.append('-Q')
+
+ if dsInstanceHost:
+ STAFCmdParamsList.append('-h %s' % dsInstanceHost)
+
+ if dsInstancePort:
+ STAFCmdParamsList.append('-p %s' % dsInstancePort)
+
+ if dsInstanceDn:
+ STAFCmdParamsList.append('-D "%s"' % dsInstanceDn)
+
+ if dsInstancePswd:
+ STAFCmdParamsList.append('--bindPassword1 "%s"' % dsInstancePswd)
+
+ if dsReplicationPort:
+ STAFCmdParamsList.append('-r %s' % dsReplicationPort)
+
+ if refInstanceHost:
+ STAFCmdParamsList.append('-O %s' % refInstanceHost)
+
+ if refInstancePort:
+ STAFCmdParamsList.append('--port2 %s' % refInstancePort)
+
+ if refInstanceDn:
+ STAFCmdParamsList.append('--bindDN2 "%s"' % refInstanceDn)
+
+ if refInstancePswd:
+ STAFCmdParamsList.append('--bindPassword2 "%s"' % refInstancePswd)
+
+ if refReplicationPort:
+ STAFCmdParamsList.append('-R %s' % refReplicationPort)
+
+ if replicationDnList:
+ for dn in replicationDnList:
+ STAFCmdParamsList.append('-b "%s"' % dn)
+
+ if adminUID:
+ STAFCmdParamsList.append('-I "%s"' % adminUID)
+
+ if adminPswd:
+ STAFCmdParamsList.append('-w "%s"' % adminPswd)
+
+ STAFCmdParams=' '.join(STAFCmdParamsList)
+ </script>
+ <call function="'runCommand'">
+ { 'name' : 'Enable Replication',
+ 'location' : location,
+ 'command' : STAFCmd,
+ 'arguments' : STAFCmdParams
+ }
+ </call>
+ <script>
+ STAXCode=RC
+ STAXReason=STAXResult
+ </script>
+ <call function="'checktestRC'">
+ { 'returncode' : STAXCode,
+ 'result' : STAXReason,
+ 'expected' : expectedRC
+ }
+ </call>
+ <return>
+ STAXReason
+ </return>
+ </sequence>
+ </function>
+
+
+
<function name="readTopology">
<function-prolog>
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/replication/replication_setup.xml b/opendj-sdk/opends/tests/functional-tests/testcases/replication/replication_setup.xml
index 1a0d3b3..9ed8ace 100644
--- a/opendj-sdk/opends/tests/functional-tests/testcases/replication/replication_setup.xml
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/replication/replication_setup.xml
@@ -49,14 +49,14 @@
'Create DS topology as described in %s' % topologyFile
</message>
- <call function="'createTopology'">
- { 'topologyDescFile' : topologyFile,
+ <call function="'createTopology'">
+ { 'topologyDescFile' : topologyFile,
'sharedDataFolder' : 'replication' }
- </call>
+ </call>
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
</call>
<!-- Setup variables -->
@@ -71,6 +71,7 @@
master = _topologyServerList[0]
masterHost = master.getHostname()
+ masterReplicationServer = master.getChangelogServer()
masterPath = '%s/%s' % (master.getDir(),OPENDSNAME)
masterDataDir = '%s/%s' % (master.getDir(),relativeDataDir)
@@ -81,7 +82,52 @@
<call function="'startServers'">
[_topologyServerList]
</call>
-
+
+
+ <iterate var="server" in="consumerList">
+ <sequence>
+ <!-- Configure replication if required so by the server
+ ! (i.e. server is a changelog server and/or has synchronized suffixes)
+ -->
+ <if expr="server.requiresSynchronization()">
+ <sequence>
+ <message>
+ 'Instance requires REPLICATION configuration.'
+ </message>
+
+ <script>
+ replicationServer = server.getChangelogServer()
+ replicatedSuffixList = server.getSynchronizedSuffixList()
+ replicatedDnList = []
+ for suffix in replicatedSuffixList:
+ replicatedDnList.append(suffix.getSuffixDn())
+ </script>
+
+ <message>
+ 'Enable replication for server:\nHost: %s\nLdap port: %s\nReplication port: %s\nReplicated DN list: %s' % (server.getHostname(), server.getPort(), replicationServer.getPort(), replicatedDnList)
+ </message>
+
+ <call function="'enableReplication'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server.getHostname(),
+ 'dsInstancePort' : server.getPort(),
+ 'dsInstanceDn' : server.getRootDn(),
+ 'dsInstancePswd' : server.getRootPwd(),
+ 'dsReplicationPort' : replicationServer.getPort(),
+ 'refInstanceHost' : masterHost,
+ 'refInstancePort' : master.getPort(),
+ 'refInstanceDn' : master.getRootDn(),
+ 'refInstancePswd' : master.getRootPwd(),
+ 'refReplicationPort' : masterReplicationServer.getPort(),
+ 'replicationDnList' : replicatedDnList }
+ </call>
+ </sequence>
+ </if>
+
+ </sequence>
+ </iterate>
+
</sequence>
</block>
--
Gitblit v1.10.0