opends/tests/functional-tests/shared/functions/stafcmd.xml
@@ -263,7 +263,9 @@ name of target host </function-required-arg> </function-map-args> <sequence> <stafcmd name="'STAF Command: Get Folder Attributes'"> <location>'%s' % (hostname)</location> <service>'fs'</service> @@ -297,11 +299,91 @@ cmdRC=RC cmdResult=STAFResult </script> <call function="'checkRC'"> { 'returncode' : cmdRC , 'result' : cmdResult } </call> <return>cmdRC</return> </sequence> </function> <function name="CreateFolder"> <function-prolog> This function creates a folder </function-prolog> <function-map-args> <function-required-arg name="hostname"> name of target host </function-required-arg> <function-required-arg name="foldername"> name of folder to be deleted </function-required-arg> </function-map-args> <sequence> <stafcmd name="'STAF Command: Create Folder'"> <location>'%s' % (hostname)</location> <service>'fs'</service> <request> 'CREATE DIRECTORY %s FULLPATH' % foldername </request> </stafcmd> <script> cmdRC=RC cmdResult=STAFResult </script> <call function="'checkRC'"> { 'returncode' : cmdRC , 'result' : cmdResult } </call> <return>cmdRC</return> </sequence> </function> <function name="queryLogs"> <function-prolog> Queries the staf logs from startfrom point </function-prolog> <function-map-args> <function-required-arg name="hostname"> name of target host </function-required-arg> <function-required-arg name="logname"> name of log to query </function-required-arg> <function-required-arg name="startfrom"> timestamp to start logging </function-required-arg> <function-required-arg name="endat"> timestamp to end logging </function-required-arg> </function-map-args> <sequence> <stafcmd name="'STAF Command: Log Query for Test Case Log.'"> <location>'%s' % (hostname)</location> <service>'log'</service> <request>'QUERY ALL MACHINE %s LOGNAME %s FROM %s TO %s' % (hostname,logname,startfrom,endat)</request> </stafcmd> </sequence> </function> </stax> opends/tests/functional-tests/shared/functions/utils.xml
@@ -316,7 +316,28 @@ </function-prolog> <function-no-args /> <sequence> <message>'Enter test suite preamble'</message> <!-- Take the values from the current test path --> <script> if not CurrentTestPath.has_key('group'): CurrentTestPath['group']='unknown-group' if not CurrentTestPath.has_key('suite'): CurrentTestPath['suite']='unknown-suite' ThisGroupName=CurrentTestPath['group'] ThisSuiteName=CurrentTestPath['suite'] </script> <!-- Start time of test suite --> <script> TestSuiteStartTime=strftime("%Y%m%d@%H:%M:%S",localtime()) </script> <message> '### %s/%s suite preamble ###' % (ThisGroupName,ThisSuiteName) </message> </sequence> </function> @@ -326,7 +347,50 @@ </function-prolog> <function-no-args /> <sequence> <message>'Enter test suite postamble'</message> <!-- Take the values from the current test path --> <script> if CurrentTestPath.has_key('suite'): ThisSuiteName=CurrentTestPath['suite'] else: ThisSuiteName='unknown-suite' if CurrentTestPath.has_key('group'): ThisGroupName=CurrentTestPath['group'] else: ThisGroupName='unknown-group' </script> <message> '### %s/%s suite postamble ###' % (ThisGroupName,ThisSuiteName) </message> <!-- Start time of test suite --> <script> TestSuiteEndTime=strftime("%Y%m%d@%H:%M:%S",localtime()) </script> <!-- Format the test group and suite names to create folder --> <script> FormattedTestcase=format_testcase() FormattedTestgroup=FormattedTestcase.group(ThisGroupName) FormattedTestsuite=FormattedTestcase.suite(ThisSuiteName) TestLogDir= '%s/%s' % (LogDir,FormattedTestgroup) TestLogFile='%s/%s' % (TestLogDir,FormattedTestsuite) </script> <call function="'WriteLogsForTestCase'"> { 'starttime' : TestSuiteStartTime, 'endtime' : TestSuiteEndTime, 'tofile' : TestLogFile } </call> <script> if CurrentTestPath.has_key('suite'): del CurrentTestPath['suite'] </script> </sequence> </function> @@ -336,7 +400,17 @@ </function-prolog> <function-no-args /> <sequence> <message>'Enter test group postamble'</message> <!-- Take the values from the current test path --> <script> if not CurrentTestPath.has_key('group'): CurrentTestPath['group']='unknown-group' ThisGroupName=CurrentTestPath['group'] </script> <message>'### %s group preamble ###' % ThisGroupName</message> </sequence> </function> @@ -346,7 +420,108 @@ </function-prolog> <function-no-args /> <sequence> <message>'Enter test group postamble'</message> <script> if CurrentTestPath.has_key('group'): ThisGroupName=CurrentTestPath['group'] else: ThisGroupName='unknown-group' </script> <message>'### %s group postamble ###' % ThisGroupName</message> <script> if CurrentTestPath.has_key('group'): del CurrentTestPath['group'] </script> </sequence> </function> <function name="WriteLogsForTestCase"> <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-map-args> <sequence> <call function="'queryLogs'"> { 'hostname' : STAXServiceMachine, 'logname' : 'STAX_Job_%s_User' % STAXJobID, 'startfrom' : starttime, 'endat' : endtime } </call> <call function="'WriteLogs'"> { 'queryresult' : STAFResult, 'logfile' : tofile } </call> </sequence> </function> <function name="WriteLogs"> <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-map-args> <sequence> <message>'Creating test log %s' % logfile</message> <script> NewLogDir=posixpath.dirname(logfile) </script> <call function="'CreateFolder'"> { 'hostname' : STAXServiceMachine, 'foldername' : NewLogDir } </call> <script> testlogfh=open(logfile,'w') </script> <message>'Writing query result'</message> <iterate var="element" in="queryresult"> <script> level=element['level'] message=element['message'] timestamp=element['timestamp'] testlogfh.write('%s %s %s\n' % (timestamp,level,message)) </script> </iterate> <script>testlogfh.close()</script> </sequence> </function> </stax> opends/tests/functional-tests/shared/python/common.py
New file @@ -0,0 +1,48 @@ #!/usr/bin/python # 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 # information: # Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Portions Copyright 2007 Sun Microsystems, Inc. __version__ = "$Revision$" # $Source$ # public symbols __all__ = [ "format_testcase" ] class format_testcase: "Format the Test name objects" def group(self,string): self.group=string.lower() self.group=self.group.strip() return '%s' % self.group def suite(self,string): self.suite=string.lower() self.suite=self.suite.strip() self.suite=self.suite.replace(' ','-') return '%s' % self.suite def name(self,string): self.name=string.strip() self.name=self.name.replace(' ','-') return '%s' % self.name opends/tests/functional-tests/shared/python/security.py
@@ -1,4 +1,34 @@ #!/usr/bin/python # 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 # information: # Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Portions Copyright 2006-2007 Sun Microsystems, Inc. __version__ = "$Revision$" # $Source$ # public symbols __all__ = [ "write_ldaps_ldif_file" ] def write_ldaps_ldif_file(path, port): ldif_file = open(path + "/ldaps_port.ldif","w") opends/tests/functional-tests/testcases/backends/backends.xml
@@ -33,6 +33,10 @@ <sequence> <script> CurrentTestPath['group']='backends' </script> <call function="'testGroup_Preamble'"/> <import machine="'%s' % (STAF_LOCAL_HOSTNAME)" opends/tests/functional-tests/testcases/backends/backendsetup.xml
@@ -34,6 +34,10 @@ <sequence> <script> CurrentTestPath['suite']='setup' </script> <call function="'testSuite_Preamble'"/> <!--- Test Suite information opends/tests/functional-tests/testcases/backends/backup-tasks.xml
@@ -34,6 +34,10 @@ <sequence> <script> CurrentTestPath['suite']='backup-tasks' </script> <call function="'testSuite_Preamble'"/> <!--- Start DS --> opends/tests/functional-tests/testcases/backends/backup.xml
@@ -34,6 +34,10 @@ <sequence> <script> CurrentTestPath['suite']='backup' </script> <call function="'testSuite_Preamble'"/> <!--- Test Suite information opends/tests/functional-tests/testcases/backends/export-tasks.xml
@@ -34,6 +34,10 @@ <sequence> <script> CurrentTestPath['suite']='export-tasks' </script> <call function="'testSuite_Preamble'"/> <!--- Start DS --> opends/tests/functional-tests/testcases/backends/export.xml
@@ -34,6 +34,10 @@ <sequence> <script> CurrentTestPath['suite']='export' </script> <call function="'testSuite_Preamble'"/> <!--- Test Suite information opends/tests/functional-tests/testcases/backends/import-tasks.xml
@@ -34,6 +34,10 @@ <sequence> <script> CurrentTestPath['suite']='import-tasks' </script> <call function="'testSuite_Preamble'"/> <parallel> opends/tests/functional-tests/testcases/backends/import.xml
@@ -34,6 +34,10 @@ <sequence> <script> CurrentTestPath['suite']='import' </script> <call function="'testSuite_Preamble'"/> <!--- Test Suite information opends/tests/functional-tests/testcases/backends/restore-tasks.xml
@@ -34,6 +34,10 @@ <sequence> <script> CurrentTestPath['suite']='restore-tasks' </script> <call function="'testSuite_Preamble'"/> <!--- Test Suite information opends/tests/functional-tests/testcases/backends/restore.xml
@@ -34,6 +34,10 @@ <sequence> <script> CurrentTestPath['suite']='restore' </script> <call function="'testSuite_Preamble'"/> <!--- Test Suite information opends/tests/functional-tests/testcases/core/core.xml
@@ -33,6 +33,10 @@ <sequence> <script> CurrentTestPath['group']='core' </script> <call function="'testGroup_Preamble'"/> <parallel> opends/tests/functional-tests/testcases/core/core_entry_cache.xml
@@ -33,6 +33,10 @@ <sequence> <script> CurrentTestPath['suite']='entry-cache' </script> <call function="'testSuite_Preamble'"/> <!--- Check that DS started --> opends/tests/functional-tests/testcases/core/core_search_sizelimit.xml
@@ -33,6 +33,10 @@ <sequence> <script> CurrentTestPath['suite']='search-sizelimit' </script> <call function="'testSuite_Preamble'"/> <!--- Check that DS started --> opends/tests/functional-tests/testcases/core/core_search_timelimit.xml
@@ -33,6 +33,10 @@ <sequence> <script> CurrentTestPath['suite']='search-timelimit' </script> <call function="'testSuite_Preamble'"/> <!--- Check that DS started --> opends/tests/functional-tests/testcases/core/core_setup.xml
@@ -33,6 +33,10 @@ <sequence> <script> CurrentTestPath['suite']='setup' </script> <call function="'testSuite_Preamble'"/> <!--- Check that DS started --> opends/tests/functional-tests/testcases/core/core_tf_filters.xml
@@ -33,6 +33,10 @@ <sequence> <script> CurrentTestPath['suite']='filters' </script> <call function="'testSuite_Preamble'"/> <!--- Check that DS started --> opends/tests/functional-tests/testcases/core/core_version_report.xml
@@ -33,6 +33,10 @@ <sequence> <script> CurrentTestPath['suite']='version-report' </script> <call function="'testSuite_Preamble'"/> <!--- Check that DS started --> opends/tests/functional-tests/testcases/quickstart/quickstart.xml
@@ -33,8 +33,6 @@ <sequence> <call function="'testGroup_Preamble'"/> <parallel> <block name="'Block DS Process Active'"> @@ -63,18 +61,12 @@ <sequence> <call function="'testSuite_Preamble'"/> <!--- Check that DS started --> <call function="'isAlive'"> { 'noOfLoops' : 5 , 'noOfMilliSeconds' : 2000 } </call> <!--- Test Case : Add Quickstart Entries --> <testcase name="'Quickstart: Add : Quick Start Entries'"> <sequence> <call function="'testCase_Preamble'"/> <message> 'Quickstart: Adding quickstart entries' </message> @@ -87,13 +79,10 @@ 'entryToBeAdded' : '%s/quickstart/quickstart.ldif' % STAGED_DATA_DIR } </call> <call function="'checktestRC'"> <call function="'checkRC'"> { 'returncode' : RC , 'result' : STAXResult } </call> <call function="'testCase_Postamble'"/> </sequence> </testcase> <!--- Stop DS --> <sequence> @@ -111,8 +100,6 @@ </call> </sequence> <call function="'testSuite_Postamble'"/> </sequence> <!--- End Block Clients --> @@ -120,8 +107,6 @@ </parallel> <call function="'testGroup_Postamble'"/> </sequence> </function> opends/tests/functional-tests/testcases/runFuncTests.xml
@@ -33,9 +33,7 @@ <sequence> <!--- Import all the shared libraries may be we should have a loadlibs.xml to load all the libs --> <!--- Import all the shared xml libraries --> <import machine="'%s' % (STAF_LOCAL_HOSTNAME)" file="'%s/utils.xml' % (TESTS_FUNCTIONS_DIR)" /> @@ -51,13 +49,27 @@ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)" file="'%s/security.xml' % (TESTS_FUNCTIONS_DIR)" /> <!-- Load in any standard python libraries --> <script> import re import posixpath import sys </script> <!-- Load in any standard python functions --> <script> from time import localtime,strftime </script> <!-- Resolve any OS related variables --> <call function="'setOSvariables'"> { 'hostname' : STAF_REMOTE_HOSTNAME } </call> <!-- XXXX this needs some cleanup XXXX --> <script> import re STAXLogMessage = 1 LogDir='%s' % TMPDIR SRCFILE = '%s/%s' % (ZIPPATH,ZIPNAME) DSTFILE = '%s/%s' % (TMPDIR,ZIPNAME) OPENDS_BINPATH = '%s/%s/bin' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME) @@ -70,6 +82,17 @@ fileExt='' </script> <!-- Load in the local shared python objects from libraries --> <script> sys.path.append("%s/python" % TESTS_SHARED_DIR ) from common import * </script> <!-- Initialize any global variables --> <script> CurrentTestPath={} </script> <!--- The Functional Tests --> <import machine="'%s' % (STAF_LOCAL_HOSTNAME)" file="'%s/testcases/setup/setup.xml' % (TESTS_DIR)" /> opends/tests/functional-tests/testcases/schema/schema.xml
@@ -33,6 +33,10 @@ <sequence> <script> CurrentTestPath['group']='schema' </script> <call function="'testGroup_Preamble'"/> <parallel> opends/tests/functional-tests/testcases/schema/schema_rfc_tests.xml
@@ -33,6 +33,10 @@ <sequence> <script> CurrentTestPath['suite']='rfc' </script> <call function="'testSuite_Preamble'"/> <!--- Check that DS started --> @@ -453,8 +457,11 @@ 'result' : STAXResult , 'expected' : 65 } </call> <call function="'testCase_Postamble'"/> </sequence> </testcase> <!--- Test Case : Schema RFC 2307 --> opends/tests/functional-tests/testcases/schema/schema_setup.xml
@@ -33,6 +33,10 @@ <sequence> <script> CurrentTestPath['suite']='setup' </script> <call function="'testSuite_Preamble'"/> <!--- Check that DS started --> opends/tests/functional-tests/testcases/security/account_activation/security_account_activation.xml
@@ -32,6 +32,10 @@ <function name="security_account_activation"> <sequence> <script> CurrentTestPath['suite']='account-activation' </script> <call function="'testSuite_Preamble'"/> opends/tests/functional-tests/testcases/security/account_activation/security_account_expiration.xml
@@ -36,6 +36,7 @@ <!--- Test case: User Bind Before Deactivation --> <testcase name="'Security: Acct Exp: Preamble'"> <sequence> <call function="'testCase_Preamble'"/> <message> 'Security: Account Expiration: Preamble - Checking User Bind Before Expiration' </message> @@ -54,12 +55,14 @@ { 'returncode' : RC , 'result' : STAXResult } </call> <call function="'testCase_Postamble'"/> </sequence> </testcase> <!--- Test Case : Admin Expire User--> <testcase name="'Security: Acct Exp: Admin Expire User'"> <sequence> <call function="'testCase_Preamble'"/> <message> 'Security: Account Expiration Admin Expiring User' </message> @@ -76,12 +79,14 @@ { 'returncode' : RC , 'result' : STAXResult } </call> <call function="'testCase_Postamble'"/> </sequence> </testcase> <!--- Test Case : User Bind After Expiration--> <testcase name="'Security: Acct Exp: User Bind After Expiration'"> <sequence> <call function="'testCase_Preamble'"/> <message> 'Security: Acct Exp: User Binding After Expiration' </message> @@ -101,11 +106,13 @@ 'result' : STAXResult , 'expected' : 1 } </call> <call function="'testCase_Postamble'"/> </sequence> </testcase> <testcase name="'Security: Acct Exp: Admin Expire User in Future'"> <sequence> <call function="'testCase_Preamble'"/> <message> 'Security: Account Expiration Admin Expiring User in Future' </message> @@ -122,12 +129,14 @@ { 'returncode' : RC , 'result' : STAXResult } </call> <call function="'testCase_Postamble'"/> </sequence> </testcase> <!--- Test Case : User Bind After Expiration--> <testcase name="'Security: Acct Exp: User Bind With Future Expiration'"> <sequence> <call function="'testCase_Preamble'"/> <message> 'Security: Acct Exp: User Binding With Future Expiration' </message> @@ -146,12 +155,14 @@ { 'returncode' : RC , 'result' : STAXResult } </call> <call function="'testCase_Postamble'"/> </sequence> </testcase> <!--- Test case: Admin Reactivate User --> <testcase name="'Security: Acct Exp: Postamble'"> <sequence> <call function="'testCase_Preamble'"/> <message> 'Security: Account Expiration: Postamble Step 1. Admin Removing User Expiration' </message> @@ -187,7 +198,10 @@ 'result' : STAXResult } </call> <call function="'testCase_Postamble'"/> </sequence> </testcase> </sequence> opends/tests/functional-tests/testcases/security/auth_pwd_syntax/security_auth_pwd_syntax.xml
@@ -33,6 +33,10 @@ <sequence> <script> CurrentTestPath['suite']='auth-pwd-syntax' </script> <call function="'testSuite_Preamble'"/> <parallel> opends/tests/functional-tests/testcases/security/bind_no_pwd/security_bind_no_pwd.xml
@@ -33,9 +33,14 @@ <sequence> <script> CurrentTestPath['suite']='bind-no-pwd' </script> <call function="'testSuite_Preamble'"/> <parallel> <block name="'Block DS Process Active'"> <!--- Start DS --> @@ -97,8 +102,6 @@ </call> </sequence> <return>RC</return> </sequence> <!--- End Block Clients --> opends/tests/functional-tests/testcases/security/jks/security_jks.xml
@@ -33,9 +33,14 @@ <sequence> <script> CurrentTestPath['suite']='jks' </script> <call function="'testSuite_Preamble'"/> <parallel> <block name="'Block DS Process Active'"> <!--- Start DS --> @@ -95,9 +100,8 @@ { 'returncode' : RC , 'result' : STAXResult } </call> </sequence> <return>RC</return> </sequence> </sequence> opends/tests/functional-tests/testcases/security/pkcs12/security_pkcs12.xml
@@ -33,9 +33,14 @@ <sequence> <script> CurrentTestPath['suite']='pkcs12' </script> <call function="'testSuite_Preamble'"/> <parallel> <block name="'Block DS Process Active'"> <!--- Start DS --> opends/tests/functional-tests/testcases/security/pwd_policy/security_pwd_policy.xml
@@ -33,9 +33,14 @@ <sequence> <script> CurrentTestPath['suite']='pwd-policy' </script> <call function="'testSuite_Preamble'"/> <parallel> <block name="'Block DS Process Active'"> <!--- Start DS --> @@ -137,8 +142,6 @@ </call> </sequence> <return>RC</return> </sequence> <!--- End Block Clients --> @@ -147,6 +150,7 @@ </parallel> <call function="'testSuite_Postamble'"/> </sequence> </function> opends/tests/functional-tests/testcases/security/pwd_policy/security_teardown_pwd_policy.xml
@@ -51,7 +51,7 @@ 'extraParams' : '-x'} </call> <call function="'checkRC'"> <call function="'checktestRC'"> { 'returncode' : RC , 'result' : STAXResult } </call> opends/tests/functional-tests/testcases/security/pwd_policy_root/security_pwd_policy_root.xml
@@ -33,8 +33,14 @@ <sequence> <script> CurrentTestPath['suite']='pwd-policy-root' </script> <call function="'testSuite_Preamble'"/> <parallel> <block name="'Block DS Process Active'"> <!--- Start DS --> @@ -88,8 +94,6 @@ </call> </sequence> <return>RC</return> </sequence> <!--- End Block Clients --> opends/tests/functional-tests/testcases/security/pwd_policy_root/security_root_user_tests.xml
@@ -123,6 +123,7 @@ <call function="'testCase_Postamble'"/> </sequence> </testcase> </sequence> opends/tests/functional-tests/testcases/security/pwd_storage/security_pwd_storage.xml
@@ -33,9 +33,14 @@ <sequence> <script> CurrentTestPath['suite']='pwd-storage' </script> <call function="'testSuite_Preamble'"/> <parallel> <block name="'Block DS Process Active'"> <!--- Start DS --> @@ -137,8 +142,6 @@ </call> </sequence> <return>RC</return> </sequence> <!--- End Block Clients --> @@ -147,6 +150,7 @@ </parallel> <call function="'testSuite_Postamble'"/> </sequence> </function> opends/tests/functional-tests/testcases/security/pwd_validator/security_pwd_validator.xml
@@ -33,9 +33,14 @@ <sequence> <script> CurrentTestPath['suite']='pwd-validator' </script> <call function="'testSuite_Preamble'"/> <parallel> <block name="'Block DS Process Active'"> <!--- Start DS --> opends/tests/functional-tests/testcases/security/sasl/security_sasl.xml
@@ -33,9 +33,14 @@ <sequence> <script> CurrentTestPath['suite']='sasl' </script> <call function="'testSuite_Preamble'"/> <parallel> <block name="'Block DS Process Active'"> <!--- Start DS --> @@ -109,8 +114,6 @@ </call> </sequence> <return>RC</return> </sequence> <!--- End Block Clients --> opends/tests/functional-tests/testcases/security/security.xml
@@ -33,6 +33,10 @@ <sequence> <script> CurrentTestPath['group']='security' </script> <call function="'testGroup_Preamble'"/> <import machine="'%s' % (STAF_LOCAL_HOSTNAME)" opends/tests/functional-tests/testcases/security/startTLS/security_startTLS.xml
@@ -33,9 +33,14 @@ <sequence> <script> CurrentTestPath['suite']='startTLS' </script> <call function="'testSuite_Preamble'"/> <parallel> <block name="'Block DS Process Active'"> <!--- Start DS --> @@ -101,8 +106,6 @@ </call> </sequence> <return>RC</return> </sequence> <!--- End Block Clients --> opends/tests/functional-tests/testcases/setup/setup.xml