From 895140b9e4f027e73ef892fba5cafb72cf47f68b Mon Sep 17 00:00:00 2001
From: ugaston <ugaston@localhost>
Date: Wed, 04 Apr 2007 10:42:07 +0000
Subject: [PATCH] Set of changes introducing the Synchronization Test Group + Basic Test
---
opendj-sdk/opends/tests/functional-tests/testcases/backends/backends.xml | 4
opendj-sdk/opends/tests/functional-tests/testcases/runFuncTests.xml | 19
opendj-sdk/opends/tests/functional-tests/config/synchronization/basic_topology.txt | 23
opendj-sdk/opends/tests/functional-tests/testcases/synchronization/synchronization.xml | 63
opendj-sdk/opends/tests/functional-tests/shared/functions/topology.xml | 564 ++++++
opendj-sdk/opends/tests/functional-tests/shared/functions/security.xml | 612 ++++--
opendj-sdk/opends/tests/functional-tests/testcases/synchronization/basic/synchronization_basic.xml | 201 ++
opendj-sdk/opends/tests/functional-tests/testcases/synchronization/basic/synchronization_basic_setup.xml | 159 +
opendj-sdk/opends/tests/functional-tests/testcases/core/core_search_timelimit.xml | 21
opendj-sdk/opends/tests/functional-tests/shared/functions/dsadm.xml | 2427 +++++++++++++++----------
opendj-sdk/opends/tests/functional-tests/testcases/runTestJob.xml | 2
opendj-sdk/opends/tests/functional-tests/testcases/setup/setup.xml | 2
opendj-sdk/opends/tests/functional-tests/shared/functions/ldap.xml | 788 ++++++-
opendj-sdk/opends/tests/functional-tests/testcases/synchronization/basic/synchronization_basic_bob.xml | 222 ++
opendj-sdk/opends/tests/functional-tests/shared/functions/stafcmd.xml | 2
opendj-sdk/opends/tests/functional-tests/shared/functions/utils.xml | 328 ++-
opendj-sdk/opends/tests/functional-tests/testcases/backends/import-tasks.xml | 40
opendj-sdk/opends/tests/functional-tests/testcases/backends/restore.xml | 72
opendj-sdk/opends/tests/functional-tests/testcases/core/core_search_sizelimit.xml | 25
opendj-sdk/opends/tests/functional-tests/testcases/backends/import.xml | 17
20 files changed, 4,059 insertions(+), 1,532 deletions(-)
diff --git a/opendj-sdk/opends/tests/functional-tests/config/synchronization/basic_topology.txt b/opendj-sdk/opends/tests/functional-tests/config/synchronization/basic_topology.txt
new file mode 100644
index 0000000..a8434ff
--- /dev/null
+++ b/opendj-sdk/opends/tests/functional-tests/config/synchronization/basic_topology.txt
@@ -0,0 +1,23 @@
+Hostname: localhost
+Directory: /tmp/opends-synchro-tests/server1
+Port: 11389
+Sslport: 11636
+RootDn: cn=directory manager
+RootPwd: secret12
+BaseDn: o=example
+Changelogport: 11111
+SynchronizedSuffix: o=example
+ChangelogServer: localhost:11111
+ChangelogServer: localhost:22222
+
+Hostname: localhost
+Directory: /tmp/opends-synchro-tests/server2
+Port: 22389
+Sslport: 22636
+RootDn: cn=directory manager
+RootPwd: secret12
+BaseDn: o=example
+Changelogport: 22222
+SynchronizedSuffix: o=example
+ChangelogServer: localhost:11111
+ChangelogServer: localhost:22222
diff --git a/opendj-sdk/opends/tests/functional-tests/shared/functions/dsadm.xml b/opendj-sdk/opends/tests/functional-tests/shared/functions/dsadm.xml
index 0f8d8bc..956a6c0 100755
--- a/opendj-sdk/opends/tests/functional-tests/shared/functions/dsadm.xml
+++ b/opendj-sdk/opends/tests/functional-tests/shared/functions/dsadm.xml
@@ -31,56 +31,55 @@
<function name="ConfigureDsWithScript">
<function-prolog>
This function configures a Directory Server using a script
- </function-prolog>
-
+ </function-prolog>
<function-map-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="filepath"/>
+ <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="hostname"/>
+ <function-arg-property name="type" value="filepath"/>
</function-arg-def>
- <function-arg-def name="dsPort" type="optional" default="''">
+ <function-arg-def name="dsPort" type="optional">
<function-arg-description>
Directory server port number
</function-arg-description>
- <function-arg-property name="type" value="integer"/>
+ <function-arg-property name="type" value="Port number"/>
</function-arg-def>
- <function-arg-def name="dsBaseDN" type="optional" default="''">
+ <function-arg-def name="dsBaseDN" type="optional">
<function-arg-description>
Base DN (only single base DN supported).
</function-arg-description>
<function-arg-property name="type" value="DN"/>
</function-arg-def>
- <function-arg-def name="dsBindDN" type="optional" default="''">
+ <function-arg-def name="dsBindDN" type="optional">
<function-arg-description>
Bind DN
</function-arg-description>
- <function-arg-property name="type" value="integer"/>
+ <function-arg-property name="type" value="DN"/>
</function-arg-def>
- <function-arg-def name="dsBindPwd" type="optional" default="''">
+ <function-arg-def name="dsBindPwd" type="optional">
<function-arg-description>
Bind password
</function-arg-description>
- <function-arg-property name="type" value="integer"/>
+ <function-arg-property name="type" value="string"/>
</function-arg-def>
- <function-arg-def name="dsBindPwdFile" type="optional" default="''">
+ <function-arg-def name="dsBindPwdFile" type="optional">
<function-arg-description>
Bind password file
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
- <function-arg-def name="dsHelp" type="optional" default="''">
+ <function-arg-def name="dsHelp" type="optional">
<function-arg-description>
Help option
</function-arg-description>
- <function-arg-property name="type" value="filename"/>
+ <function-arg-property name="help" value="option"/>
</function-arg-def>
</function-map-args>
@@ -89,6 +88,7 @@
<!-- Build the Command -->
<script>
STAFCmdParamsList=[]
+ STAFCmdParams=''
if dsPath:
STAFCmd='%s/bin/configure-ds%s' % (dsPath,fileExt)
@@ -142,7 +142,6 @@
<function-prolog>
This function starts a Directory Server
</function-prolog>
-
<function-map-args>
<function-arg-def name="location" type="optional" default="'%s' % STAXServiceMachine">
<function-arg-description>
@@ -156,31 +155,25 @@
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
- <function-arg-def name="dsPort" type="optional" default="''">
- <function-arg-description>
- Directory server port number
- </function-arg-description>
- <function-arg-property name="type" value="integer"/>
- </function-arg-def>
- <function-arg-def name="dsVersion" type="optional" default="''">
+ <function-arg-def name="dsVersion" type="optional">
<function-arg-description>
Directory server version
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
- <function-arg-def name="dsSystemInfo" type="optional" default="''">
+ <function-arg-def name="dsSystemInfo" type="optional">
<function-arg-description>
Directory server system info
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
- <function-arg-def name="dsNoDetach" type="optional" default="''">
+ <function-arg-def name="dsNoDetach" type="optional">
<function-arg-description>
Do not detach directory server from process
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
- <function-arg-def name="dsHelp" type="optional" default="''">
+ <function-arg-def name="dsHelp" type="optional">
<function-arg-description>
Help option
</function-arg-description>
@@ -193,6 +186,7 @@
<!-- Build the Command -->
<script>
STAFCmdParamsList=[]
+ STAFCmdParams=''
if dsPath:
STAFCmd='%s/bin/start-ds%s' % (dsPath,fileExt)
@@ -242,10 +236,8 @@
<function name="StopDsWithScript">
<function-prolog>
This function starts a Directory Server using the script
- </function-prolog>
-
- <function-map-args>
-
+ </function-prolog>
+ <function-map-args>
<function-arg-def name="location" type="optional" default="'%s' % STAXServiceMachine">
<function-arg-description>
Location of target host
@@ -258,121 +250,121 @@
</function-arg-description>
<function-arg-property name="type" value="hostname"/>
</function-arg-def>
- <function-arg-def name="dsHost" type="optional" default="''">
+ <function-arg-def name="dsHost" type="optional">
<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="dsPort" type="optional" default="''">
+ <function-arg-def name="dsPort" type="optional">
<function-arg-description>
Directory server port number
</function-arg-description>
<function-arg-property name="type" value="integer"/>
</function-arg-def>
- <function-arg-def name="dsUseSSL" type="optional" default="''">
+ <function-arg-def name="dsUseSSL" type="optional">
<function-arg-description>
Use SSL for secure communication with the server
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
- <function-arg-def name="dsUseStartTLS" type="optional" default="''">
+ <function-arg-def name="dsUseStartTLS" type="optional">
<function-arg-description>
Use StartTLS for secure communication with the server
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
- <function-arg-def name="dsBindDN" type="optional" default="''">
+ <function-arg-def name="dsBindDN" type="optional">
<function-arg-description>
Bind DN
</function-arg-description>
<function-arg-property name="type" value="DN"/>
</function-arg-def>
- <function-arg-def name="dsBindPwd" type="optional" default="''">
+ <function-arg-def name="dsBindPwd" type="optional">
<function-arg-description>
Bind password
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
- <function-arg-def name="dsBindPwdFile" type="optional" default="''">
+ <function-arg-def name="dsBindPwdFile" type="optional">
<function-arg-description>
Bind password file
</function-arg-description>
<function-arg-property name="type" value="filepath"/>
</function-arg-def>
- <function-arg-def name="dsSaslOption" type="optional" default="''">
+ <function-arg-def name="dsSaslOption" type="optional">
<function-arg-description>
SASL bind options
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
- <function-arg-def name="dsProxyAuthZID" type="optional" default="''">
+ <function-arg-def name="dsProxyAuthZID" type="optional">
<function-arg-description>
Use the proxied authorization control with the given authorization ID
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
- <function-arg-def name="dsStopReason" type="optional" default="''">
+ <function-arg-def name="dsStopReason" type="optional">
<function-arg-description>
Reason the server is being stopped or restarted
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
- <function-arg-def name="dsRestart" type="optional" default="''">
+ <function-arg-def name="dsRestart" type="optional">
<function-arg-description>
Attempt to automatically restart the server once it has stopped
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
- <function-arg-def name="dsStopTime" type="optional" default="''">
+ <function-arg-def name="dsStopTime" type="optional">
<function-arg-description>
Time to begin the shutdown in YYYYMMDDhhmmss format (local time)
</function-arg-description>
<function-arg-property name="type" value="timestamp"/>
</function-arg-def>
- <function-arg-def name="dsTrustAll" type="optional" default="''">
+ <function-arg-def name="dsTrustAll" type="optional">
<function-arg-description>
Trust all server SSL certificates
</function-arg-description>
<function-arg-property name="type" value="option"/>
</function-arg-def>
- <function-arg-def name="dsKeyStoreFile" type="optional" default="''">
+ <function-arg-def name="dsKeyStoreFile" type="optional">
<function-arg-description>
Certificate keystore path
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
- <function-arg-def name="dsKeyStorePwd" type="optional" default="''">
+ <function-arg-def name="dsKeyStorePwd" type="optional">
<function-arg-description>
Certificate keystore PIN
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
- <function-arg-def name="dsKeyStorePwdFile" type="optional" default="''">
+ <function-arg-def name="dsKeyStorePwdFile" type="optional">
<function-arg-description>
Certificate keystore PIN file
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
- <function-arg-def name="dsTrustStoreFile" type="optional" default="''">
+ <function-arg-def name="dsTrustStoreFile" type="optional">
<function-arg-description>
Certificate trust store path
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
- <function-arg-def name="dsTrustStorePwd" type="optional" default="''">
+ <function-arg-def name="dsTrustStorePwd" type="optional">
<function-arg-description>
Certificate trust store PIN
</function-arg-description>
<function-arg-property name="type" value="string"/>
</function-arg-def>
- <function-arg-def name="dsTrustStorePwdFile" type="optional" default="''">
+ <function-arg-def name="dsTrustStorePwdFile" type="optional">
<function-arg-description>
Certificate trust store PIN file
</function-arg-description>
<function-arg-property name="type" value="filename"/>
</function-arg-def>
- <function-arg-def name="dsHelp" type="optional" default="''">
+ <function-arg-def name="dsHelp" type="optional">
<function-arg-description>
Help option
</function-arg-description>
@@ -385,6 +377,7 @@
<!-- Build the Command -->
<script>
STAFCmdParamsList=[]
+ STAFCmdParams=''
if dsPath:
STAFCmd='%s/bin/stop-ds%s' % (dsPath,fileExt)
@@ -566,34 +559,56 @@
</call>
</sequence>
</function>
-
- <!-- Import Function -->
+
+ <!-- Import LDIF file Function -->
<function name="importLdif">
- <function-prolog>
- This function performs an offline import of an ldif file
- </function-prolog>
+ <function-prolog>
+ This function performs an offline import of an ldif file
+ </function-prolog>
<function-map-args>
- <function-required-arg name="ldifFile">
- The name of the ldif file
- </function-required-arg>
- <function-optional-arg name="backEnd" default="'%s' % DIRECTORY_INSTANCE_BE">
- The name of the database backend
- </function-optional-arg>
- <function-optional-arg name="extraParams" default="' '">
- Optional extra parameters for specific test cases
- </function-optional-arg>
+ <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="hostname"/>
+ </function-arg-def>
+ <function-arg-def name="ldifFile" type="required">
+ <function-arg-description>
+ Path to the LDIF file to be imported
+ </function-arg-description>
+ <function-arg-property name="type" value="filename"/>
+ </function-arg-def>
+ <function-arg-def name="backEnd" type="optional" default="'%s' % DIRECTORY_INSTANCE_BE">
+ <function-arg-description>
+ Backend ID for the backend to import
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="extraParams" type="optional" default="''">
+ <function-arg-description>
+ Optional extra parameters for specific test cases
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
</function-map-args>
+
<sequence>
<message>
'import-ldif%s -l %s -n %s %s' % (fileExt,ldifFile,backEnd,extraParams)
</message>
<process name="'Offline Import'">
- <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
- <command>'%s/import-ldif%s' % (OPENDS_BINPATH,fileExt)</command>
+ <location>'%s' % location </location>
+ <command>'%s/bin/import-ldif%s' % (dsPath,fileExt)</command>
<parms>'-l %s -n %s %s' % (ldifFile,backEnd,extraParams)</parms>
- <workdir>'%s' % (OPENDS_BINPATH)</workdir>
+ <workdir>'%s/bin' % dsPath</workdir>
<envs>
- ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
+ ['PATH=/bin:/usr/bin:%s/bin' % dsPath, 'JAVA_HOME=%s' % JAVA_HOME]
</envs>
<stderr mode="'stdout'"/>
<returnstdout/>
@@ -609,76 +624,387 @@
<return>importRC</return>
</sequence>
</function>
+
+ <!-- Import Function With Script-->
+ <function name="ImportLdifWithScript">
+ <function-prolog>
+ This function performs an offline import of an ldif file using the script
+ </function-prolog>
+ <function-map-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="hostname"/>
+ </function-arg-def>
+ <function-arg-def name="dsLdifFile" type="required">
+ <function-arg-description>
+ Path to the LDIF file to be imported
+ </function-arg-description>
+ <function-arg-property name="type" value="filename"/>
+ </function-arg-def>
+ <function-arg-def name="dsTemplateFile" type="optional">
+ <function-arg-description>
+ Path to a MakeLDIF template to use to generate the import data
+ </function-arg-description>
+ <function-arg-property name="type" value="filename"/>
+ </function-arg-def>
+ <function-arg-def name="dsAppend" type="optional">
+ <function-arg-description>
+ Append to an existing database rather than overwriting it
+ </function-arg-description>
+ <function-arg-property name="type" value="option"/>
+ </function-arg-def>
+ <function-arg-def name="dsReplaceExisting" type="optional">
+ <function-arg-description>
+ Replace existing entries when appending to the database
+ </function-arg-description>
+ <function-arg-property name="type" value="option"/>
+ </function-arg-def>
+ <function-arg-def name="dsBackEnd" type="optional" default="'%s' % DIRECTORY_INSTANCE_BE">
+ <function-arg-description>
+ Backend ID for the backend to import
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="dsBranchDN" type="optional">
+ <function-arg-description>
+ Base DN of a branch to include in the LDIF import
+ </function-arg-description>
+ <function-arg-property name="type" value="dn"/>
+ </function-arg-def>
+ <function-arg-def name="dsIncludeBranch" type="optional">
+ <function-arg-description>
+ Base DN of a branch to include in the LDIF import
+ </function-arg-description>
+ <function-arg-property name="type" value="dn"/>
+ </function-arg-def>
+ <function-arg-def name="dsExcludeBranch" type="optional">
+ <function-arg-description>
+ Base DN of a branch to exclude from the LDIF import
+ </function-arg-description>
+ <function-arg-property name="type" value="dn"/>
+ </function-arg-def>
+ <function-arg-def name="dsIncludeAttribute" type="optional">
+ <function-arg-description>
+ Attribute to include in the LDIF import
+ </function-arg-description>
+ <function-arg-property name="type" value="attribute"/>
+ </function-arg-def>
+ <function-arg-def name="dsExcludeAttribute" type="optional">
+ <function-arg-description>
+ Attribute to exclude in the LDIF import
+ </function-arg-description>
+ <function-arg-property name="type" value="attribute"/>
+ </function-arg-def>
+ <function-arg-def name="dsIncludeFilter" type="optional">
+ <function-arg-description>
+ Filter to identify entries to include in the LDIF import
+ </function-arg-description>
+ <function-arg-property name="type" value="filter"/>
+ </function-arg-def>
+ <function-arg-def name="dsExcludeFilter" type="optional">
+ <function-arg-description>
+ Filter to identify entries to exclude from the LDIF import
+ </function-arg-description>
+ <function-arg-property name="type" value="filter"/>
+ </function-arg-def>
+ <function-arg-def name="dsRejectFile" type="optional">
+ <function-arg-description>
+ Write rejected entries to the specified file
+ </function-arg-description>
+ <function-arg-property name="type" value="filename"/>
+ </function-arg-def>
+ <function-arg-def name="dsOverWriteRejects" type="optional">
+ <function-arg-description>
+ Overwrite an existing rejects file rather than appending to it
+ </function-arg-description>
+ <function-arg-property name="type" value="option"/>
+ </function-arg-def>
+ <function-arg-def name="dsRandomSeed" type="optional">
+ <function-arg-description>
+ Seed for the MakeLDIF random number generator
+ </function-arg-description>
+ <function-arg-property name="type" value="seed"/>
+ </function-arg-def>
+ <function-arg-def name="dsSkipSchemaValidation" type="optional">
+ <function-arg-description>
+ Skip schema validation during the LDIF import
+ </function-arg-description>
+ <function-arg-property name="type" value="option"/>
+ </function-arg-def>
+ <function-arg-def name="dsIsCompressed" type="optional">
+ <function-arg-description>
+ LDIF file is compressed
+ </function-arg-description>
+ <function-arg-property name="type" value="option"/>
+ </function-arg-def>
+ <function-arg-def name="dsIsEncrypted" type="optional">
+ <function-arg-description>
+ LDIF file is encrypted
+ </function-arg-description>
+ <function-arg-property name="type" value="option"/>
+ </function-arg-def>
+ <function-arg-def name="dsQuiet" type="optional">
+ <function-arg-description>
+ Use quiet mode (no output)
+ </function-arg-description>
+ <function-arg-property name="type" value="option"/>
+ </function-arg-def>
+ <function-arg-def name="dsHelp" type="optional">
+ <function-arg-description>
+ Display usage information
+ </function-arg-description>
+ <function-arg-property name="type" value="option"/>
+ </function-arg-def>
+ </function-map-args>
+
+ <sequence>
+
+ <!-- Build the Command -->
+ <script>
+ STAFCmdParamsList=[]
+ STAFCmdParams=''
+
+ if dsPath:
+ STAFCmd='%s/bin/import-ldif%s' % (dsPath,fileExt)
+
+ if dsLdifFile:
+ STAFCmdParamsList.append('-l %s' % dsLdifFile)
+
+ if dsTemplateFile:
+ STAFCmdParamsList.append('-t %s' % dsTemplateFile)
+
+ if dsAppend:
+ STAFCmdParamsList.append('-a')
+
+ if dsReplaceExisting:
+ STAFCmdParamsList.append('-r')
+
+ if dsBackEnd:
+ STAFCmdParamsList.append('-n %s' % dsBackEnd)
+
+ if dsIncludeBranch:
+ STAFCmdParamsList.append('-b %s' % dsIncludeBranch)
+
+ if dsExcludeBranch:
+ STAFCmdParamsList.append('-B %s' % dsExcludeBranch)
+
+ if dsIncludeAttribute:
+ STAFCmdParamsList.append('-i %s' % dsIncludeAttribute)
+
+ if dsExcludeAttribute:
+ STAFCmdParamsList.append('-e %s' % dsExcludeAttribute)
+
+ if dsIncludeFilter:
+ STAFCmdParamsList.append('-I %s' % dsIncludeFilter)
+
+ if dsExcludeFilter:
+ STAFCmdParamsList.append('-E %s' % dsExcludeFilter)
+
+ if dsRejectFile:
+ STAFCmdParamsList.append('-R %s' % dsRejectFile)
+
+ if dsOverWriteRejects:
+ STAFCmdParamsList.append('-O')
+
+ if dsRandomSeed:
+ STAFCmdParamsList.append('-S %s' % dsRandomSeed)
+
+ if dsSkipSchemaValidation:
+ STAFCmdParamsList.append('-s')
+
+ if dsIsCompressed:
+ STAFCmdParamsList.append('-c')
+
+ if dsIsEncrypted:
+ STAFCmdParamsList.append('-y')
+
+ if dsQuiet:
+ STAFCmdParamsList.append('-q')
+
+ if dsHelp:
+ STAFCmdParamsList.append('-H')
+
+ STAFCmdParams=' '.join(STAFCmdParamsList)
+ </script>
+
+ <message>
+ '%s %s' % (STAFCmd, STAFCmdParams)
+ </message>
+
+ <process name="'Offline Import Script'">
+ <location>'%s' % location</location>
+ <command>'%s' % STAFCmd</command>
+ <parms>'%s' % STAFCmdParams</parms>
+ <workdir>'%s/bin' % dsPath</workdir>
+ <envs>
+ ['PATH=/bin:/usr/bin:%s/bin' % dsPath, 'JAVA_HOME=%s' % JAVA_HOME]
+ </envs>
+ <stderr mode="'stdout'"/>
+ <returnstdout/>
+ </process>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ </sequence>
+ </function>
<!-- Import Task Function -->
<function name="importLdifTask">
<function-prolog>
This function performs an on line import task of an ldif file
</function-prolog>
- <function-map-args>
- <function-required-arg name="dsInstanceHost">
- Directory Server host name
- </function-required-arg>
- <function-required-arg name="dsInstancePort">
- Directory Server port number
- </function-required-arg>
- <function-required-arg name="dsInstanceDn">
- Directory Server Manager DN
- </function-required-arg>
- <function-required-arg name="dsInstancePswd">
- Directory Server Manager Password
- </function-required-arg>
- <function-required-arg name="taskID">
- The identifier for the task
- </function-required-arg>
- <function-required-arg name="ldifFile">
- The name of the ldif file
- </function-required-arg>
- <function-optional-arg name="backEnd" default="'%s' % DIRECTORY_INSTANCE_BE">
- Optional the name of the database backend
- </function-optional-arg>
- <function-optional-arg name="isCompressed" default="'FALSE'">
- Optional imported ldif data file compressed
- </function-optional-arg>
- <function-optional-arg name="isEncrypted" default="'FALSE'">
- Optional imported ldif data file encrypted
- </function-optional-arg>
- <function-optional-arg name="rejectsFile" default="' '">
- Optional name of rejects file
- </function-optional-arg>
- <function-optional-arg name="overwriteRejectsFile" default="'FALSE'">
- Optional name of rejects file
- </function-optional-arg>
- <function-optional-arg name="append" default="'FALSE'">
- Optional append imported ldif data
- </function-optional-arg>
- <function-optional-arg name="skipSchemaValidation" default="'FALSE'">
- Optional don't do schema validation on import
- </function-optional-arg>
- <function-optional-arg name="replaceExisting" default="'TRUE'">
- Optional replace existing data
- </function-optional-arg>
- <function-optional-arg name="excludeBranches" default="' '">
- Optional exclude branches
- </function-optional-arg>
- <function-optional-arg name="includeBranches" default="' '">
- Optional include branches
- </function-optional-arg>
- <function-optional-arg name="excludeAttributes" default="' '">
- Optional exclude attributes
- </function-optional-arg>
- <function-optional-arg name="includeAttributes" default="' '">
- Optional include attributes
- </function-optional-arg>
- <function-optional-arg name="excludeFilters" default="' '">
- Optional exclude filters
- </function-optional-arg>
- <function-optional-arg name="includeFilters" default="' '">
- Optional include filters
- </function-optional-arg>
+ <function-map-args>
+ <function-arg-def name="location" type="optional" default="'%s' % 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="pathname"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstanceHost" type="optional">
+ <function-arg-description>
+ Directory server host name
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePort" type="optional">
+ <function-arg-description>
+ Directory server port number
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstanceDn" type="optional">
+ <function-arg-description>
+ Bind DN
+ </function-arg-description>
+ <function-arg-property name="type" value="dn"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePswd" type="optional">
+ <function-arg-description>
+ Bind password
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="taskID" type="optional">
+ <function-arg-description>
+ The identifier for the task
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="ldifFile" type="optional">
+ <function-arg-description>
+ The name of the ldif file
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="backEnd" type="optional" default="'%s' % DIRECTORY_INSTANCE_BE">
+ <function-arg-description>
+ Optional the name of the database backend
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="isCompressed" type="optional" default="'FALSE'">
+ <function-arg-description>
+ Optional imported ldif data file compressed
+ </function-arg-description>
+ <function-arg-property name="type" value="boolean"/>
+ </function-arg-def>
+ <function-arg-def name="isEncrypted" type="optional" default="'FALSE'">
+ <function-arg-description>
+ Optional imported ldif data file encrypted
+ </function-arg-description>
+ <function-arg-property name="type" value="boolean"/>
+ </function-arg-def>
+ <function-arg-def name="rejectsFile" type="optional">
+ <function-arg-description>
+ Optional name of rejects file
+ </function-arg-description>
+ <function-arg-property name="type" value="filename"/>
+ </function-arg-def>
+ <function-arg-def name="overwriteRejectsFile" type="optional" default="'FALSE'">
+ <function-arg-description>
+ Optional name of rejects file
+ </function-arg-description>
+ <function-arg-property name="type" value="boolean"/>
+ </function-arg-def>
+ <function-arg-def name="append" type="optional" default="'FALSE'">
+ <function-arg-description>
+ Optional append imported ldif data
+ </function-arg-description>
+ <function-arg-property name="type" value="boolean"/>
+ </function-arg-def>
+ <function-arg-def name="skipSchemaValidation" type="optional" default="'FALSE'">
+ <function-arg-description>
+ Optional don't do schema validation on import
+ </function-arg-description>
+ <function-arg-property name="type" value="boolean"/>
+ </function-arg-def>
+ <function-arg-def name="replaceExisting" type="optional" default="'FALSE'">
+ <function-arg-description>
+ Optional replace existing data
+ </function-arg-description>
+ <function-arg-property name="type" value="boolean"/>
+ </function-arg-def>
+ <function-arg-def name="excludeBranches" type="optional" default="''">
+ <function-arg-description>
+ Optional exclude branches
+ </function-arg-description>
+ <function-arg-property name="type" value="option"/>
+ </function-arg-def>
+ <function-arg-def name="includeBranches" type="optional" default="''">
+ <function-arg-description>
+ Optional include branches
+ </function-arg-description>
+ <function-arg-property name="type" value="option"/>
+ </function-arg-def>
+ <function-arg-def name="excludeAttributes" type="optional" default="''">
+ <function-arg-description>
+ Optional exclude attributes
+ </function-arg-description>
+ <function-arg-property name="type" value="option"/>
+ </function-arg-def>
+ <function-arg-def name="includeAttributes" type="optional" default="''">
+ <function-arg-description>
+ Optional include attributes
+ </function-arg-description>
+ <function-arg-property name="type" value="option"/>
+ </function-arg-def>
+ <function-arg-def name="excludeFilters" type="optional" default="''">
+ <function-arg-description>
+ Optional exclude filters
+ </function-arg-description>
+ <function-arg-property name="type" value="option"/>
+ </function-arg-def>
+ <function-arg-def name="includeFilters" type="optional" default="''">
+ <function-arg-description>
+ Optional exclude filters
+ </function-arg-description>
+ <function-arg-property name="type" value="option"/>
+ </function-arg-def>
</function-map-args>
<sequence>
+
+ <!-- Local variables -->
<script>
+ mylocation=location
+ taskLdif='%s/../functional-tests/shared/data/import-task.ldif' % dsPath
+ tmpTaskLdif='%s/import-task.ldif' % TMP_DATA_DIR
taskDN='ds-task-id=%s,cn=Scheduled Tasks,cn=Tasks' % taskID
</script>
@@ -690,200 +1016,83 @@
ldifLines.append('objectclass: ds-task')
ldifLines.append('objectclass: ds-task-import')
ldifLines.append('ds-task-class-name: org.opends.server.tasks.ImportTask')
- </script>
-
- <script>
+
ldifLines.append('ds-task-import-backend-id: %s' % backEnd )
ldifLines.append('ds-task-import-ldif-file: %s' % ldifFile )
ldifLines.append('ds-task-import-is-compressed: %s' % isCompressed )
ldifLines.append('ds-task-import-is-encrypted: %s' % isEncrypted )
- </script>
-
- <if expr="rejectsFile != ' '">
- <script>
+
+ if rejectsFile:
ldifLines.append('ds-task-import-reject-file: %s' % rejectsFile )
- </script>
- </if>
-
- <script>
+
ldifLines.append('ds-task-import-overwrite-rejects: %s' % overwriteRejectsFile )
ldifLines.append('ds-task-import-append: %s' % append )
ldifLines.append('ds-task-import-skip-schema-validation: %s' % skipSchemaValidation )
ldifLines.append('ds-task-import-replace-existing: %s' % replaceExisting )
</script>
- <iterate var="branch" in="excludeBranches">
- <sequence>
- <if expr="branch == ' '">
- <break/>
- </if>
- <script>
- ldifLines.append('ds-task-import-exclude-branch: %s' % branch )
- </script>
- </sequence>
- </iterate>
-
- <iterate var="branch" in="includeBranches">
- <sequence>
- <if expr="branch == ' '">
- <break/>
- </if>
- <script>
+ <script>
+ for branch in excludeBranches:
+ ldifLines.append('ds-task-import-exclude-branch: %s' % branch )
+
+ for branch in includeBranches:
ldifLines.append('ds-task-import-include-branch: %s' % branch )
- </script>
- </sequence>
- </iterate>
-
- <iterate var="attribute" in="excludeAttributes">
- <sequence>
- <if expr="attribute == ' '">
- <break/>
- </if>
- <script>
- ldifLines.append('ds-task-import-exclude-attribute: %s' % attribute )
- </script>
- </sequence>
- </iterate>
-
- <iterate var="attribute" in="includeAttributes">
- <sequence>
- <if expr="attribute == ' '">
- <break/>
- </if>
- <script>
+
+ for attribute in excludeAttributes:
+ ldifLines.append('ds-task-import-exclude-attribute: %s' % attribute )
+
+ for attribute in includeAttributes:
ldifLines.append('ds-task-import-include-attribute: %s' % attribute )
- </script>
- </sequence>
- </iterate>
-
- <iterate var="filter" in="excludeFilters">
- <sequence>
- <if expr="filter == ' '">
- <break/>
- </if>
- <script>
+
+ for filter in excludeFilters:
ldifLines.append('ds-task-import-exclude-filter: %s' % filter)
- </script>
- </sequence>
- </iterate>
-
- <iterate var="filter" in="includeFilters">
- <sequence>
- <if expr="filter == ' '">
- <break/>
- </if>
- <script>
- ldifLines.append('ds-task-import-include-filter: %s' % filter)
- </script>
- </sequence>
- </iterate>
+
+ for filter in includeFilters:
+ ldifLines.append('ds-task-import-include-filter: %s' % filter)
+ </script>
<!-- Write out the import-task ldif -->
<script>
- outfile = open('%s/import-task.ldif' % TMP_DATA_DIR,"w")
+ outfile = open(tmpTaskLdif,"w")
for line in ldifLines:
outfile.write("%s\n" % line)
outfile.close()
</script>
-
<!-- Copy the import-task ldif to remote host -->
- <message>'Copy import task ldif (import-task.ldif) file from %s to %s' % (TMP_DATA_DIR,STAGED_DATA_DIR)</message>
+ <message>'Copy import task ldif (%s) to %s' % (tmpTaskLdif,taskLdif)</message>
<call function="'copyFile'">
{ 'location' : STAXServiceMachine,
- 'srcfile' : '%s/import-task.ldif' % TMP_DATA_DIR,
- 'destfile' : '%s/import-task.ldif' % STAGED_DATA_DIR,
- 'remotehost' : STAF_REMOTE_HOSTNAME }
+ 'srcfile' : tmpTaskLdif,
+ 'destfile' : taskLdif,
+ 'remotehost' : mylocation }
</call>
- <!-- Online Import Task with ldapmodify -->
- <message>
- 'ldapmodify%s -a -h %s -p %s -D "%s" -w %s' % (fileExt,dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd)
- </message>
- <process name="'Online Import Task'">
- <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
- <command>'%s/ldapmodify%s' % (OPENDS_BINPATH,fileExt)</command>
- <parms>'-a -h %s -p %s -D "%s" -w %s' % (dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd)</parms>
- <workdir>'%s' % (OPENDS_BINPATH)</workdir>
- <envs>
- ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
- </envs>
- <stdin>'%s/import-task.ldif' % STAGED_DATA_DIR</stdin>
- <stderr mode="'stdout'"/>
- <returnstdout/>
- </process>
-
- <script>
- importTaskRC=RC
- importTaskResult=STAXResult
- </script>
-
- <call function="'checkRC'">
- { 'returncode' : importTaskRC ,
- 'result' : importTaskResult }
+ <!-- Start the task using ldap task interface -->
+ <call function="'StartLdapTask'">
+ { 'location' : mylocation,
+ 'taskLabel' : 'Online Import Task',
+ 'dsHost' : dsInstanceHost,
+ 'dsPort' : dsInstancePort,
+ 'dsBindDn' : dsInstanceDn,
+ 'dsBindPswd' : dsInstancePswd,
+ 'dsTaskLdif' : taskLdif }
</call>
-
- <!-- Check that the task is completed -->
- <script>
- loopRC=1
- </script>
-
- <script>
- searchre = re.compile('ds-task-state: COMPLETED_SUCCESSFULLY')
- </script>
-
- <!-- Wait for the task to be COMPLETED_SUCCESSFULLY -->
- <loop from="1" to="5" while="loopRC != 0">
- <sequence>
- <message>
- 'ldapsearch%s -h %s -p %s -D "%s" -w %s -s base -b "%s" "objectclass=*" ds-task-state' % (fileExt,dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd,taskDN)
- </message>
- <process name="'Search On line Import Task'">
- <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
- <command>'%s/ldapsearch%s' % (OPENDS_BINPATH,fileExt)</command>
- <parms>'-h %s -p %s -D "%s" -w %s -s base -b "%s" "objectclass=*" ds-task-state' % (dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd,taskDN)</parms>
- <workdir>'%s' % (OPENDS_BINPATH)</workdir>
- <envs>
- ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
- </envs>
- <stderr mode="'stdout'"/>
- <returnstdout/>
- </process>
-
- <script>
- searchRC=RC
- searchResult=STAXResult
- </script>
-
- <script>
- result = STAXResult[0][1]
- </script>
-
- <if expr='re.search(searchre, result) != None'>
- <sequence>
- <script>loopRC=0</script>
- </sequence>
- <else>
- <message log="1" level="'Warning'">
- 'No match on ds-task-state.'
- </message>
- </else>
- </if>
-
- <call function="'checkRC'">
- { 'returncode' : searchRC ,
- 'result' : searchResult }
- </call>
-
- <call function="'Sleep'">
- { 'sleepForMilliSeconds' : '2000' }
- </call>
- </sequence>
- </loop>
- <return>loopRC</return>
+
+ <!-- Check that the ldap task is completed -->
+ <call function="'CheckLdapTask'">
+ { 'location' : mylocation,
+ 'dsTaskDn' : taskDN,
+ 'dsHost' : dsInstanceHost,
+ 'dsPort' : dsInstancePort,
+ 'dsBindDn' : dsInstanceDn,
+ 'dsBindPswd' : dsInstancePswd }
+ </call>
+
</sequence>
+
</function>
<!-- Check Import Function -->
@@ -892,41 +1101,114 @@
This function verifies an import of an ldif file
</function-prolog>
<function-map-args>
- <function-required-arg name="expectedEntries">
- Entries expected to be present after import
- </function-required-arg>
- <function-optional-arg name="missingEntries" default="'NULL'">
- Optional entries expected to be present after import
- </function-optional-arg>
- <function-optional-arg name="expectedAttributes" default="'NULL'">
- Optional attributes expected to be present after import
- </function-optional-arg>
- <function-optional-arg name="missingAttributes" default="'NULL'">
- Optional attributes expected to be present after import
- </function-optional-arg>
- <function-optional-arg name="suffix" default="'%s' % DIRECTORY_INSTANCE_SFX">
- Optional main suffix for the import
- </function-optional-arg>
- <function-optional-arg name="startDS" default="'yes'">
- Optional start the Directory Server after import
- </function-optional-arg>
+ <function-arg-def name="location" type="optional" default="'%s' % 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="pathname"/>
+ </function-arg-def>
+ <function-arg-def name="dsHost" type="optional" default="'%s' % DIRECTORY_INSTANCE_HOST">
+ <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="dsPort" type="optional" default="'%s' % DIRECTORY_INSTANCE_PORT">
+ <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="dsDn" type="optional" default="'%s' % DIRECTORY_INSTANCE_DN">
+ <function-arg-description>
+ Bind DN
+ </function-arg-description>
+ <function-arg-property name="type" value="DN"/>
+ </function-arg-def>
+ <function-arg-def name="dsPswd" type="optional" default="'%s' % DIRECTORY_INSTANCE_PSWD">
+ <function-arg-description>
+ Bind password
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="expectedEntries" type="required">
+ <function-arg-description>
+ Entries expected to be present after import
+ </function-arg-description>
+ <function-arg-property name="type" value="list"/>
+ </function-arg-def>
+ <function-arg-def name="missingEntries" type="optional" default="'NULL'">
+ <function-arg-description>
+ Optional entries expected to be missing after import
+ </function-arg-description>
+ <function-arg-property name="type" value="list"/>
+ </function-arg-def>
+ <function-arg-def name="expectedAttributes" type="optional" default="'NULL'">
+ <function-arg-description>
+ Optional attributes expected to be present after import
+ </function-arg-description>
+ <function-arg-property name="type" value="list"/>
+ </function-arg-def>
+ <function-arg-def name="missingAttributes" type="optional" default="'NULL'">
+ <function-arg-description>
+ Optional attributes expected to be missing after import
+ </function-arg-description>
+ <function-arg-property name="type" value="list"/>
+ </function-arg-def>
+ <function-arg-def name="suffix" type="optional" default="'%s' % DIRECTORY_INSTANCE_SFX">
+ <function-arg-description>
+ Optional main suffix for the import
+ </function-arg-description>
+ <function-arg-property name="type" value="list"/>
+ </function-arg-def>
+ <function-arg-def name="startDS" type="optional" default="'yes'">
+ <function-arg-description>
+ Optional start the Directory Server after import
+ </function-arg-description>
+ <function-arg-property name="type" value="list"/>
+ </function-arg-def>
</function-map-args>
+
<sequence>
- <!-- If we don't want to start DS then we don't need to stop it -->
- <script>stopDS=startDS</script>
+
+ <!-- Local variables -->
+ <script>
+ mylocation=location
+ myhost=dsHost
+ myport=dsPort
+ mydn=dsDn
+ mypswd=dsPswd
+ </script>
+
+ <!-- Assume that if DS is not started then there is no need to stop it -->
+ <script>
+ if startDS == 'yes':
+ stopDS='yes'
+ else:
+ stopDS='no'
+ </script>
+
<!-- Do we need to start the DS -->
<if expr="startDS == 'yes'">
<sequence>
<!-- StartDS -->
<call function="'StartDsWithScript'">
- { 'location' : STAF_REMOTE_HOSTNAME }
+ { 'location' : mylocation }
</call>
<!-- Wait for DS to start -->
<call function="'isAlive'">
- { 'noOfLoops' : 5 ,
+ { 'location' : mylocation,
+ 'noOfLoops' : 5 ,
'noOfMilliSeconds' : 2000 }
</call>
+
</sequence>
</if>
@@ -934,10 +1216,11 @@
<iterate var="expectedEntry" in="expectedEntries">
<sequence>
<call function="'SearchObject'">
- { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
- 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
- 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
- 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
+ { 'location' : mylocation ,
+ 'dsInstanceHost' : myhost ,
+ 'dsInstancePort' : myport ,
+ 'dsInstanceDn' : mydn ,
+ 'dsInstancePswd' : mypswd ,
'dsBaseDN' : '%s' % expectedEntry ,
'dsFilter' : 'objectclass=*'
}
@@ -956,12 +1239,13 @@
<break/>
</if>
<call function="'SearchObject'">
- { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
- 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
- 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
- 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
- 'dsBaseDN' : '%s' % missingEntry ,
- 'dsFilter' : 'objectclass=*'
+ { 'location' : mylocation ,
+ 'dsInstanceHost' : myhost ,
+ 'dsInstancePort' : myport ,
+ 'dsInstanceDn' : mydn ,
+ 'dsInstancePswd' : mypswd ,
+ 'dsBaseDN' : '%s' % missingEntry ,
+ 'dsFilter' : 'objectclass=*'
}
</call>
<call function="'checktestRC'">
@@ -976,33 +1260,53 @@
<if expr="stopDS == 'yes'">
<!-- StopDS -->
<call function="'StopDsWithScript'">
- { 'location' : STAF_REMOTE_HOSTNAME,
- 'dsHost' : DIRECTORY_INSTANCE_HOST,
- 'dsPort' : DIRECTORY_INSTANCE_PORT,
- 'dsBindDN' : DIRECTORY_INSTANCE_DN,
- 'dsBindPwd' : DIRECTORY_INSTANCE_PSWD }
+ { 'location' : mylocation ,
+ 'dsHost' : myhost ,
+ 'dsPort' : myport ,
+ 'dsBindDN' : mydn ,
+ 'dsBindPwd' : mypswd }
</call>
</if>
</sequence>
</function>
-
- <!-- Export Function -->
+ <!-- Export LDIF Function -->
<function name="exportLdif">
<function-prolog>
This function performs an export to an ldif file on or off line
</function-prolog>
<function-map-args>
- <function-required-arg name="ldifFile">
- The name of the ldif file to be written
- </function-required-arg>
- <function-optional-arg name="backEnd" default="'%s' % DIRECTORY_INSTANCE_BE">
- The name of the database backend
- </function-optional-arg>
- <function-optional-arg name="extraParams" default="' '">
- Optional extra parameters for specific test cases
- </function-optional-arg>
+ <function-arg-def name="location" type="optional" default="'%s' % 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="pathname"/>
+ </function-arg-def>
+ <function-arg-def name="ldifFile" type="required">
+ <function-arg-description>
+ The name of the ldif file to be written
+ </function-arg-description>
+ <function-arg-property name="type" value="filename"/>
+ </function-arg-def>
+ <function-arg-def name="backEnd" type="optional" default="'%s' % DIRECTORY_INSTANCE_BE">
+ <function-arg-description>
+ The name of the database backend
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="extraParams" type="optional" default="''">
+ <function-arg-description>
+ Optional extra parameters for specific test cases
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
</function-map-args>
<sequence>
@@ -1010,12 +1314,12 @@
'export-ldif%s -l %s -n %s %s' % (fileExt,ldifFile,backEnd,extraParams)
</message>
<process name="'Ldif Export'">
- <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
- <command>'%s/export-ldif%s' % (OPENDS_BINPATH,fileExt)</command>
+ <location>'%s' % location </location>
+ <command>'%s/bin/export-ldif%s' % (dsPath,fileExt)</command>
<parms>'-l %s -n %s %s' % (ldifFile,backEnd,extraParams)</parms>
- <workdir>'%s' % (OPENDS_BINPATH)</workdir>
+ <workdir>'%s/bin' % dsPath</workdir>
<envs>
- ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
+ ['PATH=/bin:/usr/bin:%s/bin' % dsPath, 'JAVA_HOME=%s' % JAVA_HOME]
</envs>
<stderr mode="'stdout'"/>
<returnstdout/>
@@ -1038,63 +1342,132 @@
This function performs an on line export task of an ldif file
</function-prolog>
<function-map-args>
- <function-required-arg name="dsInstanceHost">
- Directory Server host name
- </function-required-arg>
- <function-required-arg name="dsInstancePort">
- Directory Server port number
- </function-required-arg>
- <function-required-arg name="dsInstanceDn">
- Directory Server Manager DN
- </function-required-arg>
- <function-required-arg name="dsInstancePswd">
- Directory Server Manager Password
- </function-required-arg>
- <function-required-arg name="taskID">
- The identifier for the task
- </function-required-arg>
- <function-required-arg name="ldifFile">
- The name of the ldif file
- </function-required-arg>
- <function-optional-arg name="backEnd" default="'%s' % DIRECTORY_INSTANCE_BE">
- Optional the name of the database backend
- </function-optional-arg>
- <function-optional-arg name="Compress" default="'FALSE'">
- Optional exported ldif data file compressed
- </function-optional-arg>
- <function-optional-arg name="Encrypt" default="'FALSE'">
- Optional exported ldif data file encrypted
- </function-optional-arg>
- <function-optional-arg name="append" default="'FALSE'">
- Optional append exported ldif data
- </function-optional-arg>
- <function-optional-arg name="excludeBranches" default="' '">
- Optional exclude branches
- </function-optional-arg>
- <function-optional-arg name="includeBranches" default="' '">
- Optional include branches
- </function-optional-arg>
- <function-optional-arg name="excludeAttributes" default="' '">
- Optional exclude attributes
- </function-optional-arg>
- <function-optional-arg name="includeAttributes" default="' '">
- Optional include attributes
- </function-optional-arg>
- <function-optional-arg name="excludeFilters" default="' '">
- Optional exclude filters
- </function-optional-arg>
- <function-optional-arg name="includeFilters" default="' '">
- Optional include filters
- </function-optional-arg>
- <function-optional-arg name="signHash" default="'FALSE'">
- Optional generate a signed hash of the export data
- </function-optional-arg>
+ <function-arg-def name="location" type="optional" default="'%s' % 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="pathname"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstanceHost" type="optional">
+ <function-arg-description>
+ Directory server host name
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePort" type="optional">
+ <function-arg-description>
+ Directory server port number
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstanceDn" type="optional">
+ <function-arg-description>
+ Bind DN
+ </function-arg-description>
+ <function-arg-property name="type" value="dn"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePswd" type="optional">
+ <function-arg-description>
+ Bind password
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="taskID" type="optional">
+ <function-arg-description>
+ The identifier for the task
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="ldifFile" type="optional">
+ <function-arg-description>
+ The name of the ldif file
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="backEnd" type="optional" default="'%s' % DIRECTORY_INSTANCE_BE">
+ <function-arg-description>
+ Optional the name of the database backend
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="isCompressed" type="optional" default="'FALSE'">
+ <function-arg-description>
+ Optional exported ldif data file compressed
+ </function-arg-description>
+ <function-arg-property name="type" value="boolean"/>
+ </function-arg-def>
+ <function-arg-def name="isEncrypted" type="optional" default="'FALSE'">
+ <function-arg-description>
+ Optional exported ldif data file encrypted
+ </function-arg-description>
+ <function-arg-property name="type" value="boolean"/>
+ </function-arg-def>
+ <function-arg-def name="append" type="optional" default="'FALSE'">
+ <function-arg-description>
+ Optional append exported ldif data
+ </function-arg-description>
+ <function-arg-property name="type" value="boolean"/>
+ </function-arg-def>
+ <function-arg-def name="excludeBranches" type="optional" default="''">
+ <function-arg-description>
+ Optional exclude branches
+ </function-arg-description>
+ <function-arg-property name="type" value="option"/>
+ </function-arg-def>
+ <function-arg-def name="includeBranches" type="optional" default="''">
+ <function-arg-description>
+ Optional include branches
+ </function-arg-description>
+ <function-arg-property name="type" value="option"/>
+ </function-arg-def>
+ <function-arg-def name="excludeAttributes" type="optional" default="''">
+ <function-arg-description>
+ Optional exclude attributes
+ </function-arg-description>
+ <function-arg-property name="type" value="option"/>
+ </function-arg-def>
+ <function-arg-def name="includeAttributes" type="optional" default="''">
+ <function-arg-description>
+ Optional include attributes
+ </function-arg-description>
+ <function-arg-property name="type" value="option"/>
+ </function-arg-def>
+ <function-arg-def name="excludeFilters" type="optional" default="''">
+ <function-arg-description>
+ Optional exclude filters
+ </function-arg-description>
+ <function-arg-property name="type" value="option"/>
+ </function-arg-def>
+ <function-arg-def name="includeFilters" type="optional" default="''">
+ <function-arg-description>
+ Optional exclude filters
+ </function-arg-description>
+ <function-arg-property name="type" value="option"/>
+ </function-arg-def>
+ <function-arg-def name="isSignedHash" type="optional" default="'FALSE'">
+ <function-arg-description>
+ Optional generate a signed hash of the export data
+ </function-arg-description>
+ <function-arg-property name="type" value="option"/>
+ </function-arg-def>
</function-map-args>
<sequence>
+
+ <!-- Local variables -->
<script>
+ mylocation=location
+ taskLdif='%s/../functional-tests/shared/data/export-task.ldif' % dsPath
+ tmpTaskLdif='%s/export-task.ldif' % TMP_DATA_DIR
taskDN='ds-task-id=%s,cn=Scheduled Tasks,cn=Tasks' % taskID
</script>
+
<!-- Build the export task configuration object -->
<script>
ldifLines=[]
@@ -1104,84 +1477,37 @@
ldifLines.append('objectclass: ds-task-export')
ldifLines.append('ds-task-class-name: org.opends.server.tasks.ExportTask')
ldifLines.append('ds-task-id: %s' % taskID)
- </script>
- <script>
+
ldifLines.append('ds-task-export-backend-id: %s' % backEnd )
ldifLines.append('ds-task-export-ldif-file: %s' % ldifFile )
- ldifLines.append('ds-task-export-compress-ldif: %s' % Compress )
- ldifLines.append('ds-task-export-encrypt-ldif: %s' % Encrypt )
- ldifLines.append('ds-task-export-sign-hash: %s' % signHash )
+ ldifLines.append('ds-task-export-compress-ldif: %s' % isCompressed )
+ ldifLines.append('ds-task-export-encrypt-ldif: %s' % isEncrypted )
+ ldifLines.append('ds-task-export-sign-hash: %s' % isSignedHash )
</script>
-
- <iterate var="branch" in="excludeBranches">
- <sequence>
- <if expr="branch == ' '">
- <break/>
- </if>
- <script>
+
+ <script>
+ for branch in excludeBranches:
ldifLines.append('ds-task-export-exclude-branch: %s' % branch )
- </script>
- </sequence>
- </iterate>
-
- <iterate var="branch" in="includeBranches">
- <sequence>
- <if expr="branch == ' '">
- <break/>
- </if>
- <script>
+
+ for branch in includeBranches:
ldifLines.append('ds-task-export-include-branch: %s' % branch )
- </script>
- </sequence>
- </iterate>
-
- <iterate var="attribute" in="excludeAttributes">
- <sequence>
- <if expr="attribute == ' '">
- <break/>
- </if>
- <script>
+
+ for attribute in excludeAttributes:
ldifLines.append('ds-task-export-exclude-attribute: %s' % attribute )
- </script>
- </sequence>
- </iterate>
-
- <iterate var="attribute" in="includeAttributes">
- <sequence>
- <if expr="attribute == ' '">
- <break/>
- </if>
- <script>
+
+ for attribute in includeAttributes:
ldifLines.append('ds-task-export-include-attribute: %s' % attribute )
- </script>
- </sequence>
- </iterate>
-
- <iterate var="filter" in="excludeFilters">
- <sequence>
- <if expr="filter == ' '">
- <break/>
- </if>
- <script>
+
+ for filter in excludeFilters:
ldifLines.append('ds-task-export-exclude-filter: %s' % filter)
- </script>
- </sequence>
- </iterate>
-
- <iterate var="filter" in="includeFilters">
- <sequence>
- <if expr="filter == ' '">
- <break/>
- </if>
- <script>
- ldifLines.append('ds-task-export-include-filter: %s' % filter)
- </script>
- </sequence>
- </iterate>
+
+ for filter in includeFilters:
+ ldifLines.append('ds-task-export-include-filter: %s' % filter)
+ </script>
<!-- Write out the export-task ldif -->
<script>
- outfile = open('%s/export-task.ldif' % TMP_DATA_DIR,"w")
+ outfile = open(tmpTaskLdif,"w")
for line in ldifLines:
outfile.write("%s\n" % line)
@@ -1190,130 +1516,92 @@
</script>
<!-- Copy the export-task ldif to remote host -->
- <message>'Copy export task ldif file.'</message>
+ <message>'Copy export task ldif (%s) to %s' % (tmpTaskLdif,taskLdif)</message>
<call function="'copyFile'">
{ 'location' : STAXServiceMachine,
- 'srcfile' : '%s/export-task.ldif' % TMP_DATA_DIR,
- 'destfile' : '%s/export-task.ldif' % STAGED_DATA_DIR,
- 'remotehost' : STAF_REMOTE_HOSTNAME }
+ 'srcfile' : tmpTaskLdif,
+ 'destfile' : taskLdif,
+ 'remotehost' : mylocation }
</call>
- <!-- On line Export Task with ldapmodify -->
- <message>
- 'ldapmodify%s -a -h %s -p %s -D "%s" -w %s' % (fileExt,dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd)
- </message>
- <process name="'On line Export Task'">
- <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
- <command>'%s/ldapmodify%s' % (OPENDS_BINPATH,fileExt)</command>
- <parms>'-a -h %s -p %s -D "%s" -w %s' % (dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd)</parms>
- <workdir>'%s' % (OPENDS_BINPATH)</workdir>
- <envs>
- ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
- </envs>
- <stdin>'%s/export-task.ldif' % STAGED_DATA_DIR</stdin>
- <stderr mode="'stdout'"/>
- <returnstdout/>
- </process>
-
- <script>
- exportTaskRC=RC
- exportTaskResult=STAXResult
- </script>
-
- <call function="'checkRC'">
- { 'returncode' : exportTaskRC ,
- 'result' : exportTaskResult }
+ <!-- Start the task using ldap task interface -->
+ <call function="'StartLdapTask'">
+ { 'location' : mylocation,
+ 'taskLabel' : 'Online Export Task',
+ 'dsHost' : dsInstanceHost,
+ 'dsPort' : dsInstancePort,
+ 'dsBindDn' : dsInstanceDn,
+ 'dsBindPswd' : dsInstancePswd,
+ 'dsTaskLdif' : taskLdif }
</call>
<!-- Check that the task is completed -->
- <script>
- loopRC=1
- </script>
-
- <script>
- import re
- searchre = re.compile('ds-task-state: COMPLETED_SUCCESSFULLY')
- </script>
-
- <!-- Wait for the task to be COMPLETED_SUCCESSFULLY -->
- <loop from="1" to="5" while="loopRC != 0">
- <sequence>
- <message>
- 'ldapsearch%s -h %s -p %s -D "%s" -w %s -s base -b "%s" "objectclass=*" ds-task-state' % (fileExt,dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd,taskDN)
- </message>
- <process name="'Search On line Export Task'">
- <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
- <command>'%s/ldapsearch%s' % (OPENDS_BINPATH,fileExt)</command>
- <parms>'-h %s -p %s -D "%s" -w %s -s base -b "%s" "objectclass=*" ds-task-state' % (dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd,taskDN)</parms>
- <workdir>'%s' % (OPENDS_BINPATH)</workdir>
- <envs>
- ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
- </envs>
- <stderr mode="'stdout'"/>
- <returnstdout/>
- </process>
-
- <script>
- searchRC=RC
- searchResult=STAXResult
- </script>
-
- <script>
- result = STAXResult[0][1]
- </script>
-
- <if expr='re.search(searchre, result) != None'>
- <sequence>
- <script>loopRC=0</script>
- </sequence>
- <else>
- <message log="1" level="'Warning'">
- 'No match on ds-task-state.'
- </message>
- </else>
- </if>
-
- <call function="'checkRC'">
- { 'returncode' : searchRC ,
- 'result' : searchResult }
- </call>
-
- <call function="'Sleep'">
- { 'sleepForMilliSeconds' : '2000' }
- </call>
- </sequence>
- </loop>
- <return>loopRC</return>
+ <call function="'CheckLdapTask'">
+ { 'location' : mylocation,
+ 'dsTaskDn' : taskDN,
+ 'dsHost' : dsInstanceHost,
+ 'dsPort' : dsInstancePort,
+ 'dsBindDn' : dsInstanceDn,
+ 'dsBindPswd' : dsInstancePswd }
+ </call>
+
</sequence>
</function>
<!-- Backup Function -->
<function name="backup">
<function-prolog>
- This function performs an on line backup
+ This function performs an off line backup
</function-prolog>
<function-map-args>
- <function-required-arg name="backupDir">
- The directory where the backup files will be placed
- </function-required-arg>
- <function-optional-arg name="backEnd" default="'%s' % DIRECTORY_INSTANCE_BE">
- The name of the database backend
- </function-optional-arg>
- <function-optional-arg name="extraParams" default="' '">
- Optional extra parameters for specific test cases
- </function-optional-arg>
+ <function-arg-def name="location" type="optional" default="'%s' % 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="pathname"/>
+ </function-arg-def>
+ <function-arg-def name="backEnd" type="optional" default="'%s' % DIRECTORY_INSTANCE_BE">
+ <function-arg-description>
+ Optional the name of the database backend
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="backupDir" type="required">
+ <function-arg-description>
+ The directory where the backup files will be placed
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="extraParams" type="optional" default="''">
+ <function-arg-description>
+ Optional extra parameters for specific test cases
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
</function-map-args>
+
<sequence>
+
+ <!-- Local variables -->
+ <script>
+ mylocation=location
+ </script>
<message>
'backup%s -n %s -d %s %s' % (fileExt,backEnd,backupDir,extraParams)
</message>
<process name="'Offline Backup'">
- <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
- <command>'%s/backup%s' % (OPENDS_BINPATH,fileExt)</command>
+ <location>'%s' % mylocation </location>
+ <command>'%s/bin/backup%s' % (dsPath,fileExt)</command>
<parms>'-d %s -n %s %s' % (backupDir,backEnd,extraParams)</parms>
- <workdir>'%s' % (OPENDS_BINPATH)</workdir>
+ <workdir>'%s/bin' % dsPath</workdir>
<envs>
- ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
+ ['PATH=/bin:/usr/bin:%s/bin' % dsPath, 'JAVA_HOME=%s' % JAVA_HOME]
</envs>
<stderr mode="'stdout'"/>
<returnstdout/>
@@ -1336,51 +1624,109 @@
This function performs an on line backup task
</function-prolog>
<function-map-args>
- <function-required-arg name="dsInstanceHost">
- Directory Server host name
- </function-required-arg>
- <function-required-arg name="dsInstancePort">
- Directory Server port number
- </function-required-arg>
- <function-required-arg name="dsInstanceDn">
- Directory Server Manager DN
- </function-required-arg>
- <function-required-arg name="dsInstancePswd">
- Directory Server Manager Password
- </function-required-arg>
- <function-required-arg name="taskID">
- The identifier for the task
- </function-required-arg>
- <function-required-arg name="backupDir">
- Path to the target directory for the backup file(s)
- </function-required-arg>
- <function-optional-arg name="backEnd" default="'%s' % DIRECTORY_INSTANCE_BE">
- Optional the name of the database backend
- </function-optional-arg>
- <function-optional-arg name="backupAll" default="'FALSE'">
- Optional back up all backends in the server
- </function-optional-arg>
- <function-optional-arg name="backupIncremental" default="' '">
- Optional perform an incremental backup rather than a full backup
- </function-optional-arg>
- <function-optional-arg name="backupIncrementalId" default="' '">
- Optional use the provided identifier for the backup
- </function-optional-arg>
- <function-optional-arg name="Compress" default="'FALSE'">
- Optional backup contents compressed
- </function-optional-arg>
- <function-optional-arg name="Encrypt" default="'FALSE'">
- Optional backup contents encrypted
- </function-optional-arg>
- <function-optional-arg name="signHash" default="'FALSE'">
- Optional generate a signed hash of the backup data
- </function-optional-arg>
- <function-optional-arg name="hash" default="'FALSE'">
- Optional generate a hash of the backup data
- </function-optional-arg>
+ <function-arg-def name="location" type="optional" default="'%s' % 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="pathname"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstanceHost" type="optional">
+ <function-arg-description>
+ Directory server host name
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePort" type="optional">
+ <function-arg-description>
+ Directory server port number
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstanceDn" type="optional">
+ <function-arg-description>
+ Bind DN
+ </function-arg-description>
+ <function-arg-property name="type" value="dn"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePswd" type="optional">
+ <function-arg-description>
+ Bind password
+ </function-arg-description>
+ </function-arg-def>
+ <function-arg-def name="taskID" type="optional">
+ <function-arg-description>
+ The identifier for the task
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="backupDir" type="required">
+ <function-arg-description>
+ Path to the target directory for the backup file(s)
+ </function-arg-description>
+ <function-arg-property name="type" value="filepath"/>
+ </function-arg-def>
+ <function-arg-def name="backEnd" type="optional" default="'%s' % DIRECTORY_INSTANCE_BE">
+ <function-arg-description>
+ Optional the name of the database backend
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="backupAll" type="optional" default="'FALSE'">
+ <function-arg-description>
+ Optional back up all backends in the server
+ </function-arg-description>
+ <function-arg-property name="type" value="boolean"/>
+ </function-arg-def>
+ <function-arg-def name="backupIncremental" type="optional">
+ <function-arg-description>
+ Optional perform an incremental backup rather than a full backup
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="backupIncrementalId" type="optional">
+ <function-arg-description>
+ Optional use the provided identifier for the backup
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="Compress" type="optional" default="'FALSE'">
+ <function-arg-description>
+ Optional backup contents compressed
+ </function-arg-description>
+ <function-arg-property name="type" value="boolean"/>
+ </function-arg-def>
+ <function-arg-def name="Encrypt" type="optional" default="'FALSE'">
+ <function-arg-description>
+ Optional backup contents encrypted
+ </function-arg-description>
+ <function-arg-property name="type" value="boolean"/>
+ </function-arg-def>
+ <function-arg-def name="signHash" type="optional" default="'FALSE'">
+ <function-arg-description>
+ Optional generate a signed hash of the backup data
+ </function-arg-description>
+ <function-arg-property name="type" value="boolean"/>
+ </function-arg-def>
+ <function-arg-def name="hash" type="optional" default="'FALSE'">
+ <function-arg-description>
+ Optional generate a hash of the backup data
+ </function-arg-description>
+ <function-arg-property name="type" value="boolean"/>
+ </function-arg-def>
</function-map-args>
+
<sequence>
- <script>
+
+ <script>
+ mylocation=location
+ taskLdif='%s/../functional-tests/shared/data/backup-task.ldif' % dsPath
+ tmpTaskLdif='%s/backup-task.ldif' % TMP_DATA_DIR
taskDN='ds-task-id=%s,cn=Scheduled Tasks,cn=Tasks' % taskID
</script>
@@ -1393,9 +1739,7 @@
ldifLines.append('objectclass: ds-task-backup')
ldifLines.append('ds-task-class-name: org.opends.server.tasks.BackupTask')
ldifLines.append('ds-backup-id: %s' % taskID)
- </script>
-
- <script>
+
ldifLines.append('ds-task-backup-backend-id: %s' % backEnd )
ldifLines.append('ds-backup-directory-path: %s' % backupDir )
ldifLines.append('ds-task-backup-all: %s' % backupAll )
@@ -1403,18 +1747,17 @@
ldifLines.append('ds-task-backup-encrypt: %s' % Encrypt )
ldifLines.append('ds-task-backup-sign-hash: %s' % signHash )
ldifLines.append('ds-task-backup-hash: %s' % hash )
- </script>
-
- <if expr="backupIncremental != ' '">
- <script>
+
+ if backupIncremental:
ldifLines.append('ds-task-backup-incremental: %s' % backupIncremental )
- ldifLines.append('ds-task-backup-incremental-base-id: %s' % backupIncrementalId )
- </script>
- </if>
+
+ if backupIncrementalId:
+ ldifLines.append('ds-task-backup-incremental-base-id: %s' % backupIncrementalId )
+ </script>
<!-- Write out the backup-task ldif -->
<script>
- outfile = open('%s/backup-task.ldif' % TMP_DATA_DIR,"w")
+ outfile = open(tmpTaskLdif,"w")
for line in ldifLines:
outfile.write("%s\n" % line)
@@ -1426,95 +1769,34 @@
<message>'Copy backup task ldif file.'</message>
<call function="'copyFile'">
{ 'location' : STAXServiceMachine,
- 'srcfile' : '%s/backup-task.ldif' % TMP_DATA_DIR,
- 'destfile' : '%s/backup-task.ldif' % STAGED_DATA_DIR,
- 'remotehost' : STAF_REMOTE_HOSTNAME }
+ 'srcfile' : tmpTaskLdif,
+ 'destfile' : taskLdif,
+ 'remotehost' : mylocation }
</call>
-
- <!-- On line Backup Task with ldapmodify -->
- <message>
- 'ldapmodify%s -a -h %s -p %s -D "%s" -w %s' % (fileExt,dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd)
- </message>
- <process name="'On line Backup Task'">
- <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
- <command>'%s/ldapmodify%s' % (OPENDS_BINPATH,fileExt)</command>
- <parms>'-a -h %s -p %s -D "%s" -w %s' % (dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd)</parms>
- <workdir>'%s' % (OPENDS_BINPATH)</workdir>
- <envs>
- ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
- </envs>
- <stdin>'%s/backup-task.ldif' % STAGED_DATA_DIR</stdin>
- <stderr mode="'stdout'"/>
- <returnstdout/>
- </process>
- <script>
- backupTaskRC=RC
- backupTaskResult=STAXResult
- </script>
-
- <call function="'checkRC'">
- { 'returncode' : backupTaskRC ,
- 'result' : backupTaskResult }
+ <!-- Start the task using ldap task interface -->
+ <call function="'StartLdapTask'">
+ { 'location' : mylocation,
+ 'taskLabel' : 'Online Backup Task',
+ 'dsHost' : dsInstanceHost,
+ 'dsPort' : dsInstancePort,
+ 'dsBindDn' : dsInstanceDn,
+ 'dsBindPswd' : dsInstancePswd,
+ 'dsTaskLdif' : taskLdif }
</call>
-
- <!-- Check that the task is completed -->
- <script>
- loopRC=1
- </script>
-
- <script>
- searchre = re.compile('ds-task-state: COMPLETED_SUCCESSFULLY')
- </script>
-
- <!-- Wait for the task to be COMPLETED_SUCCESSFULLY -->
- <loop from="1" to="5" while="loopRC != 0">
- <sequence>
- <message>
- 'ldapsearch%s -h %s -p %s -D "%s" -w %s -s base -b "%s" "objectclass=*" ds-task-state' % (fileExt,dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd,taskDN)
- </message>
- <process name="'Search On line Backup Task'">
- <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
- <command>'%s/ldapsearch%s' % (OPENDS_BINPATH,fileExt)</command>
- <parms>'-h %s -p %s -D "%s" -w %s -s base -b "%s" "objectclass=*" ds-task-state' % (dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd,taskDN)</parms>
- <workdir>'%s' % (OPENDS_BINPATH)</workdir>
- <envs>
- ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
- </envs>
- <stderr mode="'stdout'"/>
- <returnstdout/>
- </process>
-
- <script>
- searchRC=RC
- searchResult=STAXResult
- </script>
-
- <script>
- result = STAXResult[0][1]
- </script>
-
- <if expr='re.search(searchre, result) != None'>
- <sequence>
- <script>loopRC=0</script>
- </sequence>
- <else>
- <message log="1" level="'Warning'">
- 'No match on ds-task-state.'
- </message>
- </else>
- </if>
- <call function="'checkRC'">
- { 'returncode' : searchRC ,
- 'result' : searchResult }
- </call>
- <call function="'Sleep'">
- { 'sleepForMilliSeconds' : '2000' }
- </call>
- </sequence>
- </loop>
- <return>loopRC</return>
+
+ <!-- Check that the ldap task is completed -->
+ <call function="'CheckLdapTask'">
+ { 'location' : mylocation,
+ 'dsTaskDn' : taskDN,
+ 'dsHost' : dsInstanceHost,
+ 'dsPort' : dsInstancePort,
+ 'dsBindDn' : dsInstanceDn,
+ 'dsBindPswd' : dsInstancePswd }
+ </call>
+
</sequence>
+
</function>
<!-- Restore Function -->
@@ -1523,38 +1805,48 @@
This function performs an off line restore
</function-prolog>
<function-map-args>
- <function-required-arg name="backupDir">
- Path to the directory containing the backup file(s)
- </function-required-arg>
- <function-optional-arg name="extraParams" default="' '">
- Optional extra parameters for specific test cases
- </function-optional-arg>
+ <function-arg-def name="location" type="optional" default="'%s' % 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="pathname"/>
+ </function-arg-def>
+ <function-arg-def name="backupDir" type="required">
+ <function-arg-description>
+ The directory where the backup files will be placed
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="extraParams" type="optional" default="''">
+ <function-arg-description>
+ Optional extra parameters for specific test cases
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
</function-map-args>
<sequence>
- <message>
- 'Stopping OpenDS'
- </message>
- <call function="'StopDsWithScript'">
- { 'location' : STAF_REMOTE_HOSTNAME,
- 'dsHost' : DIRECTORY_INSTANCE_HOST,
- 'dsPort' : DIRECTORY_INSTANCE_PORT,
- 'dsBindDN' : DIRECTORY_INSTANCE_DN,
- 'dsBindPwd' : DIRECTORY_INSTANCE_PSWD }
- </call>
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
+
+ <!-- Local variables -->
+ <script>
+ mylocation=location
+ </script>
+
<message>
'restore%s -d %s %s' % (fileExt,backupDir,extraParams)
</message>
<process name="'Offline restore'">
- <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
- <command>'%s/restore%s' % (OPENDS_BINPATH,fileExt)</command>
+ <location>'%s' % mylocation </location>
+ <command>'%s/bin/restore%s' % (dsPath,fileExt)</command>
<parms>'-d %s %s' % (backupDir,extraParams)</parms>
- <workdir>'%s' % (OPENDS_BINPATH)</workdir>
+ <workdir>'%s/bin' % dsPath</workdir>
<envs>
- ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
+ ['PATH=/bin:/usr/bin:%s/bin' % dsPath, 'JAVA_HOME=%s' % JAVA_HOME]
</envs>
<stderr mode="'stdout'"/>
<returnstdout/>
@@ -1567,16 +1859,7 @@
{ 'returncode' : restoreRC ,
'result' : restoreResult }
</call>
- <message>
- 'Starting DS'
- </message>
- <call function="'StartDsWithScript'">
- { 'location' : STAF_REMOTE_HOSTNAME }
- </call>
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
+
<return>restoreRC</return>
</sequence>
</function>
@@ -1587,35 +1870,76 @@
This function performs an on line restore task of a backup file
</function-prolog>
<function-map-args>
- <function-required-arg name="dsInstanceHost">
- Directory Server host name
- </function-required-arg>
- <function-required-arg name="dsInstancePort">
- Directory Server port number
- </function-required-arg>
- <function-required-arg name="dsInstanceDn">
- Directory Server Manager DN
- </function-required-arg>
- <function-required-arg name="dsInstancePswd">
- Directory Server Manager Password
- </function-required-arg>
- <function-required-arg name="taskID">
- The identifier for the task
- </function-required-arg>
- <function-required-arg name="backupDir">
- The name of the backup directory
- </function-required-arg>
- <function-optional-arg name="backupId" default="' '">
- Optional the name of the backupId
- </function-optional-arg>
- <function-optional-arg name="verify" default="'FALSE'">
- Optional verify the contents of the backup but do not restore it
- </function-optional-arg>
+ <function-arg-def name="location" type="optional" default="'%s' % 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="pathname"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstanceHost" type="optional">
+ <function-arg-description>
+ Directory server host name
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePort" type="optional">
+ <function-arg-description>
+ Directory server port number
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstanceDn" type="optional">
+ <function-arg-description>
+ Bind DN
+ </function-arg-description>
+ <function-arg-property name="type" value="dn"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePswd" type="optional">
+ <function-arg-description>
+ Bind password
+ </function-arg-description>
+ </function-arg-def>
+ <function-arg-def name="taskID" type="optional">
+ <function-arg-description>
+ The identifier for the task
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="backupDir" type="required">
+ <function-arg-description>
+ The name of the backup directory
+ </function-arg-description>
+ <function-arg-property name="type" value="pathname"/>
+ </function-arg-def>
+ <function-arg-def name="backupId" type="optional">
+ <function-arg-description>
+ Optional the name of the backupId
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="verify" type="optional" default="'FALSE'">
+ <function-arg-description>
+ Optional verify the contents of the backup but do not restore it
+ </function-arg-description>
+ <function-arg-property name="type" value="boolean"/>
+ </function-arg-def>
</function-map-args>
+
<sequence>
- <script>
+
+ <script>
+ mylocation=location
+ taskLdif='%s/../functional-tests/shared/data/restore-task.ldif' % dsPath
+ tmpTaskLdif='%s/restore-task.ldif' % TMP_DATA_DIR
taskDN='ds-task-id=%s,cn=Scheduled Tasks,cn=Tasks' % taskID
- </script>
+ </script>
+
<!-- Build the restore task configuration object -->
<script>
ldifLines=[]
@@ -1625,19 +1949,17 @@
ldifLines.append('objectclass: ds-task-restore')
ldifLines.append('ds-task-class-name: org.opends.server.tasks.RestoreTask')
ldifLines.append('ds-task-id: %s' % taskID)
- </script>
- <script>
+
ldifLines.append('ds-backup-directory-path: %s' % backupDir )
ldifLines.append('ds-task-restore-verify-only: %s' % verify )
+
+ if backupId:
+ ldifLines.append('ds-backup-id: %s' % backupId )
</script>
- <if expr="backupId != ' '">
- <script>
- ldifLines.append('ds-backup-id: %s' % backupId )
- </script>
- </if>
+
<!-- Write out the restore-task ldif -->
<script>
- outfile = open('%s/restore-task.ldif' % TMP_DATA_DIR,"w")
+ outfile = open(tmpTaskLdif,"w")
for line in ldifLines:
outfile.write("%s\n" % line)
@@ -1649,125 +1971,99 @@
<message>'Copy restore task ldif file.'</message>
<call function="'copyFile'">
{ 'location' : STAXServiceMachine,
- 'srcfile' : '%s/restore-task.ldif' % TMP_DATA_DIR,
- 'destfile' : '%s/restore-task.ldif' % STAGED_DATA_DIR,
- 'remotehost' : STAF_REMOTE_HOSTNAME }
+ 'srcfile' : tmpTaskLdif,
+ 'destfile' : taskLdif,
+ 'remotehost' : mylocation }
</call>
- <!-- On line Restore Task with ldapmodify -->
- <message>
- 'ldapmodify%s -a -h %s -p %s -D "%s" -w %s' % (fileExt,dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd)
- </message>
- <process name="'On line Restore Task'">
- <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
- <command>'%s/ldapmodify%s' % (OPENDS_BINPATH,fileExt)</command>
- <parms>'-a -h %s -p %s -D "%s" -w %s' % (dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd)</parms>
- <workdir>'%s' % (OPENDS_BINPATH)</workdir>
- <envs>
- ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
- </envs>
- <stdin>'%s/restore-task.ldif' % STAGED_DATA_DIR</stdin>
- <stderr mode="'stdout'"/>
- <returnstdout/>
- </process>
-
- <script>
- restoreTaskRC=RC
- restoreTaskResult=STAXResult
- </script>
-
- <call function="'checkRC'">
- { 'returncode' : restoreTaskRC ,
- 'result' : restoreTaskResult }
+ <!-- Start the task using ldap task interface -->
+ <call function="'StartLdapTask'">
+ { 'location' : mylocation,
+ 'taskLabel' : 'Online Restore Task',
+ 'dsHost' : dsInstanceHost,
+ 'dsPort' : dsInstancePort,
+ 'dsBindDn' : dsInstanceDn,
+ 'dsBindPswd' : dsInstancePswd,
+ 'dsTaskLdif' : taskLdif }
</call>
-
- <!-- Check that the task is completed -->
- <script>
- loopRC=1
- </script>
-
- <script>
- searchre = re.compile('ds-task-state: COMPLETED_SUCCESSFULLY')
- </script>
-
- <!-- Wait for the task to be COMPLETED_SUCCESSFULLY -->
- <loop from="1" to="5" while="loopRC != 0">
- <sequence>
- <message>
- 'ldapsearch%s -h %s -p %s -D "%s" -w %s -s base -b "%s" "objectclass=*" ds-task-state' % (fileExt,dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd,taskDN)
- </message>
- <process name="'Search On line Restore Task'">
- <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
- <command>'%s/ldapsearch%s' % (OPENDS_BINPATH,fileExt)</command>
- <parms>'-h %s -p %s -D "%s" -w %s -s base -b "%s" "objectclass=*" ds-task-state' % (dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd,taskDN)</parms>
- <workdir>'%s' % (OPENDS_BINPATH)</workdir>
- <envs>
- ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
- </envs>
- <stderr mode="'stdout'"/>
- <returnstdout/>
- </process>
- <script>
- searchRC=RC
- searchResult=STAXResult
- </script>
- <script>
- result = STAXResult[0][1]
- </script>
- <if expr='re.search(searchre, result) != None'>
- <sequence>
- <script>loopRC=0</script>
- </sequence>
- <else>
- <message log="1" level="'Warning'">
- 'No match on ds-task-state.'
- </message>
- </else>
- </if>
- <call function="'checkRC'">
- { 'returncode' : searchRC ,
- 'result' : searchResult }
- </call>
- <call function="'Sleep'">
- { 'sleepForMilliSeconds' : '2000' }
- </call>
- </sequence>
- </loop>
- <return>loopRC</return>
+
+ <!-- Check that the ldap task is completed -->
+ <call function="'CheckLdapTask'">
+ { 'location' : mylocation,
+ 'dsTaskDn' : taskDN,
+ 'dsHost' : dsInstanceHost,
+ 'dsPort' : dsInstancePort,
+ 'dsBindDn' : dsInstanceDn,
+ 'dsBindPswd' : dsInstancePswd }
+ </call>
+
</sequence>
+
</function>
- <!-- Add Schema Task Function -->
- <function name="addSchemaTask">
+ <!-- Add Schema Task Function -->
+ <function name="addSchemaTask">
<function-prolog>
This function performs a dynamic schema add task
</function-prolog>
<function-map-args>
- <function-required-arg name="dsInstanceHost">
- Directory Server host name
- </function-required-arg>
- <function-required-arg name="dsInstancePort">
- Directory Server port number
- </function-required-arg>
- <function-required-arg name="dsInstanceDn">
- Directory Server Manager DN
- </function-required-arg>
- <function-required-arg name="dsInstancePswd">
- Directory Server Manager Password
- </function-required-arg>
- <function-required-arg name="taskID">
- The identifier for the task
- </function-required-arg>
- <function-required-arg name="ldifFile">
- The name of the ldif file that contains the schema updates
- </function-required-arg>
+ <function-arg-def name="location" type="optional" default="'%s' % 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="pathname"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstanceHost" type="optional">
+ <function-arg-description>
+ Directory server host name
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePort" type="optional">
+ <function-arg-description>
+ Directory server port number
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstanceDn" type="optional">
+ <function-arg-description>
+ Bind DN
+ </function-arg-description>
+ <function-arg-property name="type" value="dn"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePswd" type="optional">
+ <function-arg-description>
+ Bind password
+ </function-arg-description>
+ </function-arg-def>
+ <function-arg-def name="taskID" type="optional">
+ <function-arg-description>
+ The identifier for the task
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="ldifFile" type="required">
+ <function-arg-description>
+ The name of the ldif file that contains the schema updates
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
</function-map-args>
<sequence>
- <script>
+ <script>
+ mylocation=location
+ taskLdif='%s/../functional-tests/shared/data/schema-task.ldif' % dsPath
+ tmpTaskLdif='%s/schema-task.ldif' % TMP_DATA_DIR
taskDN='ds-task-id=%s,cn=Scheduled Tasks,cn=Tasks' % taskID
</script>
@@ -1780,134 +2076,329 @@
ldifLines.append('objectclass: ds-task-add-schema-file')
ldifLines.append('ds-task-class-name: org.opends.server.tasks.AddSchemaFileTask')
ldifLines.append('ds-task-id: %s' % taskID)
- </script>
-
- <script>
+
ldifLines.append('ds-task-schema-file-name: %s' % ldifFile )
</script>
<!-- Write out the schema-task ldif -->
<script>
- outfile = open('%s/schema-task.ldif' % TMP_DATA_DIR,"w")
+ outfile = open(tmpTaskLdif,"w")
for line in ldifLines:
outfile.write("%s\n" % line)
outfile.close()
</script>
-
<!-- Copy the schema-task ldif to remote host -->
<message>'Copy schema task ldif file.'</message>
<call function="'copyFile'">
{ 'location' : STAXServiceMachine,
- 'srcfile' : '%s/schema-task.ldif' % TMP_DATA_DIR,
- 'destfile' : '%s/schema-task.ldif' % STAGED_DATA_DIR,
- 'remotehost' : STAF_REMOTE_HOSTNAME }
+ 'srcfile' : tmpTaskLdif,
+ 'destfile' : taskLdif,
+ 'remotehost' : mylocation }
</call>
<!-- Copy the schema update ldif to remote host's config/schema directory -->
<message>'Copy schema update ldif file.'</message>
<call function="'copyFile'">
- { 'location' : STAF_REMOTE_HOSTNAME,
+ { 'location' : mylocation,
'srcfile' : '%s/schema/ldifs/%s' % (STAGED_DATA_DIR,ldifFile),
'destfile' : '%s/%s/config/schema/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME,ldifFile),
- 'remotehost' : STAF_REMOTE_HOSTNAME }
+ 'remotehost' : mylocation }
</call>
- <!-- On line Schema Task with ldapmodify -->
- <message>
- 'ldapmodify%s -a -h %s -p %s -D "%s" -w %s' % (fileExt,dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd)
- </message>
- <process name="'On line Schema Task'">
- <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
- <command>'%s/ldapmodify%s' % (OPENDS_BINPATH,fileExt)</command>
- <parms>'-a -h %s -p %s -D "%s" -w %s' % (dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd)</parms>
- <workdir>'%s' % (OPENDS_BINPATH)</workdir>
- <envs>
- ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
- </envs>
- <stdin>'%s/schema-task.ldif' % STAGED_DATA_DIR</stdin>
- <stderr mode="'stdout'"/>
- <returnstdout/>
- </process>
+ <!-- Start the task using ldap task interface -->
+ <call function="'StartLdapTask'">
+ { 'location' : mylocation,
+ 'taskLabel' : 'Online Schema Task',
+ 'dsHost' : dsInstanceHost,
+ 'dsPort' : dsInstancePort,
+ 'dsBindDn' : dsInstanceDn,
+ 'dsBindPswd' : dsInstancePswd,
+ 'dsTaskLdif' : taskLdif }
+ </call>
+
+ <!-- Check that the ldap task is completed -->
+ <call function="'CheckLdapTask'">
+ { 'location' : mylocation,
+ 'dsTaskDn' : taskDN,
+ 'dsHost' : dsInstanceHost,
+ 'dsPort' : dsInstancePort,
+ 'dsBindDn' : dsInstanceDn,
+ 'dsBindPswd' : dsInstancePswd }
+ </call>
- <script>
- schemaTaskRC=RC
- schemaTaskResult=STAXResult
- </script>
+ </sequence>
+ </function>
- <call function="'checkRC'">
- { 'returncode' : schemaTaskRC ,
- 'result' : schemaTaskResult }
- </call>
-
- <!-- Check that the task is completed -->
- <script>
- loopRC=1
- </script>
+ <function name="StartLdapTask">
+ <function-prolog>
+ This function starts a task using the ldap task interface
+ </function-prolog>
+ <function-map-args>
+ <function-arg-def name="location" type="optional" default="'%s' % 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="taskLabel" type="required">
+ <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="pathname"/>
+ </function-arg-def>
+ <function-arg-def name="dsHost" type="optional">
+ <function-arg-description>
+ Directory server host name
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="dsPort" type="optional">
+ <function-arg-description>
+ Directory server port number
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="dsBindDn" type="optional">
+ <function-arg-description>
+ Bind DN
+ </function-arg-description>
+ <function-arg-property name="type" value="dn"/>
+ </function-arg-def>
+ <function-arg-def name="dsBindPswd" type="optional">
+ <function-arg-description>
+ Bind password
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="dsTaskLdif" type="required">
+ <function-arg-description>
+ Ldif file for task
+ </function-arg-description>
+ <function-arg-property name="type" value="filename"/>
+ </function-arg-def>
+ </function-map-args>
- <script>
- searchre = re.compile('ds-task-state: COMPLETED_SUCCESSFULLY')
- </script>
-
- <!-- Wait for the task to be COMPLETED_SUCCESSFULLY -->
- <loop from="1" to="5" while="loopRC != 0">
-
- <sequence>
-
- <message>
- 'ldapsearch%s -h %s -p %s -D "%s" -w %s -s base -b "%s" "objectclass=*" ds-task-state' % (fileExt,dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd,taskDN)
- </message>
- <process name="'Search On line Restore Task'">
- <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
- <command>'%s/ldapsearch%s' % (OPENDS_BINPATH,fileExt)</command>
- <parms>'-h %s -p %s -D "%s" -w %s -s base -b "%s" "objectclass=*" ds-task-state' % (dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd,taskDN)</parms>
- <workdir>'%s' % (OPENDS_BINPATH)</workdir>
- <envs>
- ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
- </envs>
- <stderr mode="'stdout'"/>
- <returnstdout/>
- </process>
-
- <script>
- searchRC=RC
- searchResult=STAXResult
- </script>
+ <sequence>
- <script>
- result = STAXResult[0][1]
- </script>
+ <!-- Local variables -->
+ <script>
+ mylocation=location
+ </script>
+
+ <!-- Build the Modify Command -->
+ <script>
+ STAFCmdParamsList=[]
+ STAFCmdParams=''
+
+ if dsPath:
+ STAFCmd='%s/bin/ldapmodify%s' % (dsPath,fileExt)
+
+ STAFCmdParamsList.append('-a')
+
+ if dsHost:
+ STAFCmdParamsList.append('-h %s' % dsHost)
+
+ if dsPort:
+ STAFCmdParamsList.append('-p %s' % dsPort)
+
+ if dsBindDn:
+ STAFCmdParamsList.append('-D "%s"' % dsBindDn)
+
+ if dsBindPswd:
+ STAFCmdParamsList.append('-w "%s"' % dsBindPswd)
+
+ STAFCmdParams=' '.join(STAFCmdParamsList)
+ </script>
+
+ <message>
+ '%s %s' % (STAFCmd, STAFCmdParams)
+ </message>
+
+ <!-- Perform Task with ldapmodify -->
+ <process name="'%s' % taskLabel">
+ <location>'%s' % mylocation</location>
+ <command>'%s' % STAFCmd</command>
+ <parms>'%s' % STAFCmdParams</parms>
+ <workdir>'%s/bin' % dsPath</workdir>
+ <envs>
+ ['PATH=/bin:/usr/bin:%s/bin' % dsPath, 'JAVA_HOME=%s' % JAVA_HOME]
+ </envs>
+ <stdin>'%s' % dsTaskLdif</stdin>
+ <stderr mode="'stdout'"/>
+ <returnstdout/>
+ </process>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ </sequence>
- <if expr='re.search(searchre, result) != None'>
- <sequence>
- <script>loopRC=0</script>
- </sequence>
- <else>
- <message log="1" level="'Warning'">
- 'No match on ds-task-state.'
+ </function>
+
+ <function name="CheckLdapTask">
+ <function-prolog>
+ This function checks a task using the ldap task interface
+ </function-prolog>
+ <function-map-args>
+ <function-arg-def name="location" type="optional" default="'%s' % 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="dsTaskDn" type="required">
+ <function-arg-description>
+ Dn of the task to be performed
+ </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="pathname"/>
+ </function-arg-def>
+ <function-arg-def name="dsHost" type="optional">
+ <function-arg-description>
+ Directory server host name
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="dsPort" type="optional">
+ <function-arg-description>
+ Directory server port number
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="dsBindDn" type="optional">
+ <function-arg-description>
+ Bind DN
+ </function-arg-description>
+ <function-arg-property name="type" value="dn"/>
+ </function-arg-def>
+ <function-arg-def name="dsBindPswd" type="optional">
+ <function-arg-description>
+ Bind password
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ </function-map-args>
+
+ <sequence>
+
+ <!-- Local variables -->
+ <script>
+ mylocation=location
+ </script>
+
+ <script>
+ STAFCmdParamsList=[]
+ STAFCmdParams=''
+
+ if dsPath:
+ STAFCmd='%s/bin/ldapsearch%s' % (dsPath,fileExt)
+
+ if dsHost:
+ STAFCmdParamsList.append('-h %s' % dsHost)
+
+ if dsPort:
+ STAFCmdParamsList.append('-p %s' % dsPort)
+
+ if dsBindDn:
+ STAFCmdParamsList.append('-D "%s"' % dsBindDn)
+
+ if dsBindPswd:
+ STAFCmdParamsList.append('-w "%s"' % dsBindPswd)
+
+ if dsTaskDn:
+ STAFCmdParamsList.append('-b "%s"' % dsTaskDn)
+
+ dsScope='base'
+ STAFCmdParamsList.append('-s %s' % dsScope)
+
+ dsFilter='"objectclass=*"'
+ STAFCmdParamsList.append('%s' % dsFilter)
+
+ dsAttribute='ds-task-state'
+ STAFCmdParamsList.append('%s' % dsAttribute)
+
+ STAFCmdParams=' '.join(STAFCmdParamsList)
+ </script>
+
+ <script>
+ searchre = re.compile('ds-task-state: COMPLETED_SUCCESSFULLY')
+ </script>
+
+ <!-- Wait for the task to be COMPLETED_SUCCESSFULLY -->
+ <script>RC=1</script>
+ <loop from="1" to="5" while="RC != 0">
+ <sequence>
+
+ <message>
+ '%s %s' % (STAFCmd, STAFCmdParams)
+ </message>
+
+ <!-- Search for task status -->
+ <process name="'Search On line Import Task'">
+ <location>'%s' % mylocation</location>
+ <command>'%s' % STAFCmd</command>
+ <parms>'%s' % STAFCmdParams</parms>
+ <workdir>'%s/bin' % dsPath</workdir>
+ <envs>
+ ['PATH=/bin:/usr/bin:%s/bin' % dsPath, 'JAVA_HOME=%s' % JAVA_HOME]
+ </envs>
+ <stderr mode="'stdout'"/>
+ <returnstdout/>
+ </process>
+
+ <script>
+ searchRC=RC
+ searchResult=STAXResult
+ </script>
+
+ <script>
+ result = STAXResult[0][1]
+ </script>
+
+ <if expr='re.search(searchre, result) != None'>
+ <sequence>
+ <script>RC=0</script>
+ <message>
+ '%s' % searchResult
</message>
- </else>
- </if>
-
- <call function="'checkRC'">
- { 'returncode' : searchRC ,
- 'result' : searchResult }
- </call>
+ </sequence>
+ <else>
+ <message level="'Warning'">
+ '%s' % searchResult
+ </message>
+ </else>
+ </if>
- <call function="'Sleep'">
- { 'sleepForMilliSeconds' : '2000' }
- </call>
-
- </sequence>
-
- </loop>
-
- <return>loopRC</return>
-
- </sequence>
- </function>
+ <call function="'checkRC'">
+ { 'returncode' : searchRC ,
+ 'result' : searchResult }
+ </call>
+
+ <call function="'Sleep'">
+ { 'sleepForMilliSeconds' : '2000' }
+ </call>
+ </sequence>
+ </loop>
+
+ </sequence>
+ </function>
+
</stax>
diff --git a/opendj-sdk/opends/tests/functional-tests/shared/functions/ldap.xml b/opendj-sdk/opends/tests/functional-tests/shared/functions/ldap.xml
index 8ff2b32..77b28ca 100755
--- a/opendj-sdk/opends/tests/functional-tests/shared/functions/ldap.xml
+++ b/opendj-sdk/opends/tests/functional-tests/shared/functions/ldap.xml
@@ -28,48 +28,113 @@
<stax>
<function name="addEntry">
<function-prolog>
- This function adds an entry to the Directory Server
+ This function adds an entry to the Directory Server from an ldif file
</function-prolog>
<function-map-args>
- <function-required-arg name="dsInstanceHost">
- Directory Server Host Name
- </function-required-arg>
- <function-required-arg name="dsInstancePort">
- Directory Server Port Number
- </function-required-arg>
- <function-required-arg name="dsInstanceDn">
- Directory Server Manager DN
- </function-required-arg>
- <function-required-arg name="dsInstancePswd">
- Directory Server Manager Password
- </function-required-arg>
- <function-required-arg name="entryToBeAdded">
- Entry to be added to Directory Server in ldif format
- </function-required-arg>
- <function-optional-arg name="extraParams" default="' '">
- Optional extra parameters for specific test cases
- </function-optional-arg>
+ <function-arg-def name="location" type="optional" default="'%s' % 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">
+ <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="optional">
+ <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="optional">
+ <function-arg-description>
+ Bind DN
+ </function-arg-description>
+ <function-arg-property name="type" value="DN"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePswd" type="optional">
+ <function-arg-description>
+ Bind password
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="entryToBeAdded" type="required">
+ <function-arg-description>
+ Entry to be added to Directory Server in ldif format
+ </function-arg-description>
+ <function-arg-property name="type" value="DN"/>
+ </function-arg-def>
+ <function-arg-def name="extraParams" type="optional">
+ <function-arg-description>
+ Optional extra parameters for specific test cases
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
</function-map-args>
<sequence>
+
+ <!-- Local variables -->
+ <script>
+ mylocation=location
+ </script>
+
+ <!-- Build the Command -->
+ <script>
+ STAFCmdParamsList=[]
+ STAFCmdParams=''
+
+ if dsPath:
+ STAFCmd='%s/bin/ldapmodify%s' % (dsPath,fileExt)
+
+ STAFCmdParamsList.append('-a')
+ </script>
+
+ <!-- Set common ldap arguments -->
+ <call function="'_ldapCommonArgs'"/>
+
+ <script>
+ if extraParams:
+ STAFCmdParamsList.append('%s' % extraParams)
+
+ if entryToBeAdded:
+ STAFCmdParamsList.append('-f "%s"' % entryToBeAdded)
+
+ STAFCmdParams=' '.join(STAFCmdParamsList)
+ </script>
+
<message>
- 'ldapmodify%s -a -h %s -p %s -D "%s" -w %s %s -f "%s"' % (fileExt,dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd,extraParams,entryToBeAdded)
+ '%s %s' % (STAFCmd, STAFCmdParams)
</message>
- <process name="'Add Entry'">
- <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
- <command>'%s/ldapmodify%s' % (OPENDS_BINPATH,fileExt)</command>
- <parms>'-a -h %s -p %s -D "%s" -w %s %s -f "%s"' % (dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd,extraParams,entryToBeAdded)</parms>
- <workdir>'%s' % (OPENDS_BINPATH)</workdir>
+
+ <process name="'Add Entry from ldif file'">
+ <location>'%s' % mylocation</location>
+ <command>'%s' % STAFCmd</command>
+ <parms>'%s' % STAFCmdParams</parms>
+ <workdir>'%s/bin' % dsPath</workdir>
<envs>
- ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
+ ['PATH=/bin:/usr/bin:%s/bin' % dsPath, 'JAVA_HOME=%s' % JAVA_HOME]
</envs>
+ <console use="'same'"/>
<stderr mode="'stdout'"/>
<returnstdout/>
</process>
+
<call function="'checkRC'">
{ 'returncode' : RC ,
'result' : STAXResult }
</call>
+
</sequence>
+
</function>
<function name="modifyEntry">
@@ -77,45 +142,109 @@
This function modifies an entry in the Directory Server
</function-prolog>
<function-map-args>
- <function-required-arg name="dsInstanceHost">
- Directory Server Host Name
- </function-required-arg>
- <function-required-arg name="dsInstancePort">
- Directory Server Port Number
- </function-required-arg>
- <function-required-arg name="dsInstanceDn">
- Directory Server Manager DN
- </function-required-arg>
- <function-required-arg name="dsInstancePswd">
- Directory Server Manager Password
- </function-required-arg>
- <function-required-arg name="entryToBeModified">
- Entry to be modified in the Directory Server in ldif format
- </function-required-arg>
- <function-optional-arg name="extraParams" default="' '">
- Optional extra parameters for specific test cases
- </function-optional-arg>
+ <function-arg-def name="location" type="optional" default="'%s' % 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">
+ <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="optional">
+ <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="optional">
+ <function-arg-description>
+ Bind DN
+ </function-arg-description>
+ <function-arg-property name="type" value="DN"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePswd" type="optional">
+ <function-arg-description>
+ Bind password
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="entryToBeModified" type="required">
+ <function-arg-description>
+ Entry to be modified in the Directory Server in ldif format
+ </function-arg-description>
+ <function-arg-property name="type" value="DN"/>
+ </function-arg-def>
+ <function-arg-def name="extraParams" type="optional">
+ <function-arg-description>
+ Optional extra parameters for specific test cases
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
</function-map-args>
<sequence>
+
+ <!-- Local variables -->
+ <script>
+ mylocation=location
+ </script>
+
+ <!-- Build the Command -->
+ <script>
+ STAFCmdParamsList=[]
+ STAFCmdParams=''
+
+ if dsPath:
+ STAFCmd='%s/bin/ldapmodify%s' % (dsPath,fileExt)
+
+ </script>
+
+ <!-- Set common ldap arguments -->
+ <call function="'_ldapCommonArgs'"/>
+
+ <script>
+ if extraParams:
+ STAFCmdParamsList.append('%s' % extraParams)
+
+ if entryToBeModified:
+ STAFCmdParamsList.append('-f "%s"' % entryToBeModified)
+
+ STAFCmdParams=' '.join(STAFCmdParamsList)
+ </script>
+
<message>
- 'ldapmodify%s -h %s -p %s -D "%s" -w %s %s -f "%s"' % (fileExt,dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd,extraParams,entryToBeModified)
+ '%s %s' % (STAFCmd, STAFCmdParams)
</message>
- <process name="'Modify Entry'">
- <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
- <command>'%s/ldapmodify%s' % (OPENDS_BINPATH,fileExt)</command>
- <parms>'-h %s -p %s -D "%s" -w %s %s -f "%s"' % (dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd,extraParams,entryToBeModified)</parms>
- <workdir>'%s' % (OPENDS_BINPATH)</workdir>
+
+ <process name="'Modify Entry from ldif file'">
+ <location>'%s' % location</location>
+ <command>'%s' % STAFCmd</command>
+ <parms>'%s' % STAFCmdParams</parms>
+ <workdir>'%s/bin' % dsPath</workdir>
<envs>
- ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
+ ['PATH=/bin:/usr/bin:%s/bin' % dsPath, 'JAVA_HOME=%s' % JAVA_HOME]
</envs>
+ <console use="'same'"/>
<stderr mode="'stdout'"/>
<returnstdout/>
</process>
+
<call function="'checkRC'">
{ 'returncode' : RC ,
'result' : STAXResult }
</call>
+
</sequence>
+
</function>
<function name="SearchObject">
@@ -123,48 +252,143 @@
This function searches the Directory Server with optional arguments possible
</function-prolog>
<function-map-args>
- <function-required-arg name="dsInstanceHost">
- Directory Server Host Name
- </function-required-arg>
- <function-required-arg name="dsInstancePort">
- Directory Server Port Number
- </function-required-arg>
- <function-required-arg name="dsInstanceDn">
- Directory Server Manager DN
- </function-required-arg>
- <function-required-arg name="dsInstancePswd">
- Directory Server Manager Password
- </function-required-arg>
- <function-required-arg name="dsBaseDN">
- The baseDN for the search operation
- </function-required-arg>
- <function-required-arg name="dsFilter">
- The filter for the search operation
- </function-required-arg>
- <function-optional-arg name="extraParams" default="' '">
- Optional extra parameters for specific test cases
- </function-optional-arg>
- <function-optional-arg name="attributes" default="' '">
- Attributes to return
- </function-optional-arg>
+ <function-arg-def name="location" type="optional" default="'%s' % 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="pathname"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstanceHost" type="optional">
+ <function-arg-description>
+ Directory Server Host Name
+ </function-arg-description>
+ <function-arg-property name="type" value="hostname"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePort" type="optional">
+ <function-arg-description>
+ Directory Server Port Number
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstanceDn" type="optional">
+ <function-arg-description>
+ Directory Server Manager DN
+ </function-arg-description>
+ <function-arg-property name="type" value="dn"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePswd" type="optional">
+ <function-arg-description>
+ Directory Server Manager Password
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="dsScope" type="optional">
+ <function-arg-description>
+ The scope of the search operation
+ </function-arg-description>
+ <function-arg-property name="type" value="dn"/>
+ </function-arg-def>
+ <function-arg-def name="dsBaseDN" type="optional">
+ <function-arg-description>
+ The baseDN for the search operation
+ </function-arg-description>
+ <function-arg-property name="type" value="dn"/>
+ </function-arg-def>
+ <function-arg-def name="dsFilter" type="optional">
+ <function-arg-description>
+ The filter for the search operation
+ </function-arg-description>
+ <function-arg-property name="type" value="filter"/>
+ </function-arg-def>
+ <function-arg-def name="extraParams" type="optional">
+ <function-arg-description>
+ Optional extra parameters for specific test cases
+ </function-arg-description>
+ <function-arg-property name="type" value="filter"/>
+ </function-arg-def>
+ <function-arg-def name="attributes" type="optional">
+ <function-arg-description>
+ Optional Attributes to return
+ </function-arg-description>
+ <function-arg-property name="type" value="attributes"/>
+ </function-arg-def>
</function-map-args>
<sequence>
+
+ <!-- Local variables -->
+ <script>
+ mylocation=location
+ </script>
+
+ <!-- Build the Command -->
+ <script>
+ STAFCmdParamsList=[]
+ STAFCmdParams=''
+
+ if dsPath:
+ STAFCmd='%s/bin/ldapsearch%s' % (dsPath,fileExt)
+
+ </script>
+
+ <!-- Set common ldap arguments -->
+ <call function="'_ldapCommonArgs'"/>
+
+ <script>
+ if dsScope:
+ STAFCmdParamsList.append('-s %s' % dsScope)
+
+ if extraParams:
+ STAFCmdParamsList.append('%s' % extraParams)
+
+ if dsBaseDN:
+ STAFCmdParamsList.append('-b "%s"' % dsBaseDN)
+
+ if dsFilter:
+ STAFCmdParamsList.append('"%s"' % dsFilter)
+
+ if attributes:
+ STAFCmdParamsList.append('%s' % attributes)
+
+ STAFCmdParams=' '.join(STAFCmdParamsList)
+ </script>
+
<message>
- 'ldapsearch%s -h %s -p %s -D "%s" -w %s %s -b "%s" "%s" "%s"' % (fileExt,dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd,extraParams,dsBaseDN,dsFilter,attributes)
+ '%s %s' % (STAFCmd, STAFCmdParams)
</message>
+
<process name="'Search Base Object'">
- <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
- <command>'%s/ldapsearch%s' % (OPENDS_BINPATH,fileExt)</command>
- <parms>'-h %s -p %s -D "%s" -w %s %s -b "%s" "%s" %s' % (dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd,extraParams,dsBaseDN,dsFilter,attributes)</parms>
- <workdir>'%s' % (OPENDS_BINPATH)</workdir>
+ <location>'%s' % location</location>
+ <command>'%s' % STAFCmd</command>
+ <parms>'%s' % STAFCmdParams</parms>
+ <workdir>'%s/bin' % dsPath</workdir>
<envs>
- ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
+ ['PATH=/bin:/usr/bin:%s/bin' % dsPath, 'JAVA_HOME=%s' % JAVA_HOME]
</envs>
+ <console use="'same'"/>
<stderr mode="'stdout'"/>
<returnstdout/>
</process>
- <return>STAXResult</return>
+
+ <script>
+ SearchRC=RC
+ SearchResult=STAXResult
+ </script>
+
+ <call function="'checkRC'">
+ { 'returncode' : SearchRC ,
+ 'result' : SearchResult }
+ </call>
+
+ <return>SearchResult</return>
+
</sequence>
+
</function>
<function name="SearchObjectNoPwd">
@@ -172,126 +396,248 @@
This function searches the Directory Server with optional arguments possible
</function-prolog>
<function-map-args>
- <function-required-arg name="dsInstanceHost">
- Directory Server Host Name
- </function-required-arg>
- <function-required-arg name="dsInstancePort">
- Directory Server Port Number
- </function-required-arg>
- <function-required-arg name="dsInstanceDn">
- Directory Server Manager DN
- </function-required-arg>
- <function-required-arg name="dsBaseDN">
- The baseDN for the search operation
- </function-required-arg>
- <function-required-arg name="dsFilter">
- The filter for the search operation
- </function-required-arg>
- <function-optional-arg name="extraParams" default="' '">
- Optional extra parameters for specific test cases
- </function-optional-arg>
+ <function-arg-def name="location" type="optional" default="'%s' % 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="pathname"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstanceHost" type="optional">
+ <function-arg-description>
+ Directory Server Host Name
+ </function-arg-description>
+ <function-arg-property name="type" value="hostname"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePort" type="optional">
+ <function-arg-description>
+ Directory Server Port Number
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstanceDn" type="optional">
+ <function-arg-description>
+ Directory Server Manager DN
+ </function-arg-description>
+ <function-arg-property name="type" value="dn"/>
+ </function-arg-def>
+ <function-arg-def name="dsBaseDN" type="optional">
+ <function-arg-description>
+ The baseDN for the search operation
+ </function-arg-description>
+ <function-arg-property name="type" value="dn"/>
+ </function-arg-def>
+ <function-arg-def name="dsFilter" type="optional">
+ <function-arg-description>
+ The filter for the search operation
+ </function-arg-description>
+ <function-arg-property name="type" value="filter"/>
+ </function-arg-def>
+ <function-arg-def name="extraParams" type="optional">
+ <function-arg-description>
+ Optional extra parameters for specific test cases
+ </function-arg-description>
+ <function-arg-property name="type" value="filter"/>
+ </function-arg-def>
</function-map-args>
<sequence>
<message>
'ldapsearch%s -h %s -p %s -D "%s" %s -b "%s" "%s"' % (fileExt,dsInstanceHost,dsInstancePort,dsInstanceDn,extraParams,dsBaseDN,dsFilter)
</message>
- <process name="'Search Base Object'">
- <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
- <command>'%s/ldapsearch%s' % (OPENDS_BINPATH,fileExt)</command>
+ <process name="'Search Base Object No Password'">
+ <location>'%s' % location </location>
+ <command>'%s/bin/ldapsearch%s' % (dsPath,fileExt)</command>
<parms>'-h %s -p %s -D "%s" %s -b "%s" "%s"' % (dsInstanceHost,dsInstancePort,dsInstanceDn,extraParams,dsBaseDN,dsFilter)</parms>
- <workdir>'%s' % (OPENDS_BINPATH)</workdir>
+ <workdir>'%s/bin' % dsPath</workdir>
<envs>
- ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
+ ['PATH=/bin:/usr/bin:%s/bin' % dsPath, 'JAVA_HOME=%s' % JAVA_HOME]
</envs>
<stderr mode="'stdout'"/>
<returnstdout/>
</process>
</sequence>
</function>
-
+
<function name="AnonSearchObject">
<function-prolog>
This function searches the Directory Server anonymously with optional arguments possible
</function-prolog>
<function-map-args>
- <function-required-arg name="dsInstanceHost">
+ <function-arg-def name="location" type="optional" default="'%s' % 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="pathname"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstanceHost" type="optional">
+ <function-arg-description>
Directory Server Host Name
- </function-required-arg>
- <function-required-arg name="dsInstancePort">
+ </function-arg-description>
+ <function-arg-property name="type" value="hostname"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePort" type="optional">
+ <function-arg-description>
Directory Server Port Number
- </function-required-arg>
- <function-required-arg name="dsBaseDN">
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="dsBaseDN" type="optional">
+ <function-arg-description>
The baseDN for the search operation
- </function-required-arg>
- <function-required-arg name="dsFilter">
+ </function-arg-description>
+ <function-arg-property name="type" value="dn"/>
+ </function-arg-def>
+ <function-arg-def name="dsFilter" type="optional">
+ <function-arg-description>
The filter for the search operation
- </function-required-arg>
- <function-optional-arg name="extraParams" default="' '">
+ </function-arg-description>
+ <function-arg-property name="type" value="filter"/>
+ </function-arg-def>
+ <function-arg-def name="extraParams" type="optional">
+ <function-arg-description>
Optional extra parameters for specific test cases
- </function-optional-arg>
+ </function-arg-description>
+ <function-arg-property name="type" value="filter"/>
+ </function-arg-def>
</function-map-args>
<sequence>
<message>
'ldapsearch%s -h %s -p %s %s -b "%s" "%s"' % (fileExt,dsInstanceHost,dsInstancePort,extraParams,dsBaseDN,dsFilter)
</message>
<process name="'Anonymous Search Base Object'">
- <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
- <command>'%s/ldapsearch%s' % (OPENDS_BINPATH,fileExt)</command>
+ <location>'%s' % location </location>
+ <command>'%s/bin/ldapsearch%s' % (dsPath,fileExt)</command>
<parms>'-h %s -p %s %s -b "%s" "%s"' % (dsInstanceHost,dsInstancePort,extraParams,dsBaseDN,dsFilter)</parms>
- <workdir>'%s' % (OPENDS_BINPATH)</workdir>
+ <workdir>'%s/bin' % dsPath</workdir>
<envs>
- ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
+ ['PATH=/bin:/usr/bin:%s/bin' % dsPath, 'JAVA_HOME=%s' % JAVA_HOME]
</envs>
<stderr mode="'stdout'"/>
<returnstdout/>
</process>
</sequence>
</function>
-
+
<function name="DeleteEntry">
<function-prolog>
This function an entry in the Directory Server
</function-prolog>
<function-map-args>
- <function-required-arg name="dsInstanceHost">
- Directory Server Host Name
- </function-required-arg>
- <function-required-arg name="dsInstancePort">
- Directory Server Port Number
- </function-required-arg>
- <function-required-arg name="dsInstanceDn">
- Directory Server Manager DN
- </function-required-arg>
- <function-required-arg name="dsInstancePswd">
- Directory Server Manager Password
- </function-required-arg>
- <function-required-arg name="dsBaseDN">
- The entry to be deleted
- </function-required-arg>
- <function-optional-arg name="extraParams" default="' '">
- Optional extra parameters for specific test cases
- </function-optional-arg>
+ <function-arg-def name="location" type="optional" default="'%s' % 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">
+ <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="optional">
+ <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="optional">
+ <function-arg-description>
+ Bind DN
+ </function-arg-description>
+ <function-arg-property name="type" value="DN"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePswd" type="optional">
+ <function-arg-description>
+ Bind password
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="dsBaseDN" type="required">
+ <function-arg-description>
+ Entry to be deleted in the Directory Server
+ </function-arg-description>
+ <function-arg-property name="type" value="DN"/>
+ </function-arg-def>
+ <function-arg-def name="extraParams" type="optional">
+ <function-arg-description>
+ Optional extra parameters for specific test cases
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
</function-map-args>
+
<sequence>
+
+ <!-- Local variables -->
+ <script>
+ mylocation=location
+ </script>
+
+ <!-- Build the Command -->
+ <script>
+ STAFCmdParamsList=[]
+ STAFCmdParams=''
+
+ if dsPath:
+ STAFCmd='%s/bin/ldapdelete%s' % (dsPath,fileExt)
+
+ </script>
+
+ <!-- Set common ldap arguments -->
+ <call function="'_ldapCommonArgs'"/>
+
+ <script>
+ if extraParams:
+ STAFCmdParamsList.append('%s' % extraParams)
+
+ if dsBaseDN:
+ STAFCmdParamsList.append('"%s"' % dsBaseDN)
+
+ STAFCmdParams=' '.join(STAFCmdParamsList)
+ </script>
+
<message>
- 'ldapdelete%s -h %s -p %s -D "%s" -w %s %s "%s"' % (fileExt,dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd,extraParams,dsBaseDN)
+ '%s %s' % (STAFCmd, STAFCmdParams)
</message>
+
<process name="'Delete Object'">
- <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
- <command>'%s/ldapdelete%s' % (OPENDS_BINPATH,fileExt)</command>
- <parms>'-h %s -p %s -D "%s" -w %s %s "%s"' % (dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd,extraParams,dsBaseDN)</parms>
- <workdir>'%s' % (OPENDS_BINPATH)</workdir>
+ <location>'%s' % location</location>
+ <command>'%s' % STAFCmd</command>
+ <parms>'%s' % STAFCmdParams</parms>
+ <workdir>'%s/bin' % dsPath</workdir>
<envs>
- ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
+ ['PATH=/bin:/usr/bin:%s/bin' % dsPath, 'JAVA_HOME=%s' % JAVA_HOME]
</envs>
+ <console use="'same'"/>
<stderr mode="'stdout'"/>
<returnstdout/>
</process>
+
<call function="'checkRC'">
{ 'returncode' : RC ,
'result' : STAXResult }
</call>
+
</sequence>
+
</function>
<function name="compareEntry">
@@ -299,43 +645,139 @@
This function compares the attribute and value an entry to the Directory Server
</function-prolog>
<function-map-args>
- <function-required-arg name="dsInstanceHost">
- Directory Server Host Name
- </function-required-arg>
- <function-required-arg name="dsInstancePort">
- Directory Server Port Number
- </function-required-arg>
- <function-required-arg name="dsInstanceDn">
- Directory Server Manager DN
- </function-required-arg>
- <function-required-arg name="dsInstancePswd">
- Directory Server Manager Password
- </function-required-arg>
- <function-required-arg name="attrToBeCompared">
- Attribute to be compared in Directory Server
- </function-required-arg>
- <function-required-arg name="entryToBeCompared">
- Entry to be compared in Directory Server
- </function-required-arg>
- <function-optional-arg name="extraParams" default="' '">
- Optional extra parameters for specific test cases
- </function-optional-arg>
+ <function-arg-def name="location" type="optional" default="'%s' % 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">
+ <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="optional">
+ <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="optional">
+ <function-arg-description>
+ Bind DN
+ </function-arg-description>
+ <function-arg-property name="type" value="DN"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePswd" type="optional">
+ <function-arg-description>
+ Bind password
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="attrToBeCompared" type="required">
+ <function-arg-description>
+ Attribute to be compared in Directory Server
+ </function-arg-description>
+ <function-arg-property name="type" value="attribute"/>
+ </function-arg-def>
+ <function-arg-def name="entryToBeCompared" type="required">
+ <function-arg-description>
+ Entry to be compared in Directory Server
+ </function-arg-description>
+ <function-arg-property name="type" value="DN"/>
+ </function-arg-def>
+ <function-arg-def name="extraParams" type="optional">
+ <function-arg-description>
+ Optional extra parameters for specific test cases
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
</function-map-args>
<sequence>
+
+ <!-- Local variables -->
+ <script>
+ mylocation=location
+ </script>
+
+ <!-- Build the Command -->
+ <script>
+ STAFCmdParamsList=[]
+ STAFCmdParams=''
+
+ if dsPath:
+ STAFCmd='%s/bin/ldapcompare%s' % (dsPath,fileExt)
+
+ </script>
+
+ <!-- Set common ldap arguments -->
+ <call function="'_ldapCommonArgs'"/>
+ <script>
+ if extraParams:
+ STAFCmdParamsList.append('%s' % extraParams)
+
+ if attrToBeCompared:
+ STAFCmdParamsList.append('"%s"' % attrToBeCompared)
+
+ if entryToBeCompared:
+ STAFCmdParamsList.append('"%s"' % entryToBeCompared)
+
+ STAFCmdParams=' '.join(STAFCmdParamsList)
+ </script>
+
<message>
- 'ldapcompare%s -h %s -p %s -D "%s" -w %s %s "%s" "%s"' % (fileExt,dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd,extraParams,attrToBeCompared,entryToBeCompared)
+ '%s %s' % (STAFCmd, STAFCmdParams)
</message>
- <process name="'Compare Entry'">
- <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
- <command>'%s/ldapcompare%s' % (OPENDS_BINPATH,fileExt)</command>
- <parms>'-h %s -p %s -D "%s" -w %s %s "%s" "%s"' % (dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd,extraParams,attrToBeCompared,entryToBeCompared)</parms>
- <workdir>'%s' % (OPENDS_BINPATH)</workdir>
+
+ <process name="'Compare Object'">
+ <location>'%s' % location</location>
+ <command>'%s' % STAFCmd</command>
+ <parms>'%s' % STAFCmdParams</parms>
+ <workdir>'%s/bin' % dsPath</workdir>
<envs>
- ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
+ ['PATH=/bin:/usr/bin:%s/bin' % dsPath, 'JAVA_HOME=%s' % JAVA_HOME]
</envs>
+ <console use="'same'"/>
<stderr mode="'stdout'"/>
<returnstdout/>
</process>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
</sequence>
+
</function>
+
+ <function name="_ldapCommonArgs">
+ <function-prolog>
+ This function resolves common ldap arguments
+ </function-prolog>
+ <function-no-args/>
+
+ <script>
+ 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('-w "%s"' % dsInstancePswd)
+ </script>
+
+ </function>
+
</stax>
diff --git a/opendj-sdk/opends/tests/functional-tests/shared/functions/security.xml b/opendj-sdk/opends/tests/functional-tests/shared/functions/security.xml
index 052a4d7..7b249ad 100755
--- a/opendj-sdk/opends/tests/functional-tests/shared/functions/security.xml
+++ b/opendj-sdk/opends/tests/functional-tests/shared/functions/security.xml
@@ -31,36 +31,77 @@
This function makes the configuration changes for SSL
</function-prolog>
<function-map-args>
- <function-required-arg name="dsInstanceHost">
- Directory Server Host Name
- </function-required-arg>
- <function-required-arg name="dsInstancePort">
- Directory Server Port Number
- </function-required-arg>
- <function-required-arg name="dsInstanceDn">
- Directory Server Manager DN
- </function-required-arg>
- <function-required-arg name="dsInstancePswd">
- Directory Server Manager Password
- </function-required-arg>
- <function-required-arg name="keystoreType">
- Keystore type
- </function-required-arg>
- <function-optional-arg name="extraParams" default="' '">
- Optional extra parameters for specific test cases
- </function-optional-arg>
+ <function-arg-def name="location" type="optional" default="'%s' % 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">
+ <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="optional">
+ <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="optional">
+ <function-arg-description>
+ Bind DN
+ </function-arg-description>
+ <function-arg-property name="type" value="DN"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePswd" type="optional">
+ <function-arg-description>
+ Bind password
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="keystoreType" type="required">
+ <function-arg-description>
+ Keystore type
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="extraParams" type="optional">
+ <function-arg-description>
+ Optional extra parameters for specific test cases
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
</function-map-args>
<sequence>
+
+ <!-- Local variables -->
+ <script>
+ mylocation=location
+ myhost=dsInstanceHost
+ myport=dsInstancePort
+ mydn=dsInstanceDn
+ mypswd=dsInstancePswd
+ </script>
+
<!--- Enable Key Manager Provider -->
<message>
'Enabling Key Manager Provider'
</message>
<call function="'modifyEntry'">
- { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
- 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
- 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
- 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
- 'entryToBeModified' : '%s/security/%s/setup/enable_key_mgr_provider.ldif' % (STAGED_DATA_DIR,keystoreType) }
+ { 'location' : mylocation ,
+ 'dsInstanceHost' : myhost ,
+ 'dsInstancePort' : myport ,
+ 'dsInstanceDn' : mydn ,
+ 'dsInstancePswd' : mypswd ,
+ 'entryToBeModified' : '%s/security/%s/setup/enable_key_mgr_provider.ldif' % (STAGED_DATA_DIR,keystoreType) }
</call>
<call function="'checkRC'">
{ 'returncode' : RC ,
@@ -73,11 +114,12 @@
</message>
<call function="'modifyEntry'">
- { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
- 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
- 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
- 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
- 'entryToBeModified' : '%s/security/%s/setup/enable_trust_mgr_provider.ldif' % (STAGED_DATA_DIR,keystoreType) }
+ { 'location' : mylocation ,
+ 'dsInstanceHost' : myhost ,
+ 'dsInstancePort' : myport ,
+ 'dsInstanceDn' : mydn ,
+ 'dsInstancePswd' : mypswd ,
+ 'entryToBeModified' : '%s/security/%s/setup/enable_trust_mgr_provider.ldif' % (STAGED_DATA_DIR,keystoreType) }
</call>
<call function="'checkRC'">
@@ -91,11 +133,12 @@
</message>
<call function="'modifyEntry'">
- { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
- 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
- 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
- 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
- 'entryToBeModified' : '%s/ldaps_port.ldif' % (STAGED_DATA_DIR) }
+ { 'location' : mylocation ,
+ 'dsInstanceHost' : myhost ,
+ 'dsInstancePort' : myport ,
+ 'dsInstanceDn' : mydn ,
+ 'dsInstancePswd' : mypswd ,
+ 'entryToBeModified' : '%s/ldaps_port.ldif' % (STAGED_DATA_DIR) }
</call>
<call function="'checkRC'">
@@ -108,18 +151,19 @@
</message>
<call function="'modifyEntry'">
- { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
- 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
- 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
- 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
- 'entryToBeModified' : '%s/security/%s/setup/enable_ldaps_conn_handler.ldif' % (STAGED_DATA_DIR,keystoreType) }
+ { 'location' : mylocation ,
+ 'dsInstanceHost' : myhost ,
+ 'dsInstancePort' : myport ,
+ 'dsInstanceDn' : mydn ,
+ 'dsInstancePswd' : mypswd ,
+ 'entryToBeModified' : '%s/security/%s/setup/enable_ldaps_conn_handler.ldif' % (STAGED_DATA_DIR,keystoreType) }
</call>
<call function="'checkRC'">
{ 'returncode' : RC ,
'result' : STAXResult }
</call>
-</sequence>
+ </sequence>
</function>
<function name="configureTLS">
@@ -127,33 +171,74 @@
This function makes the configuration changes for startTLS
</function-prolog>
<function-map-args>
- <function-required-arg name="dsInstanceHost">
- Directory Server Host Name
- </function-required-arg>
- <function-required-arg name="dsInstancePort">
- Directory Server Port Number
- </function-required-arg>
- <function-required-arg name="dsInstanceDn">
- Directory Server Manager DN
- </function-required-arg>
- <function-required-arg name="dsInstancePswd">
- Directory Server Manager Password
- </function-required-arg>
- <function-required-arg name="keystoreType">
+ <function-arg-def name="location" type="optional" default="'%s' % 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">
+ <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="optional">
+ <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="optional">
+ <function-arg-description>
+ Bind DN
+ </function-arg-description>
+ <function-arg-property name="type" value="DN"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePswd" type="optional">
+ <function-arg-description>
+ Bind password
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="keystoreType" type="required">
+ <function-arg-description>
Keystore type
- </function-required-arg>
- <function-optional-arg name="extraParams" default="' '">
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="extraParams" type="optional">
+ <function-arg-description>
Optional extra parameters for specific test cases
- </function-optional-arg>
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
</function-map-args>
<sequence>
- <!--- Enable Key Manager Provider -->
+
+ <!-- Local variables -->
+ <script>
+ mylocation=location
+ myhost=dsInstanceHost
+ myport=dsInstancePort
+ mydn=dsInstanceDn
+ mypswd=dsInstancePswd
+ </script>
+
+ <!--- Enable Key Manager Provider -->
<call function="'modifyEntry'">
- { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
- 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
- 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
- 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
- 'entryToBeModified' : '%s/security/%s/setup/enable_key_mgr_provider.ldif' % (STAGED_DATA_DIR,keystoreType) }
+ { 'location' : mylocation ,
+ 'dsInstanceHost' : myhost ,
+ 'dsInstancePort' : myport ,
+ 'dsInstanceDn' : mydn ,
+ 'dsInstancePswd' : mypswd ,
+ 'entryToBeModified' : '%s/security/%s/setup/enable_key_mgr_provider.ldif' % (STAGED_DATA_DIR,keystoreType) }
</call>
<call function="'checkRC'">
{ 'returncode' : RC ,
@@ -166,11 +251,12 @@
</message>
<call function="'modifyEntry'">
- { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
- 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
- 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
- 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
- 'entryToBeModified' : '%s/security/%s/setup/enable_trust_mgr_provider.ldif' % (STAGED_DATA_DIR,keystoreType) }
+ { 'location' : mylocation ,
+ 'dsInstanceHost' : myhost ,
+ 'dsInstancePort' : myport ,
+ 'dsInstanceDn' : mydn ,
+ 'dsInstancePswd' : mypswd ,
+ 'entryToBeModified' : '%s/security/%s/setup/enable_trust_mgr_provider.ldif' % (STAGED_DATA_DIR,keystoreType) }
</call>
<call function="'checkRC'">
@@ -183,18 +269,19 @@
'Enabling StartTLS'
</message>
- <call function="'addEntry'">
- { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
- 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
- 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
- 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
- 'entryToBeAdded' : '%s/security/%s/setup/enable_startTLS.ldif' % (STAGED_DATA_DIR,keystoreType) }
- </call>
+ <call function="'addEntry'">
+ { 'location' : mylocation ,
+ 'dsInstanceHost' : myhost ,
+ 'dsInstancePort' : myport ,
+ 'dsInstanceDn' : mydn ,
+ 'dsInstancePswd' : mypswd ,
+ 'entryToBeAdded' : '%s/security/%s/setup/enable_startTLS.ldif' % (STAGED_DATA_DIR,keystoreType) }
+ </call>
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
</sequence>
</function>
@@ -203,160 +290,245 @@
This function reverses the configuration changes for SSL
</function-prolog>
<function-map-args>
- <function-required-arg name="dsInstanceHost">
- Directory Server Host Name
- </function-required-arg>
- <function-required-arg name="dsInstancePort">
- Directory Server Port Number
- </function-required-arg>
- <function-required-arg name="dsInstanceDn">
- Directory Server Manager DN
- </function-required-arg>
- <function-required-arg name="dsInstancePswd">
- Directory Server Manager Password
- </function-required-arg>
- <function-required-arg name="keystoreType">
- Keystore type
- </function-required-arg>
- <function-optional-arg name="extraParams" default="' '">
- Optional extra parameters for specific test cases
- </function-optional-arg>
+ <function-arg-def name="location" type="optional" default="'%s' % 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">
+ <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="optional">
+ <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="optional">
+ <function-arg-description>
+ Bind DN
+ </function-arg-description>
+ <function-arg-property name="type" value="DN"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePswd" type="optional">
+ <function-arg-description>
+ Bind password
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="keystoreType" type="required">
+ <function-arg-description>
+ Keystore type
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="extraParams" type="optional">
+ <function-arg-description>
+ Optional extra parameters for specific test cases
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
</function-map-args>
<sequence>
- <!--- Disable LDAPS Connection Handler -->
- <message>
- 'Disabling LDAPS Connection Handler'
- </message>
-
- <call function="'modifyEntry'">
- { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
- 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
- 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
- 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
- 'entryToBeModified' : '%s/security/%s/teardown/disable_ldaps_conn_handler.ldif' % (STAGED_DATA_DIR,keystoreType) }
- </call>
-
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
-
- <!--- Disable SSL Trust Manager Provider -->
- <message>
- 'Disabling SSL Trust Manager Provider'
- </message>
-
- <call function="'modifyEntry'">
- { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
- 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
- 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
- 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
- 'entryToBeModified' : '%s/security/%s/teardown/disable_trust_mgr_provider.ldif' % (STAGED_DATA_DIR,keystoreType) }
- </call>
-
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
-
- <!--- Disable Key Manager Provider -->
- <message>
- 'Disabling Key Manager Provider'
- </message>
-
- <call function="'modifyEntry'">
- { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
- 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
- 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
- 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
- 'entryToBeModified' : '%s/security/%s/teardown/disable_key_mgr_provider.ldif' % (STAGED_DATA_DIR,keystoreType) }
- </call>
-
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
- </sequence>
- </function>
+ <!-- Local variables -->
+ <script>
+ mylocation=location
+ myhost=dsInstanceHost
+ myport=dsInstancePort
+ mydn=dsInstanceDn
+ mypswd=dsInstancePswd
+ </script>
+
+ <!--- Disable LDAPS Connection Handler -->
+ <message>
+ 'Disabling LDAPS Connection Handler'
+ </message>
+
+ <call function="'modifyEntry'">
+ { 'location' : mylocation ,
+ 'dsInstanceHost' : myhost ,
+ 'dsInstancePort' : myport ,
+ 'dsInstanceDn' : mydn ,
+ 'dsInstancePswd' : mypswd ,
+ 'entryToBeModified' : '%s/security/%s/teardown/disable_ldaps_conn_handler.ldif' % (STAGED_DATA_DIR,keystoreType) }
+ </call>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ <!--- Disable SSL Trust Manager Provider -->
+ <message>
+ 'Disabling SSL Trust Manager Provider'
+ </message>
+
+ <call function="'modifyEntry'">
+ { 'location' : mylocation ,
+ 'dsInstanceHost' : myhost ,
+ 'dsInstancePort' : myport ,
+ 'dsInstanceDn' : mydn ,
+ 'dsInstancePswd' : mypswd ,
+ 'entryToBeModified' : '%s/security/%s/teardown/disable_trust_mgr_provider.ldif' % (STAGED_DATA_DIR,keystoreType) }
+ </call>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ <!--- Disable Key Manager Provider -->
+ <message>
+ 'Disabling Key Manager Provider'
+ </message>
+
+ <call function="'modifyEntry'">
+ { 'location' : mylocation ,
+ 'dsInstanceHost' : myhost ,
+ 'dsInstancePort' : myport ,
+ 'dsInstanceDn' : mydn ,
+ 'dsInstancePswd' : mypswd ,
+ 'entryToBeModified' : '%s/security/%s/teardown/disable_key_mgr_provider.ldif' % (STAGED_DATA_DIR,keystoreType) }
+ </call>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+ </sequence>
+ </function>
<function name="unconfigureTLS">
<function-prolog>
This function reverses the configuration changes for startTLS
</function-prolog>
<function-map-args>
- <function-required-arg name="dsInstanceHost">
- Directory Server Host Name
- </function-required-arg>
- <function-required-arg name="dsInstancePort">
- Directory Server Port Number
- </function-required-arg>
- <function-required-arg name="dsInstanceDn">
- Directory Server Manager DN
- </function-required-arg>
- <function-required-arg name="dsInstancePswd">
- Directory Server Manager Password
- </function-required-arg>
- <function-required-arg name="keystoreType">
- Keystore type
- </function-required-arg>
- <function-optional-arg name="extraParams" default="' '">
- Optional extra parameters for specific test cases
- </function-optional-arg>
+ <function-arg-def name="location" type="optional" default="'%s' % 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">
+ <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="optional">
+ <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="optional">
+ <function-arg-description>
+ Bind DN
+ </function-arg-description>
+ <function-arg-property name="type" value="DN"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePswd" type="optional">
+ <function-arg-description>
+ Bind password
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="keystoreType" type="required">
+ <function-arg-description>
+ Keystore type
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="extraParams" type="optional">
+ <function-arg-description>
+ Optional extra parameters for specific test cases
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
</function-map-args>
<sequence>
+
+ <!-- Local variables -->
+ <script>
+ mylocation=location
+ myhost=dsInstanceHost
+ myport=dsInstancePort
+ mydn=dsInstanceDn
+ mypswd=dsInstancePswd
+ </script>
+
<!--- Disable StartTLS -->
- <message>
- 'Disabling StartTLS'
- </message>
-
- <call function="'modifyEntry'">
- { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
- 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
- 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
- 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
- 'entryToBeModified' : '%s/security/%s/teardown/disable_startTLS.ldif' % (STAGED_DATA_DIR,keystoreType) }
- </call>
-
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
-
- <!--- Disable SSL Trust Manager Provider -->
- <message>
- 'Disabling SSL Trust Manager Provider'
- </message>
-
- <call function="'modifyEntry'">
- { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
- 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
- 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
- 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
- 'entryToBeModified' : '%s/security/%s/teardown/disable_trust_mgr_provider.ldif' % (STAGED_DATA_DIR,keystoreType) }
- </call>
-
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
-
- <!--- Disable Key Manager Provider -->
- <message>
- 'Disabling Key Manager Provider'
- </message>
-
- <call function="'modifyEntry'">
- { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
- 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
- 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
- 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
- 'entryToBeModified' : '%s/security/%s/teardown/disable_key_mgr_provider.ldif' % (STAGED_DATA_DIR,keystoreType) }
- </call>
-
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
+ <message>
+ 'Disabling StartTLS'
+ </message>
+
+ <call function="'modifyEntry'">
+ { 'location' : mylocation ,
+ 'dsInstanceHost' : myhost ,
+ 'dsInstancePort' : myport ,
+ 'dsInstanceDn' : mydn ,
+ 'dsInstancePswd' : mypswd ,
+ 'entryToBeModified' : '%s/security/%s/teardown/disable_startTLS.ldif' % (STAGED_DATA_DIR,keystoreType) }
+ </call>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ <!--- Disable SSL Trust Manager Provider -->
+ <message>
+ 'Disabling SSL Trust Manager Provider'
+ </message>
+
+ <call function="'modifyEntry'">
+ { 'location' : mylocation ,
+ 'dsInstanceHost' : myhost ,
+ 'dsInstancePort' : myport ,
+ 'dsInstanceDn' : mydn ,
+ 'dsInstancePswd' : mypswd ,
+ 'entryToBeModified' : '%s/security/%s/teardown/disable_trust_mgr_provider.ldif' % (STAGED_DATA_DIR,keystoreType) }
+ </call>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ <!--- Disable Key Manager Provider -->
+ <message>
+ 'Disabling Key Manager Provider'
+ </message>
+
+ <call function="'modifyEntry'">
+ { 'location' : mylocation ,
+ 'dsInstanceHost' : myhost ,
+ 'dsInstancePort' : myport ,
+ 'dsInstanceDn' : mydn ,
+ 'dsInstancePswd' : mypswd ,
+ 'entryToBeModified' : '%s/security/%s/teardown/disable_key_mgr_provider.ldif' % (STAGED_DATA_DIR,keystoreType) }
+ </call>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
</sequence>
</function>
</stax>
diff --git a/opendj-sdk/opends/tests/functional-tests/shared/functions/stafcmd.xml b/opendj-sdk/opends/tests/functional-tests/shared/functions/stafcmd.xml
index d6afac6..a24841a 100755
--- a/opendj-sdk/opends/tests/functional-tests/shared/functions/stafcmd.xml
+++ b/opendj-sdk/opends/tests/functional-tests/shared/functions/stafcmd.xml
@@ -93,7 +93,7 @@
</function-arg-def>
<function-arg-def name="destfolder" type="required">
<function-arg-description>
- The name of the destination fule
+ The name of the destination file
</function-arg-description>
<function-arg-property name="type" value="foldername"/>
</function-arg-def>
diff --git a/opendj-sdk/opends/tests/functional-tests/shared/functions/topology.xml b/opendj-sdk/opends/tests/functional-tests/shared/functions/topology.xml
new file mode 100755
index 0000000..f51f5ad
--- /dev/null
+++ b/opendj-sdk/opends/tests/functional-tests/shared/functions/topology.xml
@@ -0,0 +1,564 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License"). You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ ! Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ ! Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+ <function name="createTopology">
+ <function-prolog>
+ This function creates the topology required by the Test Group/Suite.
+ </function-prolog>
+ <function-map-args>
+ <function-arg-def name="topologyDescFile" type="optional" default="None">
+ <function-arg-description>
+ Topology Description file
+ </function-arg-description>
+ <function-arg-property name="type" value="filePath"/>
+ </function-arg-def>
+ </function-map-args>
+
+ <sequence>
+
+ <if expr="topologyDescFile == None">
+ <!-- SINGLE instance deployment: read parameters from config.py (done by default) -->
+ <sequence>
+ <message>
+ 'SINGLE instance deployment: read parameters from config.py'
+ </message>
+
+ <call function="'createInstance'"></call>
+
+ </sequence>
+
+ <else>
+ <!-- MULTIPLE instance deployment: read parameters from topologyDescFile -->
+ <sequence>
+
+ <message>
+ 'MULTIPLE instance deployment: read parameters from %s' % topologyDescFile
+ </message>
+
+ <!-- Parse the topology description file and set _topologyServerList -->
+ <call function="'readTopology'">
+ { 'file' : topologyDescFile }
+ </call>
+
+ <message>
+ 'Number of server instances required by the deployment: %s' % len(_topologyServerList)
+ </message>
+
+ <iterate var="server" in="_topologyServerList">
+ <sequence>
+ <!-- Create the instance-->
+ <call function="'createInstance'">
+ { 'dsHost' : server.getHostname(),
+ 'dsDir' : server.getDir(),
+ 'dsPort' : server.getPort(),
+ 'dsSslPort' : server.getSslPort(),
+ 'dsBindDN' : server.getRootDn(),
+ 'dsBindPwd' : server.getRootPwd(),
+ 'dsBaseDN' : server.getBaseDn() }
+ </call>
+
+ <!-- Configure synchronization 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 SYNCHRONIZATION configuration.' </message>
+ <script>
+ serverMap = {}
+ serverMap['instance'] = server
+ </script>
+
+ <call function="'configureSynchronization'">
+ [serverMap]
+ </call>
+ </sequence>
+ </if>
+
+ </sequence>
+
+ </iterate>
+
+ </sequence>
+
+ </else>
+ </if>
+
+ </sequence>
+
+ </function>
+
+
+ <function name="createInstance">
+ <function-prolog>
+ This function creates an instance on a given host.
+ It copies both data and OpenDS zip files onto the host,
+ unzips them, and configures OpenDS.
+ </function-prolog>
+
+ <function-map-args>
+ <function-arg-def name="dsHost" type="optional" default="DIRECTORY_INSTANCE_HOST">
+ <function-arg-description>
+ Hostname where the instance is to be created
+ </function-arg-description>
+ <function-arg-property name="type" value="hostname"/>
+ </function-arg-def>
+ <function-arg-def name="dsDir" type="optional" default="DIRECTORY_INSTANCE_DIR">
+ <function-arg-description>
+ Directory where OpenDS will be installed
+ </function-arg-description>
+ <function-arg-property name="type" value="filepath"/>
+ </function-arg-def>
+ <function-arg-def name="dsPort" type="optional" default="DIRECTORY_INSTANCE_PORT">
+ <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="dsSslPort" type="optional" default="DIRECTORY_INSTANCE_SSL_PORT">
+ <function-arg-description>
+ Directory Server SSL port number
+ </function-arg-description>
+ <function-arg-property name="type" value="Port number"/>
+ </function-arg-def>
+ <function-arg-def name="dsBindDN" type="optional" default="DIRECTORY_INSTANCE_DN">
+ <function-arg-description>
+ Directory Manager DN
+ </function-arg-description>
+ <function-arg-property name="type" value="DN"/>
+ </function-arg-def>
+ <function-arg-def name="dsBindPwd" type="optional" default="DIRECTORY_INSTANCE_PSWD">
+ <function-arg-description>
+ Directory Server SSL port number
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="dsBaseDN" type="optional" default="DIRECTORY_INSTANCE_SFX">
+ <function-arg-description>
+ Directory Server base suffix dn
+ </function-arg-description>
+ <function-arg-property name="type" value="DN"/>
+ </function-arg-def>
+ </function-map-args>
+
+
+ <sequence>
+
+ <message>
+ 'Create instance in host %s at directory %s' % (dsHost,dsDir)
+ </message>
+
+ <!--- Delete folder if it exists on remote host-->
+ <message>
+ 'Delete folder %s/%s on host %s' % (dsDir,OPENDSNAME,dsHost)
+ </message>
+ <call function="'deleteFolder'">
+ { 'location' : dsHost,
+ 'foldername' : '%s/%s' % (dsDir,OPENDSNAME) }
+ </call>
+
+ <!--- Create folder on remote host-->
+ <message>
+ 'Create folder %s on host %s' % (dsDir,dsHost)
+ </message>
+ <call function="'createFolder'">
+ { 'location' : dsHost,
+ 'foldername' : '%s' % dsDir }
+ </call>
+
+ <!--- Copy staging data to remote host -->
+ <message>
+ 'Copy tests to %s on %s' % (dsDir,dsHost)
+ </message>
+ <call function="'copyFile'">
+ { 'srcfile' : '%s/ldifdata.zip' % TMPDIR,
+ 'destfile' : '%s/ldifdata.zip' % dsDir,
+ 'remotehost' : dsHost }
+ </call>
+
+ <!--- Unzip contents of staging data on remote host -->
+ <message>
+ 'Extract contents of test data %s on %s' % (dsDir,dsHost)
+ </message>
+ <call function="'unZipFile'">
+ { 'location' : dsHost,
+ 'zipfile' : '%s/ldifdata.zip' % dsDir,
+ 'unzipdir' : dsDir }
+ </call>
+
+ <!--- Install DS Copy zip file -->
+ <message>
+ 'Copy DS zip archive to %s on %s' % (DSTFILE,dsHost)
+ </message>
+ <call function="'copyFile'">
+ { 'srcfile' : SRCFILE,
+ 'destfile' : DSTFILE,
+ 'remotehost' : dsHost }
+ </call>
+
+ <!--- Install DS Extract zip file -->
+ <message>
+ 'Extract DS zip archive to %s on %s' % (dsDir,dsHost)
+ </message>
+ <call function="'unZipFile'">
+ { 'location' : dsHost,
+ 'zipfile' : DSTFILE,
+ 'unzipdir' : dsDir }
+ </call>
+
+ <!--- Configure DS -->
+ <message>
+ 'Configure DS on %s : %s/%s' % (dsHost,dsDir,OPENDSNAME)
+ </message>
+ <call function="'ConfigureDsWithScript'">
+ { 'location' : dsHost,
+ 'dsPath' : '%s/%s' % (dsDir, OPENDSNAME),
+ 'dsPort' : dsPort ,
+ 'dsBindDN' : dsBindDN,
+ 'dsBindPwd' : dsBindPwd,
+ 'dsBaseDN' : dsBaseDN }
+ </call>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ <if expr="returncode == 0">
+ <message>
+ 'Instance created.'
+ </message>
+ <else>
+ <message>
+ 'Failed to create instance.'
+ </message>
+ </else>
+ </if>
+
+ </sequence>
+
+ </function>
+
+
+
+
+
+ <function name="configureSynchronization">
+ <function-prolog>
+ This function configures synchronization in a given server.
+ </function-prolog>
+
+ <function-list-args>
+ <function-arg-def name="syncserverMap" type="required">
+ <function-arg-description>
+ Map containing a Server class instance representing the server to configure.
+ </function-arg-description>
+ <function-arg-property name="type" value="map"/>
+ </function-arg-def>
+ </function-list-args>
+
+ <sequence>
+ <script>
+ syncserver = syncserverMap['instance']
+
+ filename = 'synchronization_conf.ldif'
+ filePath = '%s/%s' % (TMP_DATA_DIR,filename)
+ dataDir = '%s/functional-tests/shared/data' % syncserver.getDir()
+
+ write_synchronization_conf_ldif_file(filePath, syncserver)
+ </script>
+
+ <message>
+ 'Configure synchronization on server on host %s at directory %s' % (syncserver.getHostname(),syncserver.getDir())
+ </message>
+
+ <!-- Copy the synchronization_conf ldif to remote host -->
+ <message>
+ 'Copy %s file from %s to %s' % (filename,TMP_DATA_DIR,dataDir)
+ </message>
+ <call function="'copyFile'">
+ { 'srcfile' : filePath,
+ 'destfile' : '%s/%s' % (dataDir,filename),
+ 'remotehost' : syncserver.getHostname() }
+ </call>
+
+
+ <!--- Add synchronization configuration entries to config.ldif in server -->
+
+ <script>
+ remoteFilePath = '%s/%s' % (dataDir, filename)
+ configPath = '%s/%s/config/config.ldif' % (syncserver.getDir(),OPENDSNAME)
+ </script>
+
+ <stafcmd>
+ <location> syncserver.getHostname() </location>
+ <service> 'FS' </service>
+ <request> 'GET ENTRY %s SIZE' % configPath </request>
+ </stafcmd>
+
+ <script>
+ if RC == STAFRC.Ok:
+ configFileSize = STAFResult['lowerSize']
+
+ cmd = '/bin/dd'
+
+ cmdParamsList = []
+ cmdParamsList.append('if=%s' % remoteFilePath)
+ cmdParamsList.append('of=%s' % configPath)
+ cmdParamsList.append('conv=notrunc bs=1 seek=%s' % configFileSize)
+ cmdParams = ' '.join(cmdParamsList)
+ </script>
+
+ <message>
+ 'Append %s to %s' % (remoteFilePath,configPath)
+ </message>
+ <message>
+ '%s %s' % (cmd,cmdParams)
+ </message>
+
+ <process name="'Append Synchronization Entries to config.ldif'">
+ <location> syncserver.getHostname() </location>
+ <command> '%s' % cmd </command>
+ <parms>'%s' % cmdParams </parms>
+ <workdir> '/bin' </workdir>
+ <envs>
+ ['PATH=/bin:/usr/bin', 'JAVA_HOME=%s' % (JAVA_HOME)]
+ </envs>
+ <stderr mode="'stdout'"/>
+ <returnstdout/>
+ </process>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+
+ </sequence>
+
+ </function>
+
+
+
+
+
+ <function name="readTopology">
+ <function-prolog>
+ This function reads the topology from a given file.
+ It parses the topology description file and sets _topologyServerList, a list of the servers
+ that form the topology.
+ </function-prolog>
+
+ <function-map-args>
+ <function-arg-def name="file" type="required">
+ <function-arg-description>
+ File containing the topology description.
+ </function-arg-description>
+ <function-arg-property name="type" value="filePath"/>
+ </function-arg-def>
+ </function-map-args>
+
+ <sequence>
+
+ <message>
+ 'Parse file %s for topology parameters' % file
+ </message>
+
+ <script>
+ _topologyServerList = []
+
+ f = open(file, 'r')
+
+ hostname = None
+ dir = None
+ port = None
+ sslport = None
+ rootDn = None
+ rootPwd = None
+ baseDn = None
+ changelogport = None
+ suffixList = []
+ changelogList = []
+ serverId = 1
+
+ fileLines = f.readlines()
+ for line in fileLines:
+
+ if line.startswith('#'):
+ continue
+ elif line.find('Hostname') != -1:
+ hostname = line[line.find('Hostname') + 9:].strip()
+ elif line.find('Directory') !=-1:
+ dir = line[line.find('Directory') + 10:].strip()
+ elif line.find('Port') != -1:
+ port = line[line.find('Port') + 5:].strip()
+ elif line.find('Sslport') != -1:
+ sslport = line[line.find('Sslport') + 8:].strip()
+ elif line.find('RootDn') != -1:
+ rootDn = line[line.find('RootDn') + 7:].strip()
+ elif line.find('RootPwd') != -1:
+ rootPwd = line[line.find('RootPwd') + 8:].strip()
+ elif line.find('BaseDn') != -1:
+ baseDn = line[line.find('BaseDn') + 7:].strip()
+ elif line.find('Changelogport') != -1:
+ changelogport = line[line.find('Changelogport') + 14:].strip()
+ elif line.find('SynchronizedSuffix') != -1:
+ suffixList.append( line[line.find('SynchronizedSuffix') + 19:].strip() )
+ elif line.find('ChangelogServer') != -1:
+ changelogList.append( line[line.find('ChangelogServer') + 16:].strip() )
+ elif (line.isspace()) or (len(line) == 0):
+ server = Server(hostname, dir, port, sslport, rootDn, rootPwd, baseDn)
+
+ if changelogport != None:
+ changelogServer = ChangelogServer(changelogport, serverId)
+ for item in changelogList:
+ srv = item[:item.find(':')]
+ prt = item[item.find(':') + 1:]
+ changelogServer.addChangelogServer(srv, prt)
+ server.addChangelogServer(changelogServer)
+
+ for suffix in suffixList:
+ synchroSuffix = SynchronizedSuffix(suffix, serverId)
+ for item in changelogList:
+ srv = item[:item.find(':')]
+ prt = item[item.find(':') + 1:]
+ synchroSuffix.addChangelogServer(srv, prt)
+ server.addSynchronizedSuffix(synchroSuffix)
+
+ _topologyServerList.append(server)
+
+ hostname = None
+ dir = None
+ port = None
+ sslport = None
+ rootDn = None
+ rootPwd = None
+ baseDn = None
+ changelogport = None
+ suffixList = []
+ changelogList = []
+ serverId += 1
+
+ if hostname != None:
+ server = Server(hostname, dir, port, sslport, rootDn, rootPwd, baseDn)
+
+ if changelogport != None:
+ changelogServer = ChangelogServer(changelogport, serverId)
+ for item in changelogList:
+ srv = item[:item.find(':')]
+ prt = item[item.find(':') + 1:]
+ changelogServer.addChangelogServer(srv, prt)
+ server.addChangelogServer(changelogServer)
+
+ for suffix in suffixList:
+ synchroSuffix = SynchronizedSuffix(suffix, serverId)
+ for item in changelogList:
+ srv = item[:item.find(':')]
+ prt = item[item.find(':') + 1:]
+ synchroSuffix.addChangelogServer(srv, prt)
+ server.addSynchronizedSuffix(synchroSuffix)
+
+ _topologyServerList.append(server)
+
+ f.close()
+ </script>
+
+
+ </sequence>
+
+ </function>
+
+
+ <function name="removeTopology">
+ <function-prolog>
+ This function removes the topology created for the Test Group/Suite.
+ </function-prolog>
+
+
+ <sequence>
+
+ <message>
+ 'Number of server instances deployed: %s' % len(_topologyServerList)
+ </message>
+
+ <iterate var="server" in="_topologyServerList">
+ <sequence>
+
+ <message>
+ 'Cleaning up %s/%s instance on host %s' % (server.getDir(),OPENDSNAME,server.getHostname())
+ </message>
+
+ <!--- Delete staging data file on remote host-->
+ <message>
+ 'Delete stagingn data file %s/ldifdata.zip' % server.getDir()
+ </message>
+ <call function="'deleteFile'">
+ { 'location' : server.getHostname(),
+ 'filename' : '%s/ldifdata.zip' % server.getDir() }
+ </call>
+
+ <!--- Delete staging data folder on remote host -->
+ <message>
+ 'Delete staging data folder %s/functional-tests' % server.getDir()
+ </message>
+ <call function="'deleteFolder'">
+ { 'location' : server.getHostname(),
+ 'foldername' : '%s/functional-tests' % server.getDir() }
+ </call>
+
+
+ <!--- Delete OPENDS folder on remote host-->
+ <message>
+ 'Delete OPENDS folder %s/%s' % (server.getDir(),OPENDSNAME)
+ </message>
+ <call function="'deleteFolder'">
+ { 'location' : server.getHostname(),
+ 'foldername' : '%s/%s' % (server.getDir(),OPENDSNAME) }
+ </call>
+
+ <!--- Delete OPENDS zip file on remote host-->
+ <message>
+ 'Delete OPENDS zip file %s' % DSTFILE
+ </message>
+ <call function="'deleteFile'">
+ { 'location' : server.getHostname(),
+ 'filename' : '%s' % DSTFILE }
+ </call>
+
+ <message>
+ 'Instance cleaned up.'
+ </message>
+
+ </sequence>
+ </iterate>
+
+
+ </sequence>
+
+ </function>
+
+</stax>
\ No newline at end of file
diff --git a/opendj-sdk/opends/tests/functional-tests/shared/functions/utils.xml b/opendj-sdk/opends/tests/functional-tests/shared/functions/utils.xml
index 254fa50..3c3046d 100755
--- a/opendj-sdk/opends/tests/functional-tests/shared/functions/utils.xml
+++ b/opendj-sdk/opends/tests/functional-tests/shared/functions/utils.xml
@@ -30,17 +30,26 @@
<function-prolog>
This function checks a return code against an expected return code
</function-prolog>
-
+
<function-map-args>
- <function-required-arg name="returncode">
- return code received from command
- </function-required-arg>
- <function-required-arg name="result">
- the output of the result
- </function-required-arg>
- <function-optional-arg name="expected" default="0">
- the expected return code
- </function-optional-arg>
+ <function-arg-def name="returncode" type="required">
+ <function-arg-description>
+ return code received from command
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="result" type="required">
+ <function-arg-description>
+ the output of the result
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="expected" type="optional" default="0">
+ <function-arg-description>
+ the expected return code
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
</function-map-args>
<sequence>
@@ -48,11 +57,11 @@
<sequence>
<if expr="result == ''">
<message log="1">
- 'Success: RC=%s, Result=Ok' % (returncode)
+ 'RC=%s, Result=Ok' % (returncode)
</message>
<else>
<message log="1">
- 'Success: RC=%s, Result=%s' % (returncode,result)
+ 'RC=%s, Result=%s' % (returncode,result)
</message>
</else>
</if>
@@ -60,7 +69,7 @@
<else>
<sequence>
<message log="1" level="'Error'">
- 'Error: RC=%s, Expected %s, Result=%s' % (returncode,expected,result)
+ 'RC=%s, Expected %s, Result=%s' % (returncode,expected,result)
</message>
</sequence>
</else>
@@ -73,29 +82,38 @@
This function checks the return code against an expected return code for a testcase
</function-prolog>
<function-map-args>
- <function-required-arg name="returncode">
- return code received from command
- </function-required-arg>
- <function-required-arg name="result">
- the output of the result
- </function-required-arg>
- <function-optional-arg name="expected" default="0">
- the expected return code
- </function-optional-arg>
- </function-map-args>
+ <function-arg-def name="returncode" type="required">
+ <function-arg-description>
+ return code received from command
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="result" type="required">
+ <function-arg-description>
+ the output of the result
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="expected" type="optional" default="0">
+ <function-arg-description>
+ the expected return code
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ </function-map-args>
<sequence>
<if expr="returncode == expected">
<sequence>
<tcstatus result="'pass'"/>
<message log="1">
- 'Success: RC=%s, Result=%s' % (returncode,result)
+ 'RC=%s, Result=%s' % (returncode,result)
</message>
</sequence>
<else>
<sequence>
<tcstatus result="'fail'"/>
<message log="1" level="'Error'">
- 'Error: RC=%s, Expected %s, Result=%s' % (returncode,expected,result)
+ 'RC=%s, Expected %s, Result=%s' % (returncode,expected,result)
</message>
</sequence>
</else>
@@ -107,14 +125,22 @@
<function-prolog>
This function checks the return string against an expected return substring for a testcase
</function-prolog>
+
<function-map-args>
- <function-required-arg name="expectedString">
- the substring expected from the command
- </function-required-arg>
- <function-required-arg name="returnString">
- the return string received from command
- </function-required-arg>
+ <function-arg-def name="expectedString" type="required">
+ <function-arg-description>
+ the substring expected from the command
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="returnString" type="required">
+ <function-arg-description>
+ the return string received from command
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
</function-map-args>
+
<sequence>
<script>
searchre = re.compile('%s' % expectedString)
@@ -124,14 +150,14 @@
<sequence>
<tcstatus result="'pass'"/>
<message log="1">
- 'Success: Found substring, %s, in the return string' % (expectedString)
+ 'Found substring, %s, in the return string' % (expectedString)
</message>
</sequence>
<else>
<sequence>
<tcstatus result="'fail'"/>
<message log="1" level="'Error'">
- 'Error: Did not find substring, %s, in the return string, %s' % (expectedString, returnString)
+ 'Did not find substring, %s, in the return string, %s' % (expectedString, returnString)
</message>
</sequence>
</else>
@@ -144,12 +170,18 @@
This function checks the return string against an expected return substring that should not be present for a testcase
</function-prolog>
<function-map-args>
- <function-required-arg name="testString">
- the substring being tested from the command
- </function-required-arg>
- <function-required-arg name="returnString">
- the return string received from command
- </function-required-arg>
+ <function-arg-def name="testString" type="required">
+ <function-arg-description>
+ the substring being tested from the command
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="returnString" type="required">
+ <function-arg-description>
+ the return string received from command
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
</function-map-args>
<sequence>
@@ -160,14 +192,14 @@
<sequence>
<tcstatus result="'pass'"/>
<message log="1">
- 'Success: Did Not Find substring, %s, in the return string' % (testString)
+ 'Did Not Find substring, %s, in the return string' % (testString)
</message>
</sequence>
<else>
<sequence>
<tcstatus result="'fail'"/>
<message log="1" level="'Error'">
- 'Error: Found substring, %s, in the return string, %s' % (testString, returnString)
+ 'Found substring, %s, in the return string, %s' % (testString, returnString)
</message>
</sequence>
</else>
@@ -179,13 +211,20 @@
<function-prolog>
This function simply searches a string for a substring
</function-prolog>
+
<function-map-args>
- <function-required-arg name="testString">
- the substring being tested from the command
- </function-required-arg>
- <function-required-arg name="returnString">
- the return string received from command
- </function-required-arg>
+ <function-arg-def name="testString" type="required">
+ <function-arg-description>
+ the substring being tested from the command
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="returnString" type="required">
+ <function-arg-description>
+ the return string received from command
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
</function-map-args>
<sequence>
@@ -196,14 +235,14 @@
<sequence>
<script>returnCode='0'</script>
<message log="1">
- 'Result: Did Not Find substring, %s, in the return string' % (testString)
+ 'Did Not Find substring, %s, in the return string' % (testString)
</message>
</sequence>
<else>
<sequence>
<script>returnCode='1'</script>
<message log="1">
- 'Result: Found substring, %s, in the return string' % (testString)
+ 'Found substring, %s, in the return string' % (testString)
</message>
</sequence>
</else>
@@ -212,43 +251,97 @@
</sequence>
</function>
- <function name="isAlive">
+ <function name="isAlive" scope="local">
<function-prolog>
Checks that the ldap server is running
</function-prolog>
<function-map-args>
- <function-required-arg name="noOfLoops">
- Number of loops
- </function-required-arg>
- <function-required-arg name="noOfMilliSeconds">
- Number of seconds
- </function-required-arg>
+ <function-arg-def name="location" type="optional" default="'%s' % 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="pathname"/>
+ </function-arg-def>
+ <function-arg-def name="noOfLoops" type="required">
+ <function-arg-description>
+ Number of iterations
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="noOfMilliSeconds" type="required">
+ <function-arg-description>
+ Number of seconds to wait between iterations
+ </function-arg-description>
+ <function-arg-property name="type" value="seconds"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstanceHost" type="optional" default="'%s' % DIRECTORY_INSTANCE_HOST">
+ <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="optional" default="'%s' % DIRECTORY_INSTANCE_PORT">
+ <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="optional" default="'%s' % DIRECTORY_INSTANCE_DN">
+ <function-arg-description>
+ Bind DN
+ </function-arg-description>
+ <function-arg-property name="type" value="DN"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePswd" type="optional" default="'%s' % DIRECTORY_INSTANCE_PSWD">
+ <function-arg-description>
+ Bind password
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
</function-map-args>
+
+ <sequence>
+ <!-- Local variables -->
+ <script>
+ mylocation=location
+ myhost=dsInstanceHost
+ myport=dsInstancePort
+ mydn=dsInstanceDn
+ mypswd=dsInstancePswd
+ </script>
+
+ <script>ldapRC=9999</script>
+ <loop from="1" to="noOfLoops" while="ldapRC != 0">
+ <sequence>
+ <call function="'SearchObject'">
+ { 'location' : mylocation,
+ 'dsInstanceHost' : myhost ,
+ 'dsInstancePort' : myport ,
+ 'dsInstanceDn' : mydn ,
+ 'dsInstancePswd' : mypswd ,
+ 'dsScope' : 'base' ,
+ 'dsBaseDN' : 'cn=config' ,
+ 'dsFilter' : 'objectclass=*' }
+ </call>
- <sequence>
- <script>ldapRC=9999</script>
- <loop from="1" to="noOfLoops" while="ldapRC != 0">
- <sequence>
- <call function="'SearchObject'">
- { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
- 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
- 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
- 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
- 'dsBaseDN' : 'cn=config' ,
- 'dsFilter' : 'objectclass=*' ,
- 'extraParams' : '-s "base"' }
- </call>
+ <script>
+ ldapRC=RC
+ </script>
- <script>
- ldapRC=RC
- </script>
-
- <call function="'Sleep'">
- { 'sleepForMilliSeconds' : noOfMilliSeconds }
- </call>
- </sequence>
- </loop>
- </sequence>
+ <call function="'Sleep'">
+ { 'sleepForMilliSeconds' : noOfMilliSeconds }
+ </call>
+
+ </sequence>
+ </loop>
+
+ </sequence>
</function>
<function name="Sleep">
@@ -256,14 +349,23 @@
Sleep for number of milliseconds
</function-prolog>
<function-map-args>
- <function-required-arg name="sleepForMilliSeconds">
- Number of milliseconds to sleep
- </function-required-arg>
+ <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="sleepForMilliSeconds" type="required">
+ <function-arg-description>
+ Number of milliseconds to sleep
+ </function-arg-description>
+ <function-arg-property name="type" value="seconds"/>
+ </function-arg-def>
</function-map-args>
<sequence>
<stafcmd name="'STAF Command: Delay'">
- <location>'%s' % (hostname)</location>
+ <location>'%s' % location</location>
<service>'delay'</service>
<request>
'delay %i' % sleepForMilliSeconds
@@ -282,13 +384,16 @@
Set OS related variables
</function-prolog>
<function-map-args>
- <function-required-arg name="hostname">
- Name of host
- </function-required-arg>
+ <function-arg-def name="hostname" type="required">
+ <function-arg-description>
+ Name of host on which to retrieve variables
+ </function-arg-description>
+ <function-arg-property name="type" value="hostname"/>
+ </function-arg-def>
</function-map-args>
<sequence>
<stafcmd name="'STAF Command: Get OS Name'">
- <location>'%s' % (hostname)</location>
+ <location>'%s' % hostname</location>
<service>'var'</service>
<request>
'get system var STAF/Config/OS/Name'
@@ -499,17 +604,25 @@
<function-prolog>
Queries the staf logs for the test case and write to file as text
</function-prolog>
-
<function-map-args>
- <function-required-arg name="starttime">
- timestamp to start logging from
- </function-required-arg>
- <function-required-arg name="endtime">
- timestamp to start logging from
- </function-required-arg>
- <function-required-arg name="tofile">
- timestamp to start logging from
- </function-required-arg>
+ <function-arg-def name="starttime" type="required">
+ <function-arg-description>
+ timestamp to start logging from
+ </function-arg-description>
+ <function-arg-property name="type" value="timestamp"/>
+ </function-arg-def>
+ <function-arg-def name="endtime" type="required">
+ <function-arg-description>
+ timestamp to start logging to
+ </function-arg-description>
+ <function-arg-property name="type" value="timestamp"/>
+ </function-arg-def>
+ <function-arg-def name="tofile" type="required">
+ <function-arg-description>
+ name of file to write the logs
+ </function-arg-description>
+ <function-arg-property name="type" value="filepath"/>
+ </function-arg-def>
</function-map-args>
<sequence>
@@ -535,16 +648,21 @@
<function-prolog>
Process staf log query results and write them to a file
</function-prolog>
-
<function-map-args>
- <function-required-arg name="queryresult">
- result of the staf log query
- </function-required-arg>
- <function-required-arg name="logfile">
- name of the log file to where results are written
- </function-required-arg>
+ <function-arg-def name="queryresult" type="required">
+ <function-arg-description>
+ result of the staf log query
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="logfile" type="required">
+ <function-arg-description>
+ name of the log file to where results are written
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
</function-map-args>
-
+
<sequence>
<message>'Creating test log %s' % logfile</message>
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/backends/backends.xml b/opendj-sdk/opends/tests/functional-tests/testcases/backends/backends.xml
index 5039627..00c339a 100644
--- a/opendj-sdk/opends/tests/functional-tests/testcases/backends/backends.xml
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/backends/backends.xml
@@ -46,7 +46,7 @@
<import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
file="'%s/testcases/backends/import.xml' % (TESTS_DIR)"/>
<call function="'main_import'" />
-
+
<import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
file="'%s/testcases/backends/import-tasks.xml' % (TESTS_DIR)"/>
<call function="'main_import-tasks'" />
@@ -74,7 +74,7 @@
<import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
file="'%s/testcases/backends/export-tasks.xml' % (TESTS_DIR)"/>
<call function="'main_export-tasks'" />
-
+
<import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
file="'%s/testcases/backends/export.xml' % (TESTS_DIR)"/>
<call function="'main_export'" />
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/backends/import-tasks.xml b/opendj-sdk/opends/tests/functional-tests/testcases/backends/import-tasks.xml
index 43fd2f5..1000f48 100644
--- a/opendj-sdk/opends/tests/functional-tests/testcases/backends/import-tasks.xml
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/backends/import-tasks.xml
@@ -155,7 +155,7 @@
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
'taskID' : STAXCurrentTestcase,
'ldifFile' : '%s/backends/Include.ldif' % STAGED_DATA_DIR,
- 'includeBranches' : 'dc=com',
+ 'includeBranches' : ['dc=com'],
}
</call>
@@ -249,7 +249,7 @@
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
'taskID' : STAXCurrentTestcase,
'ldifFile' : '%s/backends/Exclude.ldif' % STAGED_DATA_DIR,
- 'excludeBranches' : 'ou=Departed,ou=People,dc=example,dc=com',
+ 'excludeBranches' : ['ou=Departed,ou=People,dc=example,dc=com'],
}
</call>
@@ -349,8 +349,8 @@
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
'taskID' : STAXCurrentTestcase,
'ldifFile' : '%s/backends/Exclude.ldif' % STAGED_DATA_DIR,
- 'includeBranches' : 'dc=com',
- 'excludeBranches' : 'ou=Departed,ou=People,dc=example,dc=com',
+ 'includeBranches' : ['dc=com'],
+ 'excludeBranches' : ['ou=Departed,ou=People,dc=example,dc=com'],
}
</call>
@@ -393,13 +393,13 @@
<call function="'testCase_Preamble'"/>
<call function="'importLdifTask'">
- { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
- 'dsInstancePort' : DIRECTORY_INSTANCE_PORT,
- 'dsInstanceDn' : DIRECTORY_INSTANCE_DN,
- 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
- 'taskID' : STAXCurrentTestcase,
- 'ldifFile' : '%s/backends/Include.ldif' % STAGED_DATA_DIR,
- 'includeAttributes' : 'dc',
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
+ 'taskID' : STAXCurrentTestcase,
+ 'ldifFile' : '%s/backends/Include.ldif' % STAGED_DATA_DIR,
+ 'includeAttributes' : ['dc'],
}
</call>
@@ -492,7 +492,7 @@
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
'taskID' : STAXCurrentTestcase,
'ldifFile' : '%s/backends/Exclude.ldif' % STAGED_DATA_DIR,
- 'excludeAttributes' : 'userpassword'
+ 'excludeAttributes' : ['userpassword']
}
</call>
@@ -585,7 +585,7 @@
'taskID' : STAXCurrentTestcase,
'ldifFile' : '%s/backends/Exclude.ldif' % STAGED_DATA_DIR,
'includeBranches' : ['dc=com','dc=example,dc=com','ou=People,dc=example,dc=com'],
- 'excludeBranches' : 'ou=Departed,ou=People,dc=example,dc=com',
+ 'excludeBranches' : ['ou=Departed,ou=People,dc=example,dc=com'],
'includeAttributes' : ['dc','cn','ou','sn'],
}
</call>
@@ -635,7 +635,7 @@
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
'taskID' : STAXCurrentTestcase,
'ldifFile' : '%s/backends/Include.ldif' % STAGED_DATA_DIR,
- 'includeFilters' : 'objectclass=*',
+ 'includeFilters' : ['objectclass=*'],
}
</call>
@@ -682,7 +682,7 @@
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
'taskID' : STAXCurrentTestcase,
'ldifFile' : '%s/backends/Exclude.ldif' % STAGED_DATA_DIR,
- 'excludeFilters' : 'objectclass=person',
+ 'excludeFilters' : ['objectclass=person'],
}
</call>
@@ -826,7 +826,7 @@
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
'taskID' : STAXCurrentTestcase,
'ldifFile' : '%s/backends/Include.ldif' % STAGED_DATA_DIR,
- 'includeFilters' : '|(objectclass=person)(objectclass=domain)(objectclass=organizationalunit)',
+ 'includeFilters' : ['|(objectclass=person)(objectclass=domain)(objectclass=organizationalunit)'],
}
</call>
@@ -873,7 +873,7 @@
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
'taskID' : STAXCurrentTestcase,
'ldifFile' : '%s/backends/Exclude.ldif' % STAGED_DATA_DIR,
- 'excludeFilters' : '&(objectclass=person)(ou=Departed)',
+ 'excludeFilters' : ['&(objectclass=person)(ou=Departed)'],
}
</call>
@@ -919,9 +919,9 @@
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
'taskID' : STAXCurrentTestcase,
'ldifFile' : '%s/backends/Exclude.ldif' % STAGED_DATA_DIR,
- 'excludeFilters' : '&(objectclass=person)(ou=Departed)',
- 'includeBranches' : 'dc=com',
- 'excludeAttributes' : 'userpassword'
+ 'excludeFilters' : ['&(objectclass=person)(ou=Departed)'],
+ 'includeBranches' : ['dc=com'],
+ 'excludeAttributes' : ['userpassword']
}
</call>
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/backends/import.xml b/opendj-sdk/opends/tests/functional-tests/testcases/backends/import.xml
index 6f1f273..2a7eff0 100644
--- a/opendj-sdk/opends/tests/functional-tests/testcases/backends/import.xml
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/backends/import.xml
@@ -71,8 +71,9 @@
<call function="'testCase_Preamble'"/>
- <call function="'importLdif'">
- { 'ldifFile' : '%s/backends/Example.ldif' % STAGED_DATA_DIR }
+ <call function="'ImportLdifWithScript'">
+ { 'location' : STAF_REMOTE_HOSTNAME ,
+ 'dsLdifFile' : '%s/backends/Example.ldif' % STAGED_DATA_DIR }
</call>
<call function="'checktestRC'">
@@ -147,11 +148,11 @@
<sequence>
<call function="'testCase_Preamble'"/>
-
- <call function="'importLdif'">
- { 'ldifFile' : '%s/backends/Include.ldif' % STAGED_DATA_DIR,
- 'extraParams' : '-b dc=com'
- }
+
+ <call function="'ImportLdifWithScript'">
+ { 'location' : STAF_REMOTE_HOSTNAME,
+ 'dsLdifFile' : '%s/backends/Include.ldif' % STAGED_DATA_DIR,
+ 'dsIncludeBranch' : 'dc=com' }
</call>
<call function="'checktestRC'">
@@ -187,7 +188,7 @@
<sequence>
<call function="'testCase_Preamble'"/>
-
+
<call function="'importLdif'">
{ 'ldifFile' : '%s/backends/Include.ldif' % STAGED_DATA_DIR,
'extraParams' : '-b "dc=com" -b "dc=example,dc=com"'
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/backends/restore.xml b/opendj-sdk/opends/tests/functional-tests/testcases/backends/restore.xml
index 9dfd2f4..14d8328 100755
--- a/opendj-sdk/opends/tests/functional-tests/testcases/backends/restore.xml
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/backends/restore.xml
@@ -75,7 +75,20 @@
'Backend Restore1: Restore data to OpenDS'
</message>
+ <!-- Stop DS -->
+ <call function="'StopDsWithScript'">
+ { 'location' : STAF_REMOTE_HOSTNAME,
+ 'dsHost' : DIRECTORY_INSTANCE_HOST,
+ 'dsPort' : DIRECTORY_INSTANCE_PORT,
+ 'dsBindDN' : DIRECTORY_INSTANCE_DN,
+ 'dsBindPwd' : DIRECTORY_INSTANCE_PSWD }
+ </call>
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
<call function="'restore'">
{
'backupDir' : '%s/backends/backup1' % STAGED_DATA_DIR
@@ -86,7 +99,27 @@
{ 'returncode' : RC ,
'result' : STAXResult }
</call>
-
+
+ <!-- Start DS -->
+ <message>
+ 'Start DS to run on port %s' % DIRECTORY_INSTANCE_PORT
+ </message>
+
+ <call function="'StartDsWithScript'">
+ { 'location' : STAF_REMOTE_HOSTNAME }
+ </call>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ <!--- Check that DS started -->
+ <call function="'isAlive'">
+ { 'noOfLoops' : 5 ,
+ 'noOfMilliSeconds' : 2000 }
+ </call>
+
<call function="'testCase_Postamble'"/>
</sequence>
@@ -114,6 +147,21 @@
<message>
'Backend Restore2: Restore compressed data to OpenDS'
</message>
+
+ <!-- Stop DS -->
+ <call function="'StopDsWithScript'">
+ { 'location' : STAF_REMOTE_HOSTNAME,
+ 'dsHost' : DIRECTORY_INSTANCE_HOST,
+ 'dsPort' : DIRECTORY_INSTANCE_PORT,
+ 'dsBindDN' : DIRECTORY_INSTANCE_DN,
+ 'dsBindPwd' : DIRECTORY_INSTANCE_PSWD }
+ </call>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
<call function="'backup'">
{
'backupDir' : '%s/restore.compressed' % STAGED_DATA_DIR
@@ -124,7 +172,27 @@
{ 'returncode' : RC ,
'result' : STAXResult }
</call>
-
+
+ <!-- Start DS -->
+ <message>
+ 'Start DS to run on port %s' % DIRECTORY_INSTANCE_PORT
+ </message>
+
+ <call function="'StartDsWithScript'">
+ { 'location' : STAF_REMOTE_HOSTNAME }
+ </call>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ <!--- Check that DS started -->
+ <call function="'isAlive'">
+ { 'noOfLoops' : 5 ,
+ 'noOfMilliSeconds' : 2000 }
+ </call>
+
<call function="'testCase_Postamble'"/>
</sequence>
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/core/core_search_sizelimit.xml b/opendj-sdk/opends/tests/functional-tests/testcases/core/core_search_sizelimit.xml
index 7330753..4bd162c 100644
--- a/opendj-sdk/opends/tests/functional-tests/testcases/core/core_search_sizelimit.xml
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/core/core_search_sizelimit.xml
@@ -64,7 +64,7 @@
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'dsBaseDN' : 'ou=People,o=core tests,dc=example,dc=com' ,
'dsFilter' : 'objectclass=*' ,
- 'extraParams' : '-z 150' }
+ 'extraParams' : '-z 150' }
</call>
@@ -92,7 +92,7 @@
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'dsBaseDN' : 'ou=People,o=core tests,dc=example,dc=com' ,
'dsFilter' : 'objectclass=*' ,
- 'extraParams' : '-z 151' }
+ 'extraParams' : '-z 151' }
</call>
@@ -136,12 +136,11 @@
'Core SSzL4: Check the response of OpenDS when an ldap search request is conducted with a search size limit defined by the server-wide parameter, ds-cfg-size-limit, and the search size limit is exceeded'
</message>
- <call function="'AnonSearchObject'">
+ <call function="'SearchObject'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
'dsBaseDN' : 'ou=People,o=core tests,dc=example,dc=com' ,
- 'dsFilter' : 'objectclass=*' ,
- 'extraParams' : '' }
+ 'dsFilter' : 'objectclass=*' }
</call>
@@ -186,12 +185,11 @@
'Core SSzL6: Check the response of OpenDS when an ldap search request is conducted with a search size limit defined by the server-wide parameter, ds-cfg-size-limit, and the search size limit is not exceeded'
</message>
- <call function="'AnonSearchObject'">
+ <call function="'SearchObject'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
'dsBaseDN' : 'ou=People,o=core tests,dc=example,dc=com' ,
- 'dsFilter' : 'objectclass=*' ,
- 'extraParams' : '' }
+ 'dsFilter' : 'objectclass=*' }
</call>
@@ -241,8 +239,7 @@
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'dsBaseDN' : 'ou=People,o=core tests,dc=example,dc=com' ,
- 'dsFilter' : 'objectclass=*' ,
- 'extraParams' : '' }
+ 'dsFilter' : 'objectclass=*' }
</call>
@@ -263,12 +260,11 @@
'Core SSzL9: Check the response of OpenDS when an ldap search request is conducted with a user search size limit defined by the user-specific parameter, ds-rlim-size-limit, and the search is conducted as a bind to a different user'
</message>
- <call function="'AnonSearchObject'">
+ <call function="'SearchObject'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
'dsBaseDN' : 'ou=People,o=core tests,dc=example,dc=com' ,
- 'dsFilter' : 'objectclass=*' ,
- 'extraParams' : '' }
+ 'dsFilter' : 'objectclass=*' }
</call>
@@ -318,8 +314,7 @@
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'dsBaseDN' : 'ou=People,o=core tests,dc=example,dc=com' ,
- 'dsFilter' : 'objectclass=*' ,
- 'extraParams' : '' }
+ 'dsFilter' : 'objectclass=*' }
</call>
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/core/core_search_timelimit.xml b/opendj-sdk/opends/tests/functional-tests/testcases/core/core_search_timelimit.xml
index 8f9de98..5fc4448 100644
--- a/opendj-sdk/opends/tests/functional-tests/testcases/core/core_search_timelimit.xml
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/core/core_search_timelimit.xml
@@ -136,12 +136,11 @@
'Core STmL4: Check the response of OpenDS when an ldap search request is conducted with a search time limit defined by the server-wide parameter, ds-cfg-time-limit, and the search time limit is exceeded'
</message>
- <call function="'AnonSearchObject'">
+ <call function="'SearchObject'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
'dsBaseDN' : 'o=core tests,dc=example,dc=com' ,
- 'dsFilter' : 'objectclass=*' ,
- 'extraParams' : '' }
+ 'dsFilter' : 'objectclass=*' }
</call>
@@ -186,12 +185,11 @@
'Core STmL6: Check the response of OpenDS when an ldap search request is conducted with a search time limit defined by the server-wide parameter, ds-cfg-time-limit, and the search time limit is not exceeded'
</message>
- <call function="'AnonSearchObject'">
+ <call function="'SearchObject'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
'dsBaseDN' : 'o=core tests,dc=example,dc=com' ,
- 'dsFilter' : 'objectclass=*' ,
- 'extraParams' : '' }
+ 'dsFilter' : 'objectclass=*' }
</call>
@@ -241,8 +239,7 @@
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'dsBaseDN' : 'o=core tests,dc=example,dc=com' ,
- 'dsFilter' : 'objectclass=*' ,
- 'extraParams' : '' }
+ 'dsFilter' : 'objectclass=*' }
</call>
@@ -263,12 +260,11 @@
'Core STmL9: Check the response of OpenDS when an ldap search request is conducted with a user search time limit defined by the user-specific parameter, ds-rlim-time-limit, and the search is conducted as a bind to a different user'
</message>
- <call function="'AnonSearchObject'">
+ <call function="'SearchObject'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
'dsBaseDN' : 'o=core tests,dc=example,dc=com' ,
- 'dsFilter' : 'objectclass=*' ,
- 'extraParams' : '' }
+ 'dsFilter' : 'objectclass=*' }
</call>
@@ -318,8 +314,7 @@
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'dsBaseDN' : 'o=core tests,dc=example,dc=com' ,
- 'dsFilter' : 'objectclass=*' ,
- 'extraParams' : '' }
+ 'dsFilter' : 'objectclass=*' }
</call>
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/runFuncTests.xml b/opendj-sdk/opends/tests/functional-tests/testcases/runFuncTests.xml
index 5a96612..ef71ae7 100755
--- a/opendj-sdk/opends/tests/functional-tests/testcases/runFuncTests.xml
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/runFuncTests.xml
@@ -51,6 +51,9 @@
<import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
file="'%s/security.xml' % (TESTS_FUNCTIONS_DIR)" />
+
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/topology.xml' % (TESTS_FUNCTIONS_DIR)" />
<!-- Load in any standard python libraries -->
<script>
@@ -96,11 +99,11 @@
CurrentTestPath={}
</script>
- <!--- The Functional Tests -->
+ <!--- The Functional Tests -->
<import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
file="'%s/testcases/setup/setup.xml' % (TESTS_DIR)" />
<call function="'main_setup'" />
-
+
<import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
file="'%s/testcases/quickstart/quickstart.xml' % (TESTS_DIR)" />
<call function="'main_quickstart'" />
@@ -124,11 +127,21 @@
<import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
file="'%s/testcases/schema/schema.xml' % (TESTS_DIR)" />
<call function="'main_schema'" />
+
+ <if expr="not isWindows">
+ <!-- Do not execute Synchronization Test Suite as long as dynamic configuration
+ is not supported. ('dd' not supported in Windows. see 'configureSynchronization' -->
+ <sequence>
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/synchronization/synchronization.xml' % (TESTS_DIR)" />
+ <call function="'main_synchronization'" />
+ </sequence>
+ </if>
<import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
file="'%s/testcases/cleanup/cleanup.xml' % (TESTS_DIR)" />
<call function="'main_cleanup'" />
-
+
</sequence>
</function>
</stax>
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/runTestJob.xml b/opendj-sdk/opends/tests/functional-tests/testcases/runTestJob.xml
index 632cc85..8ec624c 100644
--- a/opendj-sdk/opends/tests/functional-tests/testcases/runTestJob.xml
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/runTestJob.xml
@@ -41,7 +41,7 @@
<job name="'Job: %s %s' % (STAF_REMOTE_HOSTNAME,TEST_OS_STRING) " monitor="1" clearlogs="'Enabled'" logtcstartstop="'Enabled'">
<job-file>'%s/testcases/runFuncTests.xml' % TESTS_DIR</job-file>
- <job-scriptfiles machine="'%s' % STAF_LOCAL_HOSTNAME">['%s/config/config.py' % TESTS_DIR,'%s/python/security.py' % TESTS_SHARED_DIR]</job-scriptfiles>
+ <job-scriptfiles machine="'%s' % STAF_LOCAL_HOSTNAME">['%s/config/config.py' % TESTS_DIR,'%s/python/security.py' % TESTS_SHARED_DIR,'%s/python/synchronization.py' % TESTS_SHARED_DIR ]</job-scriptfiles>
<job-action>
<log>'Started sub-job %s on %s' % (STAXSubJobID,STAF_REMOTE_HOSTNAME)</log>
</job-action>
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/setup/setup.xml b/opendj-sdk/opends/tests/functional-tests/testcases/setup/setup.xml
index adf9ba9..e3e7f74 100755
--- a/opendj-sdk/opends/tests/functional-tests/testcases/setup/setup.xml
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/setup/setup.xml
@@ -36,7 +36,7 @@
<block name="'setup'">
<sequence>
-
+
<!-- Locally delete any existing files from staging area -->
<message>'Delete the temporary staging area'</message>
<call function="'deleteFolder'">
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/synchronization/basic/synchronization_basic.xml b/opendj-sdk/opends/tests/functional-tests/testcases/synchronization/basic/synchronization_basic.xml
new file mode 100644
index 0000000..4b7a5c2
--- /dev/null
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/synchronization/basic/synchronization_basic.xml
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License"). You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ ! Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ ! Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+ <defaultcall function="synchronization_basic"/>
+
+ <function name="synchronization_basic">
+
+ <sequence>
+
+ <block name="'basic'">
+ <!-- Test Suite Block: Synchronization Basic -->
+ <sequence>
+
+ <script>
+ CurrentTestPath['suite']='basic'
+ </script>
+
+ <call function="'testSuite_Preamble'"/>
+
+ <!--- Test Suite information
+ #@TestSuiteName Synchronization Basic Tests
+ #@TestSuitePurpose Verify that the basic operations are synchronized correctly between two serrvers.
+ #@TestSuiteID Basic Tests
+ #@TestSuiteGroup Basic
+ #@TestGroup Synchronization
+ #@TestScript synchronization_basic.xml
+ #@TestHTMLLink http://opends.dev.java.net/
+ -->
+
+
+ <block name="'Block Create DS Topology'">
+ <!-- Create the topology necessary to the test suite -->
+ <sequence>
+
+ <script>
+ basicTopologyFile = '%s/config/synchronization/basic_topology.txt' % TESTS_DIR
+ </script>
+
+ <message>
+ 'Create DS topology as described in %s' % basicTopologyFile
+ </message>
+
+ <call function="'createTopology'">
+ { 'topologyDescFile' : basicTopologyFile }
+ </call>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ </sequence>
+ <!--- End Block Create DS Topology -->
+ </block>
+
+
+ <block name="'Block DS Process Active'">
+ <!-- Start the servers in the topology -->
+ <iterate var="server" in="_topologyServerList">
+ <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>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ </sequence>
+ </iterate>
+ <!--- End Block DS Process Active -->
+ </block>
+
+
+ <block name="'Block Clients'">
+ <!-- Execute the tests -->
+ <sequence>
+
+ <!-- Check that the servers in the topology started -->
+ <iterate var="server" in="_topologyServerList">
+ <!--- 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>
+ </iterate>
+
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/synchronization/basic/synchronization_basic_setup.xml' % (TESTS_DIR)"/>
+ <call function="'synchronization_basic_setup'" />
+
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/synchronization/basic/synchronization_basic_bob.xml' % (TESTS_DIR)"/>
+ <call function="'synchronization_basic_bob'" />
+
+ </sequence>
+ <!--- End Block Clients -->
+ </block>
+
+
+ <block name="'Block DS Process Stop'">
+ <!-- Stop the servers in the topology -->
+ <iterate var="server" in="_topologyServerList">
+ <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>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ </sequence>
+ </iterate>
+ <!--- End Block DS Process Stop -->
+ </block>
+
+
+ <block name="'Block Remove DS Topology'">
+ <!-- Remove the topology created for the test suite -->
+ <sequence>
+
+ <message>
+ '(NOT IMPLEMENTED YET) Remove DS topology created for the Synchronization Basic Test Suite'
+ </message>
+
+ <call function="'removeTopology'"/>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ </sequence>
+ <!-- End Block Remove DS Topology-->
+ </block>
+
+
+ <call function="'testSuite_Postamble'"/>
+
+ </sequence>
+ <!-- End Test Suite Block: Synchronization Basic -->
+ </block>
+
+ </sequence>
+
+ </function>
+
+</stax>
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/synchronization/basic/synchronization_basic_bob.xml b/opendj-sdk/opends/tests/functional-tests/testcases/synchronization/basic/synchronization_basic_bob.xml
new file mode 100644
index 0000000..27047e6
--- /dev/null
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/synchronization/basic/synchronization_basic_bob.xml
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License"). You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ ! Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ ! Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+ <defaultcall function="synchronization_basic_bob"/>
+
+ <function name="synchronization_basic_bob">
+
+ <sequence>
+
+ <!--- Test Case information
+ #@TestMarker Synchronization Basic Tests
+ #@TestName Synchronization: Basic: Add Entry
+ #@TestID Add Entry
+ #@TestPurpose Check that an entry add is well propagated by synchronization.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Synchronization: Basic: Add Entry'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Synchronization: Basic: Add Entry. Check that an added entry is well propagated by synchronization.'
+ </message>
+
+ <call function="'addEntry'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname(),
+ 'dsInstancePort' : server1.getPort(),
+ 'dsInstanceDn' : server1.getRootDn(),
+ 'dsInstancePswd' : server1.getRootPwd(),
+ 'entryToBeAdded' : '%s/synchronization_add_root_suffix.ldif' % clientDataDir }
+ </call>
+
+ <call function="'checktestRC'">
+ { 'returncode' : RC,
+ 'result' : STAXResult }
+ </call>
+
+
+ <call function="'SearchObject'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server2.getHostname() ,
+ 'dsInstancePort' : server2.getPort() ,
+ 'dsInstanceDn' : server2.getRootDn() ,
+ 'dsInstancePswd' : server2.getRootPwd() ,
+ 'dsBaseDN' : synchroSuffix ,
+ 'dsFilter' : 'objectclass=*' }
+ </call>
+
+ <call function="'checktestRC'">
+ { 'returncode' : RC,
+ 'result' : STAXResult,
+ 'expected' : 0 }
+ </call>
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+ <!--- Test Case information
+ #@TestMarker Synchronization Basic Tests
+ #@TestName Synchronization: Basic: Modify Entry
+ #@TestID Modify Entry
+ #@TestPurpose Check that an entry modify is well propagated by synchronization.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Synchronization: Basic: Modify Entry'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Synchronization: Basic: Modify Entry. Check that an entry modify is well propagated by synchronization.'
+ </message>
+
+ <call function="'addEntry'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname(),
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'entryToBeAdded' : '%s/synchronization_add_single.ldif' % clientDataDir }
+ </call>
+
+ <call function="'checktestRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+
+ <call function="'modifyEntry'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'entryToBeModified' : '%s/synchronization_mod.ldif' % clientDataDir }
+ </call>
+
+ <call function="'checktestRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+
+ <call function="'SearchObject'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server2.getHostname() ,
+ 'dsInstancePort' : server2.getPort() ,
+ 'dsInstanceDn' : server2.getRootDn() ,
+ 'dsInstancePswd' : server2.getRootPwd() ,
+ 'dsBaseDN' : entryDn,
+ 'dsFilter' : '%s=%s' % (attr_type,attr_value) }
+ </call>
+
+ <call function="'checktestRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult ,
+ 'expected' : 0 }
+ </call>
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+ <!--- Test Case information
+ #@TestMarker Synchronization Basic Tests
+ #@TestName Synchronization: Basic: Delete Entry
+ #@TestID Delete Entry
+ #@TestPurpose Check that an entry delete is well propagated by synchronization.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Synchronization: Basic: Delete Entry'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Synchronization: Basic: Delete Entry. Check that an entry delete is well propagated by synchronization.'
+ </message>
+
+ <call function="'DeleteEntry'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsBaseDN' : entryDn }
+ </call>
+
+ <call function="'checktestRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+
+ <call function="'SearchObject'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server2.getHostname() ,
+ 'dsInstancePort' : server2.getPort() ,
+ 'dsInstanceDn' : server2.getRootDn() ,
+ 'dsInstancePswd' : server2.getRootPwd() ,
+ 'dsBaseDN' : entryDn,
+ 'dsFilter' : 'objectclass=*' }
+ </call>
+
+ <call function="'checktestRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult ,
+ 'expected' : 32 }
+ </call>
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+ <call function="'testSuite_Postamble'"/>
+
+
+ </sequence>
+
+ </function>
+
+</stax>
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/synchronization/basic/synchronization_basic_setup.xml b/opendj-sdk/opends/tests/functional-tests/testcases/synchronization/basic/synchronization_basic_setup.xml
new file mode 100644
index 0000000..f540013
--- /dev/null
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/synchronization/basic/synchronization_basic_setup.xml
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License"). You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ ! Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ ! Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+ <defaultcall function="synchronization_basic_setup"/>
+
+ <function name="synchronization_basic_setup">
+
+ <sequence>
+
+ <!--- Test Case information
+ #@TestMarker Synchronization Basic Tests
+ #@TestName Synchronization: Basic: Setup
+ #@TestID Setup
+ #@TestPurpose Setup the client for the test suite.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Synchronization: Basic: Setup'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <!--- Setup the client for the Basic test suite -->
+ <message>
+ 'Synchronization: Basic: Setup. Get client ready for Basic tests.'
+ </message>
+
+
+ <script>
+ client = _topologyServerList[0]
+ clientHost = client.getHostname()
+ clientPath = '%s/%s' % (client.getDir(),OPENDSNAME)
+ clientDataDir = '%s/functional-tests/shared/data' % client.getDir()
+
+ server1 = _topologyServerList[0]
+ server2 = _topologyServerList[1]
+
+ synchroSuffix = server1.getSynchronizedSuffixList()[0].getSuffixDn()
+ entryDn = 'uid=scarter,%s' % synchroSuffix
+ mod_type = 'replace'
+ attr_type = 'roomnumber'
+ attr_value = '1111'
+ </script>
+
+
+
+ <script>
+ filename = 'synchronization_add_root_suffix.ldif'
+ filePath = '%s/%s' % (TMP_DATA_DIR,filename)
+ write_synchronization_add_root_suffix_ldif_file(filePath, synchroSuffix)
+ </script>
+
+ <!-- Copy the synchronization_add_root_suffix ldif to client host -->
+ <message>
+ 'Copy %s file from %s to %s' % (filename,TMP_DATA_DIR,clientDataDir)
+ </message>
+ <call function="'copyFile'">
+ { 'srcfile' : filePath,
+ 'destfile' : '%s/%s' % (clientDataDir,filename),
+ 'remotehost' : client.getHostname() }
+ </call>
+
+
+ <script>
+ filename = 'synchronization_add_single.ldif'
+ filePath = '%s/%s' % (TMP_DATA_DIR,filename)
+ write_synchronization_add_single_ldif_file(filePath, synchroSuffix)
+ </script>
+
+ <!-- Copy the synchronization_add_single ldif to client host -->
+ <message>
+ 'Copy %s file from %s to %s' % (filename,TMP_DATA_DIR,clientDataDir)
+ </message>
+ <call function="'copyFile'">
+ { 'srcfile' : filePath,
+ 'destfile' : '%s/%s' % (clientDataDir,filename),
+ 'remotehost' : client.getHostname() }
+ </call>
+
+
+ <script>
+ filename = 'synchronization_add_multiple.ldif'
+ filePath = '%s/%s' % (TMP_DATA_DIR,filename)
+ write_synchronization_add_multiple_ldif_file(filePath, synchroSuffix)
+ </script>
+
+ <!-- Copy the synchronization_add_multiple ldif to client host -->
+ <message>
+ 'Copy %s file from %s to %s' % (filename,TMP_DATA_DIR,clientDataDir)
+ </message>
+ <call function="'copyFile'">
+ { 'srcfile' : filePath,
+ 'destfile' : '%s/%s' % (clientDataDir,filename),
+ 'remotehost' : client.getHostname() }
+ </call>
+
+
+
+ <script>
+ filename = 'synchronization_mod.ldif'
+ filePath = '%s/%s' % (TMP_DATA_DIR,filename)
+ write_synchronization_mod_ldif_file(filePath, entryDn, mod_type, attr_type, attr_value)
+ </script>
+
+ <!-- Copy the synchronization_mod ldif to client host -->
+ <message>
+ 'Copy %s file from %s to %s' % (filename,TMP_DATA_DIR,clientDataDir)
+ </message>
+ <call function="'copyFile'">
+ { 'srcfile' : filePath,
+ 'destfile' : '%s/%s' % (clientDataDir,filename),
+ 'remotehost' : client.getHostname() }
+ </call>
+
+
+
+
+ <call function="'checktestRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+ </sequence>
+
+ </function>
+
+</stax>
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/synchronization/synchronization.xml b/opendj-sdk/opends/tests/functional-tests/testcases/synchronization/synchronization.xml
new file mode 100755
index 0000000..01c97a8
--- /dev/null
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/synchronization/synchronization.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License"). You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ ! Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ ! Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+ <defaultcall function="main_synchronization"/>
+
+ <function name="main_synchronization">
+
+ <sequence>
+
+ <block name="'synchronization'">
+
+ <sequence>
+
+ <script>
+ CurrentTestPath['group']='synchronization'
+ </script>
+
+ <call function="'testGroup_Preamble'"/>
+
+
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/synchronization/basic/synchronization_basic.xml' % (TESTS_DIR)"/>
+ <call function="'synchronization_basic'" />
+
+
+
+ <call function="'testGroup_Postamble'"/>
+
+ </sequence>
+
+ </block>
+
+ </sequence>
+
+ </function>
+
+</stax>
--
Gitblit v1.10.0