mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

al_xipe
15.47.2007 3d298aaf5f040a720b1c32fe5c87a292a0950e20
more fixes and refactoring for the backends suite. Some additional error checking in runCommand and some clean up in dsconfig.xml
6 files modified
6381 ■■■■ changed files
opends/tests/functional-tests/shared/functions/dsconfig.xml 1607 ●●●● patch | view | raw | blame | history
opends/tests/functional-tests/shared/functions/utils.xml 7 ●●●● patch | view | raw | blame | history
opends/tests/functional-tests/testcases/backends/backends.xml 54 ●●●● patch | view | raw | blame | history
opends/tests/functional-tests/testcases/backends/backup-tasks.xml 80 ●●●●● patch | view | raw | blame | history
opends/tests/functional-tests/testcases/backends/export-tasks.xml 658 ●●●● patch | view | raw | blame | history
opends/tests/functional-tests/testcases/backends/export.xml 3975 ●●●● patch | view | raw | blame | history
opends/tests/functional-tests/shared/functions/dsconfig.xml
@@ -27,27 +27,24 @@
 ! -->
<stax>
  <function name="_dsconfigCommonArgs">
    <function-prolog>
      This function resolves common dsconfig arguments
    </function-prolog>
    <function-no-args/>
    <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)
      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>
  
  
@@ -57,279 +54,268 @@
      This function modifies a property value using dsconfig
    </function-prolog>
    <function-map-args>
      <function-arg-def name="location" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="location"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Location of target host
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
        <function-arg-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-property name="type" value="filepath" />
      </function-arg-def>
      <function-arg-def name="dsInstanceHost" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="dsInstanceHost" type="optional" default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Directory server hostname or IP address
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
      </function-arg-def>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsInstancePort" type="required">
        <function-arg-description>
          Directory server port number
        </function-arg-description>
        <function-arg-property name="type" value="Port number"/>
        </function-arg-description>
        <function-arg-property name="type" value="Port number" />
      </function-arg-def>
      <function-arg-def name="dsInstanceDn" type="required">
        <function-arg-description>
          Bind DN
        </function-arg-description>
        <function-arg-property name="type" value="DN"/>
      </function-arg-def>
        <function-arg-property name="type" value="DN" />
      </function-arg-def>
      <function-arg-def name="dsInstancePswd" type="required">
        <function-arg-description>
          Bind password
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
      <function-arg-def name="objectName" type="required">
        <function-arg-description>
          Object to modify, e.g. password validator
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="propertyType" type="required">
        <function-arg-description>
          Property type to modify, e.g. validator
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="propertyName" type="required">
        <function-arg-description>
          Property to modify, e.g. enabled
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="attributeName" type="required">
        <function-arg-description>
          Attribute to modify, e.g. minimum-password-length
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="attributeValue" type="optional" default="'none'">
        <function-arg-description>
          New attribute value
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="modifyType" type="optional" default="'set'">
        <function-arg-description>
          The modify type. Default value is set.
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="expectedRC" type="optional" default="0">
        <function-arg-description>
          Expected return code value. Default value is 0
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
    </function-map-args>
    <sequence>
      <!-- Local variables -->
      <script>
        mylocation=location
        STAFCmdParams=''
        STAFCmdParams=''
        STAFCmd=''
        if dsPath:
          dsBinPath='%s/%s' % (dsPath,fileFolder)
          STAFCmd='%s/%s%s' % (dsBinPath,DSCONFIG,fileExt)
        STAFCmdParamsList=[]
        STAFCmdParamsList.append('set-%s-prop ' % (objectName))
        STAFCmdParamsList.append('--%s-name "%s" ' % (propertyType,propertyName))
        if modifyType == 'reset':
            STAFCmdParamsList.append('--%s %s' % (modifyType,attributeName))
        else:
        else:
            STAFCmdParamsList.append('--%s "%s:%s"' % (modifyType,attributeName,attributeValue))
      </script>
      <call function="'_dsconfigCommonArgs'"/>
      <call function="'_dsconfigCommonArgs'" />
      <script>
        STAFCmdParams=' '.join(STAFCmdParamsList)
      </script>
      <message>
        '%s %s' % (STAFCmd, STAFCmdParams)
      </message>
      <process name="'Modify dsconfig object'">
        <location>'%s' % location</location>
        <command>'%s' % STAFCmd</command>
        <parms>'%s' % STAFCmdParams</parms>
        <workdir>'%s' % dsBinPath</workdir>
        <envs>
          ['PATH=/bin:/usr/bin:%s' % dsBinPath]
        </envs>
        <console use="'same'"/>
        <stderr mode="'stdout'"/>
        <returnstdout/>
      </process>
      <call function="'runCommand'">
        { 'name'      : 'Modify dsconfig object',
          'location'  : location,
          'command'   : STAFCmd,
          'arguments' : STAFCmdParams
        }
      </call>
      <script>
        STAXCode=RC
        STAXReason=STAXResult
      </script>
      <return>
        STAXReason
      </return>
    </sequence>
  </function>
  <!-- Get property value using dsconfig -->
  <function name="dsconfigGet">
    <function-prolog>
      This function get a property value using dsconfig
    </function-prolog>
    <function-map-args>
      <function-arg-def name="location" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="location"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Location of target host
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
      <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-property name="type" value="filepath" />
      </function-arg-def>
      <function-arg-def name="dsInstanceHost" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="dsInstanceHost"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Directory server hostname or IP address
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
      </function-arg-def>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsInstancePort" type="required">
        <function-arg-description>
          Directory server port number
        </function-arg-description>
        <function-arg-property name="type" value="Port number"/>
        </function-arg-description>
        <function-arg-property name="type" value="integer" />
      </function-arg-def>
      <function-arg-def name="dsInstanceDn" type="required">
        <function-arg-description>
          Bind DN
        </function-arg-description>
        <function-arg-property name="type" value="DN"/>
      </function-arg-def>
        <function-arg-property name="type" value="DN" />
      </function-arg-def>
      <function-arg-def name="dsInstancePswd" type="required">
        <function-arg-description>
          Bind password
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
      <function-arg-def name="objectName" type="required">
        <function-arg-description>
          Object to get, e.g. password validator. it's used to make the subcommand name get-...-prop
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="propertyType" type="required">
        <function-arg-description>
          Property type to get, e.g. backend. it's used to make the  property type: --backend-name
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="propertyName" type="required">
        <function-arg-description>
          Property to get, e.g. userroot
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="attributeName" type="required">
        <function-arg-description>
          Attribute to get, e.g. minimum-password-length
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <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. ie -M
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
      <function-arg-def name="expectedAttributeValue" type="optional" default="'none'">
        <function-arg-description>
          expected attribute value
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
      <function-arg-def name="expectedRC" type="optional" default="0">
        <function-arg-description>
          Expected return code value. Default value is 0
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
    </function-map-args>
    <sequence>
      <!-- Local variables -->
      <script>
        mylocation=location
        STAFCmdParams=''
        STAFCmdParams=''
        STAFCmd=''
        if dsPath:
          dsBinPath='%s/%s' % (dsPath,fileFolder)
          STAFCmd='%s/%s%s' % (dsBinPath,DSCONFIG,fileExt)
        STAFCmdParamsList=[]
        STAFCmdParamsList.append('get-%s-prop ' % (objectName))
        STAFCmdParamsList.append('--%s-name "%s" -s' % (propertyType,propertyName))
        STAFCmdParamsList.append('--property "%s"' % (attributeName))
        if extraParams:
          STAFCmdParamsList.append('%s' % extraParams)
          STAFCmdParamsList.append(extraParams)
      </script>
      <call function="'_dsconfigCommonArgs'"/>
      
      <call function="'_dsconfigCommonArgs'" />
      <script>
        STAFCmdParams=' '.join(STAFCmdParamsList)
      </script>
@@ -337,48 +323,37 @@
      <message>
        '%s %s' % (STAFCmd, STAFCmdParams)
      </message>
      <process name="'Get dsconfig object'">
        <location>'%s' % location</location>
        <command>'%s' % STAFCmd</command>
        <parms>'%s' % STAFCmdParams</parms>
        <workdir>'%s' % dsBinPath</workdir>
        <envs>
          ['PATH=/bin:/usr/bin:%s' % dsBinPath]
        </envs>
        <console use="'same'"/>
        <stderr mode="'stdout'"/>
        <returnstdout/>
      </process>
      <call function="'runCommand'" >
        { 'name'      : 'Get dsconfig object',
          'location'  : location,
          'command'   : STAFCmd,
          'arguments' : STAFCmdParams
        }
      </call>
      <script>
        STAXCode=RC
        STAXReason=STAXResult[0][1]
      </script>
      <sequence>
        <if expr="expectedAttributeValue == 'none'">
           <call function="'checktestRC'">
           { 'returncode' : STAXCode ,
           'result'     : STAXReason,
           'expected'   : expectedRC }
           </call>
         <else>
             <call function="'checktestString'">
               { 'expectedString'      : expectedAttributeValue ,
                  'returnString'       :  STAXReason}
             </call>
         </else>
        </if>
        </sequence>
        <call function="'checktestRC'">
          { 'returncode' : STAXCode,
            'result'     : STAXReason,
            'expected'   : expectedRC
          }
        </call>
        <else>
          <call function="'checktestString'">
            { 'expectedString'  : expectedAttributeValue,
              'returnString'      :  STAXReason
            }
          </call>
        </else>
      </if>
      <return>
        STAXReason
      </return>
    </sequence>
  </function>
  
  
  <!-- generic wrapper on dsconfig -->
@@ -389,144 +364,130 @@
      This function lists, get or set a list of attributes using dsconfig
    </function-prolog>
    <function-map-args>
      <function-arg-def name="location" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="location"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Location of target host
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
      <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-property name="type" value="filepath" />
      </function-arg-def>
      <function-arg-def name="dsInstanceHost" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="dsInstanceHost" type="optional" default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Directory server hostname or IP address
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
      </function-arg-def>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsInstancePort" type="required">
        <function-arg-description>
          Directory server port number
        </function-arg-description>
        <function-arg-property name="type" value="Port number"/>
        </function-arg-description>
        <function-arg-property name="type" value="Port number" />
      </function-arg-def>
      <function-arg-def name="dsInstanceDn" type="required">
        <function-arg-description>
          Bind DN
        </function-arg-description>
        <function-arg-property name="type" value="DN"/>
      </function-arg-def>
        <function-arg-property name="type" value="DN" />
      </function-arg-def>
      <function-arg-def name="dsInstancePswd" type="required">
        <function-arg-description>
          Bind password
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
      <function-arg-def name="subcommand" type="required">
        <function-arg-description>
          dsconfig subcommand to execute
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="objectType" type="optional">
        <function-arg-description>
          Object type to modify, e.g. backend-name
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="objectName" type="optional">
        <function-arg-description>
          object name  to modify, e.g. userroot
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="optionsString" type="optional">
        <function-arg-description>
          String containing  the dsconfig options.  e.g. --set enabled:true --set key-store-pin:servercert
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
                    
      <function-arg-def name="expectedRC" type="optional" default="0">
      <function-arg-description>
        Expected return code value. Default value is 0
      </function-arg-description>
      <function-arg-property name="type" value="string"/>
    </function-arg-def>
        <function-arg-description>
          Expected return code value. Default value is 0
        </function-arg-description>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
    </function-map-args>
    <sequence>
      <!-- Local variables -->
      <script>
        mylocation=location
        STAFCmdParams=''
        STAFCmdParams=''
        STAFCmd=''
        if dsPath:
          dsBinPath='%s/%s' % (dsPath,fileFolder)
          STAFCmd='%s/%s%s' % (dsBinPath,DSCONFIG,fileExt)
        STAFCmdParamsList=[]
        STAFCmdParamsList.append('%s' % (subcommand))
        STAFCmdParamsList.append(subcommand)
        if objectType:
          STAFCmdParamsList.append('--%s "%s" ' % (objectType,objectName))        
        if optionsString:
          STAFCmdParamsList.append(' %s' % (optionsString))
          STAFCmdParamsList.append(' %s' % optionsString)
      </script>
      <call function="'_dsconfigCommonArgs'"/>
      <call function="'_dsconfigCommonArgs'" />
      <script>
        STAFCmdParams=' '.join(STAFCmdParamsList)
      </script>
      <message>
        '%s %s' % (STAFCmd, STAFCmdParams)
      </message>
      <process name="'execute dsconfig subcommand'">
        <location>'%s' % location</location>
        <command>'%s' % STAFCmd</command>
        <parms>'%s' % STAFCmdParams</parms>
        <workdir>'%s' % dsBinPath</workdir>
        <envs>
          ['PATH=/bin:/usr/bin:%s' % dsBinPath]
        </envs>
        <console use="'same'"/>
        <stderr mode="'stdout'"/>
        <returnstdout/>
      </process>
      <call function="'runCommand'">
        { 'name'      : 'execute dsconfig subcommand',
          'location'  : location,
          'command'   : STAFCmd,
          'arguments' : STAFCmdParams
        }
      </call>
      <script>
        STAXCode=RC
        STAXReason=STAXResult
      </script>
      <call function="'checktestRC'">
        { 'returncode' : STAXCode ,
        { 'returncode' : STAXCode,
          'result'     : STAXReason,
          'expected'   : expectedRC }
      </call>
          'expected'   : expectedRC
        }
      </call>
      <return>
        STAXReason
      </return>
    </sequence>
  </function>   
    
  <!-- Modify password policy using dsconfig -->
@@ -535,345 +496,342 @@
      This function modifies a password policy using dsconfig
    </function-prolog>
    <function-map-args>
      <function-arg-def name="location" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="location"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Location of target host
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
      <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-property name="type" value="filepath" />
      </function-arg-def>
      <function-arg-def name="dsInstanceHost" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="dsInstanceHost"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Directory server hostname or IP address
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
      </function-arg-def>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsInstancePort" type="required">
        <function-arg-description>
          Directory server port number
        </function-arg-description>
        <function-arg-property name="type" value="Port number"/>
        </function-arg-description>
        <function-arg-property name="type" value="Port number" />
      </function-arg-def>
        
      <function-arg-def name="dsInstanceDn" type="required">
        <function-arg-description>
          Bind DN
        </function-arg-description>
        <function-arg-property name="type" value="DN"/>
      </function-arg-def>
        <function-arg-property name="type" value="DN" />
      </function-arg-def>
      <function-arg-def name="dsInstancePswd" type="required">
        <function-arg-description>
          Bind password
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
      <function-arg-def name="propertyName" type="required">
        <function-arg-description>
          Property to modify, e.g. enabled
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="attributeName" type="required">
        <function-arg-description>
          Attribute to modify, e.g. minimum-password-length
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="attributeValue" type="optional" default="'none'">
        <function-arg-description>
          New attribute value
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="modifyType" type="optional" default="'set'">
        <function-arg-description>
          The modify type. Default value is set.
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="expectedRC" type="optional" default="0">
        <function-arg-description>
          Expected return code value. Default value is 0
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
    </function-map-args>
    <sequence>
    <call function="'dsconfigSet'">
      { 'location'               : '%s' % location ,
        'dsPath'                 : '%s' % dsPath ,
        'dsInstanceHost'         : '%s' % dsInstanceHost ,
        'dsInstancePort'         : '%s' % dsInstancePort ,
        'dsInstanceDn'           : '%s' % dsInstanceDn ,
        'dsInstancePswd'         : '%s' % dsInstancePswd ,
        'objectName'             : 'password-policy' ,
        'propertyType'           : 'policy' ,
        'propertyName'           : '%s' % (propertyName) ,
        'attributeName'          : '%s' % (attributeName) ,
        'attributeValue'         : '%s' % (attributeValue) ,
        'modifyType'             : '%s' % (modifyType) ,
        'expectedRC'             : expectedRC }
    </call>
    <call function="'checktestRC'">
      { 'returncode' : STAXCode ,
        'result'     : STAXReason ,
        'expected'   : expectedRC }
    </call>
    <return>
      <call function="'dsconfigSet'">
        { 'location'               : location,
          'dsPath'                 : dsPath,
          'dsInstanceHost'         : dsInstanceHost,
          'dsInstancePort'         : dsInstancePort,
          'dsInstanceDn'           : dsInstanceDn,
          'dsInstancePswd'         : dsInstancePswd,
          'objectName'             : 'password-policy',
          'propertyType'           : 'policy',
          'propertyName'           : propertyName,
          'attributeName'          : attributeName,
          'attributeValue'         : attributeValue,
          'modifyType'             : modifyType,
          'expectedRC'             : expectedRC
        }
      </call>
      <call function="'checktestRC'">
        { 'returncode' : STAXCode,
          'result'     : STAXReason,
          'expected'   : expectedRC
        }
      </call>
      <return>
        STAXReason
    </return>
      </return>
   </sequence>
  </function>
  <!-- Modify password validator using dsconfig -->
  <function name="modifyPwdValidator">
    <function-prolog>
      This function modifies a password validator using dsconfig
    </function-prolog>
    <function-map-args>
      <function-arg-def name="location" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="location"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Location of target host
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
      <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-property name="type" value="filepath" />
      </function-arg-def>
      <function-arg-def name="dsInstanceHost" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="dsInstanceHost"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Directory server hostname or IP address
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
      </function-arg-def>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsInstancePort" type="required">
        <function-arg-description>
          Directory server port number
        </function-arg-description>
        <function-arg-property name="type" value="Port number"/>
        </function-arg-description>
        <function-arg-property name="type" value="Port number" />
      </function-arg-def>
      <function-arg-def name="dsInstanceDn" type="required">
        <function-arg-description>
          Bind DN
        </function-arg-description>
        <function-arg-property name="type" value="DN"/>
      </function-arg-def>
        <function-arg-property name="type" value="DN" />
      </function-arg-def>
      <function-arg-def name="dsInstancePswd" type="required">
        <function-arg-description>
          Bind password
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
      <function-arg-def name="propertyName" type="required">
        <function-arg-description>
          Property to modify, e.g. enabled
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="attributeName" type="required">
        <function-arg-description>
          Attribute to modify, e.g. match-attribute
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="attributeValue" type="optional" default="'none'">
        <function-arg-description>
          New attribute value
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="modifyType" type="optional" default="'set'">
        <function-arg-description>
          The modify type. Default value is set.
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="expectedRC" type="optional" default="0">
        <function-arg-description>
          Expected return code value. Default value is 0
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
    </function-map-args>
    <sequence>
    <call function="'dsconfigSet'">
      { 'location'               : '%s' % location ,
        'dsPath'                 : '%s' % dsPath ,
        'dsInstanceHost'         : '%s' % dsInstanceHost ,
        'dsInstancePort'         : '%s' % dsInstancePort ,
        'dsInstanceDn'           : '%s' % dsInstanceDn ,
        'dsInstancePswd'         : '%s' % dsInstancePswd ,
        'objectName'             : 'password-validator' ,
        'propertyType'           : 'validator' ,
        'propertyName'           : '%s' % (propertyName) ,
        'attributeName'          : '%s' % (attributeName) ,
        'attributeValue'         : '%s' % (attributeValue) ,
        'modifyType'             : '%s' % (modifyType) ,
        'expectedRC'             : expectedRC }
    </call>
    <call function="'checktestRC'">
      { 'returncode' : STAXCode ,
        'result'     : STAXReason ,
        'expected'   : expectedRC }
    </call>
    <return>
      <call function="'dsconfigSet'">
        { 'location'       : location,
          'dsPath'         : dsPath,
          'dsInstanceHost' : dsInstanceHost,
          'dsInstancePort' : dsInstancePort,
          'dsInstanceDn'   : dsInstanceDn,
          'dsInstancePswd' : dsInstancePswd,
          'objectName'     : 'password-validator',
          'propertyType'   : 'validator',
          'propertyName'   : propertyName,
          'attributeName'  : attributeName,
          'attributeValue' : attributeValue,
          'modifyType'     : modifyType,
          'expectedRC'     : expectedRC
        }
      </call>
      <call function="'checktestRC'">
        { 'returncode' : STAXCode,
          'result'     : STAXReason,
          'expected'   : expectedRC
        }
      </call>
      <return>
        STAXReason
    </return>
      </return>
   </sequence>
  </function>
  <!-- Modify password policy using dsconfig -->
  <function name="modifyGlobal">
    <function-prolog>
      This function modifies a global attribute value using dsconfig
    </function-prolog>
    <function-map-args>
      <function-arg-def name="location" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="location"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Location of target host
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
      <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-property name="type" value="filepath" />
      </function-arg-def>
      <function-arg-def name="dsInstanceHost" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="dsInstanceHost"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Directory server hostname or IP address
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
      </function-arg-def>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsInstancePort" type="required">
        <function-arg-description>
          Directory server port number
        </function-arg-description>       
        <function-arg-property name="type" value="Port number"/>
        <function-arg-property name="type" value="integer" />
      </function-arg-def>
      <function-arg-def name="dsInstanceDn" type="required">
        <function-arg-description>
          Bind DN
        </function-arg-description>
        <function-arg-property name="type" value="DN"/>
      </function-arg-def>
        <function-arg-property name="type" value="DN" />
      </function-arg-def>
      <function-arg-def name="dsInstancePswd" type="required">
        <function-arg-description>
          Bind password
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
      <function-arg-def name="attributeName" type="required">
        <function-arg-description>
          Attribute to modify, e.g. bind-with-dn-requires-password
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="attributeValue" type="required">
        <function-arg-description>
          New attribute value
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="expectedRC" type="optional" default="0">
      <function-arg-description>
     Expected return code value. Default value is 0
      </function-arg-description>
      <function-arg-property name="type" value="string"/>
    </function-arg-def>
        <function-arg-description>
          Expected return code value. Default value is 0
        </function-arg-description>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
    </function-map-args>
    <sequence>
      <!-- Local variables -->
      <script>
        mylocation=location
        STAFCmdParams=''    
        STAFCmd=''
        STAFCmd=''
        if dsPath:
          dsBinPath='%s/%s' % (dsPath,fileFolder)
          STAFCmd='%s/%s%s' % (dsBinPath,DSCONFIG,fileExt)
        if attributeValue:
            attributeValue=attributeValue.replace('"','QUOT')
        STAFCmdParamsList=[]
        STAFCmdParamsList.append('set-global-configuration-prop ')
        STAFCmdParamsList.append('--set "%s:%s"' % (attributeName,attributeValue))
      </script>
      <call function="'_dsconfigCommonArgs'"/>
      <call function="'_dsconfigCommonArgs'" />
      <script>
        STAFCmdParams=' '.join(STAFCmdParamsList)
      </script>
      <message>
        '%s %s' % (STAFCmd, STAFCmdParams)
      </message>
      <process name="'Modify dsconfig object'">
        <location>'%s' % location</location>
        <command>'%s' % STAFCmd</command>
        <parms>'%s' % STAFCmdParams</parms>
        <workdir>'%s' % dsBinPath</workdir>
        <envs>
          ['PATH=/bin:/usr/bin:%s' % dsBinPath]
        </envs>
        <console use="'same'"/>
        <stderr mode="'stdout'"/>
        <returnstdout/>
      </process>
      <call function="'runCommand'">
        { 'name'      : 'Modify dsconfig object',
          'location'  : location,
          'command'   : STAFCmd,
          'arguments' : STAFCmdParams
        }
      </call>
      <script>
        STAXCode=RC
        STAXReason=STAXResult
@@ -886,370 +844,368 @@
      <return>
        STAXReason
      </return>
    </sequence>
  </function>
  <!-- Modify identity mapper using dsconfig -->
  <function name="modifyIdentityMapper">
    <function-prolog>
      This function modifies an identity mapper using dsconfig
    </function-prolog>
    <function-map-args>
      <function-arg-def name="location" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="location"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Location of target host
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
      <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-property name="type" value="filepath" />
      </function-arg-def>
      <function-arg-def name="dsInstanceHost" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="dsInstanceHost"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Directory server hostname or IP address
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
      </function-arg-def>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsInstancePort" type="required">
        <function-arg-description>
          Directory server port number
        </function-arg-description>       
        <function-arg-property name="type" value="Port number"/>
        <function-arg-property name="type" value="integer" />
      </function-arg-def>
      <function-arg-def name="dsInstanceDn" type="required">
        <function-arg-description>
          Bind DN
        </function-arg-description>
        <function-arg-property name="type" value="DN"/>
      </function-arg-def>
        <function-arg-property name="type" value="DN" />
      </function-arg-def>
      <function-arg-def name="dsInstancePswd" type="required">
        <function-arg-description>
          Bind password
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
      <function-arg-def name="mapperName" type="required">
        <function-arg-description>
          Mapper to modify, e.g. Exact Match
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="attributeName" type="required">
        <function-arg-description>
          Attribute to modify, e.g. match-attribute
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="attributeValue" type="required">
        <function-arg-description>
          New attribute value
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="modifyType" type="optional" default="'set'">
        <function-arg-description>
          The modify type. Default value is set.
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="expectedRC" type="optional" default="0">
      <function-arg-description>
     Expected return code value. Default value is 0
      </function-arg-description>
      <function-arg-property name="type" value="string"/>
    </function-arg-def>
        <function-arg-description>
          Expected return code value. Default value is 0
        </function-arg-description>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
    </function-map-args>
    <sequence>
    <call function="'dsconfigSet'">
      { 'location'               : '%s' % location ,
        'dsPath'                 : '%s' % dsPath ,
        'dsInstanceHost'         : '%s' % dsInstanceHost ,
        'dsInstancePort'         : '%s' % dsInstancePort ,
        'dsInstanceDn'           : '%s' % dsInstanceDn ,
        'dsInstancePswd'         : '%s' % dsInstancePswd ,
        'objectName'             : 'identity-mapper' ,
        'propertyType'           : 'mapper' ,
        'propertyName'           : '%s' % (mapperName) ,
        'attributeName'          : '%s' % (attributeName) ,
        'attributeValue'         : '%s' % (attributeValue) ,
        'modifyType'             : '%s' % (modifyType) ,
        'expectedRC'             : expectedRC }
    </call>
    <call function="'checktestRC'">
      { 'returncode' : STAXCode ,
        'result'     : STAXReason ,
        'expected'   : expectedRC }
    </call>
    <return>
      <call function="'dsconfigSet'">
        { 'location'               : location,
          'dsPath'                 : dsPath,
          'dsInstanceHost'         : dsInstanceHost,
          'dsInstancePort'         : dsInstancePort,
          'dsInstanceDn'           : dsInstanceDn,
          'dsInstancePswd'         : dsInstancePswd,
          'objectName'             : 'identity-mapper',
          'propertyType'           : 'mapper',
          'propertyName'           : mapperName,
          'attributeName'          : attributeName,
          'attributeValue'         : attributeValue,
          'modifyType'             : modifyType,
          'expectedRC'             : expectedRC
        }
      </call>
      <call function="'checktestRC'">
        { 'returncode' : STAXCode,
          'result'     : STAXReason,
          'expected'   : expectedRC
        }
      </call>
      <return>
        STAXReason
    </return>
      </return>
   </sequence>
  </function>
  <!-- Modify password policy using dsconfig -->
  <function name="modifyGlobalAci">
    <function-prolog>
      This function modifies a global aci using dsconfig
    </function-prolog>
    <function-map-args>
      <function-arg-def name="location" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="location"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Location of target host
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
      <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-property name="type" value="filepath" />
      </function-arg-def>
      <function-arg-def name="dsInstanceHost" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="dsInstanceHost"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Directory server hostname or IP address
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
      </function-arg-def>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsInstancePort" type="required">
        <function-arg-description>
          Directory server port number
        </function-arg-description>
        <function-arg-property name="type" value="Port number"/>
        </function-arg-description>
        <function-arg-property name="type" value="integer" />
      </function-arg-def>
      <function-arg-def name="dsInstanceDn" type="required">
        <function-arg-description>
          Bind DN
        </function-arg-description>
        <function-arg-property name="type" value="DN"/>
      </function-arg-def>
        <function-arg-property name="type" value="DN" />
      </function-arg-def>
      <function-arg-def name="dsInstancePswd" type="required">
        <function-arg-description>
          Bind password
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
      <function-arg-def name="aciValue" type="required">
        <function-arg-description>
          New property value
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="opType" type="optional" default="set">
        <function-arg-description>
          Operation type, one of set, add, and remove
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="expectedRC" type="optional" default="0">
      <function-arg-description>
     Expected return code value. Default value is 0
      </function-arg-description>
      <function-arg-property name="type" value="string"/>
    </function-arg-def>
        <function-arg-description>
          Expected return code value. Default value is 0
        </function-arg-description>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
    </function-map-args>
    <sequence>
    <script>
      <script>
        mylocation=location
        STAFCmdParams=''
        STAFCmd=''
        STAFCmdParams=''
        STAFCmd=''
        if dsPath:
          dsBinPath='%s/%s' % (dsPath,fileFolder)
          STAFCmd='%s/%s%s' % (dsBinPath,DSCONFIG,fileExt)
        if aciValue:
            aciValue=aciValue.replace('"','\\"')
        STAFCmdParamsList=[]
        STAFCmdParamsList.append('set-access-control-handler-prop ')
        STAFCmdParamsList.append('--%s "global-aci:%s"' % (opType,aciValue))
      </script>
      <call function="'_dsconfigCommonArgs'"/>
      <call function="'_dsconfigCommonArgs'" />
      <script>
        STAFCmdParams=' '.join(STAFCmdParamsList)
      </script>
      <message>
        '%s %s' % (STAFCmd, STAFCmdParams)
      </message>
      <process name="'Modify dsconfig object'">
        <location>'%s' % location</location>
        <command>'%s' % STAFCmd</command>
        <parms>'%s' % STAFCmdParams</parms>
        <workdir>'%s' % dsBinPath</workdir>
        <envs>
          ['PATH=/bin:/usr/bin:%s' % dsBinPath, 'JAVA_HOME=%s' % JAVA_HOME]
        </envs>
        <console use="'same'"/>
        <stderr mode="'stdout'"/>
        <returnstdout/>
      </process>
      <call function="'runCommand'">
        { 'name' : 'Modify dsconfig object',
          'location'  : location,
          'command'   : STAFCmd,
          'arguments' : STAFCmdParams
        }
      </call>
      <script>
        STAXCode=RC
        STAXReason=STAXResult
      </script>
      <call function="'checktestRC'">
          { 'returncode' : STAXCode ,
            'result'     : STAXReason ,
            'expected'   : expectedRC }
        { 'returncode' : STAXCode,
          'result'     : STAXReason,
          'expected'   : expectedRC
        }
      </call>
    <return>
      <return>
        STAXReason
    </return>
      </return>
    </sequence>
  </function>
  <!-- Modify password policy using dsconfig -->
  <function name="modifySaslMech">
    <function-prolog>
      This function modifies a sasl  mechanism using dsconfig
    </function-prolog>
    <function-map-args>
      <function-arg-def name="location" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="location"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Location of target host
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
      <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-property name="type" value="filepath" />
      </function-arg-def>
      <function-arg-def name="dsInstanceHost" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="dsInstanceHost"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Directory server hostname or IP address
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
      </function-arg-def>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsInstancePort" type="required">
        <function-arg-description>
          Directory server port number
        </function-arg-description>
        <function-arg-property name="type" value="Port number"/>
        </function-arg-description>
        <function-arg-property name="type" value="Port number" />
      </function-arg-def>
      <function-arg-def name="dsInstanceDn" type="required">
        <function-arg-description>
          Bind DN
        </function-arg-description>
        <function-arg-property name="type" value="DN"/>
      </function-arg-def>
        <function-arg-property name="type" value="DN" />
      </function-arg-def>
      <function-arg-def name="dsInstancePswd" type="required">
        <function-arg-description>
          Bind password
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
      <function-arg-def name="handlerName" type="required">
        <function-arg-description>
          Handle to modify, e.g. DIGEST-MD5
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="propertyName" type="required">
        <function-arg-description>
          Property to modify, e.g. realm
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="propertyValue" type="required">
        <function-arg-description>
          New property value
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="modifyType" type="optional" default="'set'">
        <function-arg-description>
          The modify type. Default value is set.
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="expectedRC" type="optional" default="0">
      <function-arg-description>
     Expected return code value. Default value is 0
      </function-arg-description>
      <function-arg-property name="type" value="string"/>
    </function-arg-def>
        <function-arg-description>
          Expected return code value. Default value is 0
        </function-arg-description>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
    </function-map-args>
    <sequence>
    <call function="'dsconfigSet'">
      { 'location'               : '%s' % location ,
        'dsPath'                 : '%s' % dsPath ,
        'dsInstanceHost'         : '%s' % dsInstanceHost ,
        'dsInstancePort'         : '%s' % dsInstancePort ,
        'dsInstanceDn'           : '%s' % dsInstanceDn ,
        'dsInstancePswd'         : '%s' % dsInstancePswd ,
        'objectName'             : 'sasl-mechanism-handler' ,
        'propertyType'           : 'handler' ,
        'propertyName'           : '%s' % (handlerName) ,
        'attributeName'          : '%s' % (propertyName) ,
        'attributeValue'         : '%s' % (propertyValue) ,
        'modifyType'             : '%s' % (modifyType) ,
        'expectedRC'             : expectedRC }
    </call>
    <call function="'checktestRC'">
      { 'returncode' : STAXCode ,
        'result'     : STAXReason ,
        'expected'   : expectedRC }
    </call>
    <return>
      <call function="'dsconfigSet'">
        { 'location'       : location,
          'dsPath'         : dsPath,
          'dsInstanceHost' : dsInstanceHost,
          'dsInstancePort' : dsInstancePort,
          'dsInstanceDn'   : dsInstanceDn,
          'dsInstancePswd' : dsInstancePswd,
          'objectName'     : 'sasl-mechanism-handler',
          'propertyType'   : 'handler',
          'propertyName'   : handlerName,
          'attributeName'  : propertyName,
          'attributeValue' : propertyValue,
          'modifyType'     : modifyType,
          'expectedRC'     : expectedRC
        }
      </call>
      <call function="'checktestRC'">
        { 'returncode' : STAXCode,
          'result'     : STAXReason,
          'expected'   : expectedRC
        }
      </call>
      <return>
        STAXReason
    </return>
      </return>
    </sequence>
  </function>
  <function name="addIndex">
    <function-prolog>
      This function eases adding JEB DB indexes
@@ -1257,11 +1213,11 @@
    <function-map-args>
      <function-arg-def name="location" 
                        type="optional" 
                        default="'%s' % STAF_REMOTE_HOSTNAME">
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Location of target host
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
        
      <function-arg-def name="dsPath" 
@@ -1270,47 +1226,47 @@
        <function-arg-description>
          Pathname to installation root
        </function-arg-description>
        <function-arg-property name="type" value="filepath"/>
        <function-arg-property name="type" value="filepath" />
      </function-arg-def>
        
      <function-arg-def name="host" 
                        type="optional" 
                        default="'%s' % STAF_REMOTE_HOSTNAME">
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Directory server hostname or IP address
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>      
        
      <function-arg-def name="port" 
                        type="optional" 
                        default="'%s' % DIRECTORY_INSTANCE_PORT">
                        default="DIRECTORY_INSTANCE_PORT">
        <function-arg-description>
          Directory server port number
        </function-arg-description>       
        <function-arg-property name="type" value="Port number"/>
        <function-arg-property name="type" value="Port number" />
      </function-arg-def>
        
      <function-arg-def name="rootDN" 
                        type="optional" 
                        default="'%s' % DIRECTORY_INSTANCE_DN">
                        default="DIRECTORY_INSTANCE_DN">
        <function-arg-description>
          Bind DN
        </function-arg-description>
        <function-arg-property name="type" value="DN"/>
        <function-arg-property name="type" value="DN" />
      </function-arg-def> 
        
      <function-arg-def name="rootPwd" 
                        type="optional" 
                        default="'%s' % DIRECTORY_INSTANCE_PSWD">
                        default="DIRECTORY_INSTANCE_PSWD">
        <function-arg-description>
          Bind password
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
      
      <function-arg-def name="backendID" 
                        default="'%s' % DIRECTORY_INSTANCE_BE"
                        default="DIRECTORY_INSTANCE_BE"
                        type="optional">
        <function-arg-description>
          The Back-end ID on to which to add an index
@@ -1321,7 +1277,7 @@
        <function-arg-description>
          ldap attribute on to which to add indexing
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="indexTypes" type="required">
@@ -1334,10 +1290,10 @@
          <function-arg-property-description>
            This argument can only have one of those values
          </function-arg-property-description>
          <function-arg-property-data type="choice" value="'equality'"/>
          <function-arg-property-data type="choice" value="'ordering'"/>
          <function-arg-property-data type="choice" value="'equality'" />
          <function-arg-property-data type="choice" value="'ordering'" />
          <function-arg-property-data type="choice" value="'presence'" />
          <function-arg-property-data type="choice" value="'substring'"/>
          <function-arg-property-data type="choice" value="'substring'" />
        </function-arg-property>
      </function-arg-def>
    </function-map-args>
@@ -1350,30 +1306,17 @@
        dsconfigCmd='%s/%s%s' % (dsBinPath,DSCONFIG,fileExt)
        dsconfigParams = 'create-je-index -h %s -p %s -D "%s" -w %s --backend-name %s --index-name %s --set index-type:%s' % (host,port,rootDN,rootPwd,backendID, indexAttribute, ' --set index-type:'.join(indexTypes))
      </script>
      <call function="'_dsconfigCommonArgs'"/>
      <message>
        'Running [%s %s]' % (dsconfigCmd, dsconfigParams)
      </message>
      <process name="'dsconfig addIndex'">
        <location>'%s' % location</location>
        <command>'%s' % dsconfigCmd</command>
        <parms>'%s' % dsconfigParams</parms>
        <workdir>'%s' % dsBinPath</workdir>
        <envs>
          ['PATH=/bin:/usr/bin:%s' % dsBinPath, 'JAVA_HOME=%s' % JAVA_HOME]
        </envs>
        <console use="'same'"/>
        <stderr mode="'stdout'"/>
        <returnstdout/>
      </process>
      <message>
        '%s returned [%s] with [%s]' % (dsconfigCmd, RC,STAXResult)
      </message>
      <call function="'_dsconfigCommonArgs'" />
      <call function="'runCommand'">
        { 'name'      : 'dsconfig addIndex',
          'location'  : location,
          'command'   : dsconfigCmd,
          'arguments' : dsconfigParams
        }
      </call>
      <return>
        RC, STAXResult
        STAXResult
      </return>
    </sequence>
  </function>
@@ -1386,11 +1329,11 @@
    <function-map-args>
      <function-arg-def name="location" 
                        type="optional" 
                        default="'%s' % STAF_REMOTE_HOSTNAME">
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Location of target host
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
        
      <function-arg-def name="dsPath" 
@@ -1399,47 +1342,47 @@
        <function-arg-description>
          Pathname to installation root
        </function-arg-description>
        <function-arg-property name="type" value="filepath"/>
        <function-arg-property name="type" value="filepath" />
      </function-arg-def>
        
      <function-arg-def name="host" 
                        type="optional" 
                        default="'%s' % STAF_REMOTE_HOSTNAME">
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Directory server hostname or IP address
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>      
        
      <function-arg-def name="port" 
                        type="optional" 
                        default="'%s' % DIRECTORY_INSTANCE_PORT">
                        default="DIRECTORY_INSTANCE_PORT">
        <function-arg-description>
          Directory server port number
        </function-arg-description>       
        <function-arg-property name="type" value="Port number"/>
        <function-arg-property name="type" value="Port number" />
      </function-arg-def>
        
      <function-arg-def name="rootDN" 
                        type="optional" 
                        default="'%s' % DIRECTORY_INSTANCE_DN">
                        default="DIRECTORY_INSTANCE_DN">
        <function-arg-description>
          Bind DN
        </function-arg-description>
        <function-arg-property name="type" value="DN"/>
        <function-arg-property name="type" value="DN" />
      </function-arg-def> 
        
      <function-arg-def name="rootPwd" 
                        type="optional" 
                        default="'%s' % DIRECTORY_INSTANCE_PSWD">
                        default="DIRECTORY_INSTANCE_PSWD">
        <function-arg-description>
          Bind password
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
      
      <function-arg-def name="backendID" 
                        default="'%s' % DIRECTORY_INSTANCE_BE"
                        default="DIRECTORY_INSTANCE_BE"
                        type="optional">
        <function-arg-description>
          The Back-end ID on to which to add an index
@@ -1450,7 +1393,7 @@
        <function-arg-description>
          ldap attribute on to which add indexing
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="operation">
@@ -1462,9 +1405,9 @@
            This argument can only have one of the following values
          </function-arg-property-description>
          <function-arg-property-data type="choice" value="'add'" />
          <function-arg-property-data type="choice" value="'remove'"/>
          <function-arg-property-data type="choice" value="'reset'"/>
          <function-arg-property-data type="choice" value="'set'"/>
          <function-arg-property-data type="choice" value="'remove'" />
          <function-arg-property-data type="choice" value="'reset'" />
          <function-arg-property-data type="choice" value="'set'" />
        </function-arg-property>
      
      </function-arg-def> 
@@ -1473,13 +1416,13 @@
        <function-arg-description>
          the property to manipulate if the operation is add or set
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
      <function-arg-def name="indexPropertyValue" type="optional">
        <function-arg-description>
          the value for the provided property
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
    </function-map-args>
    <sequence>
@@ -1494,27 +1437,16 @@
          operationArguments = '%s:%s' % (indexProperty, indexPropertyValue)
        dsconfigParams = 'set-je-index-prop -h %s -p %s -D "%s" -w %s --backend-name %s --index-name %s --%s %s' % ( host, port, rootDN, rootPwd, backendID, indexAttribute, operation, operationArguments )
      </script>
      <call function="'_dsconfigCommonArgs'"/>
      <message>
        '%s %s' % (dsconfigCmd, dsconfigParams)
      </message>
      <process name="'dsconfig modifyIndex'">
        <location>'%s' % location</location>
        <command>'%s' % dsconfigCmd</command>
        <parms>'%s' % dsconfigParams</parms>
        <workdir>'%s' % dsBinPath</workdir>
        <envs>
          ['PATH=/bin:/usr/bin:%s' % dsBinPath, 'JAVA_HOME=%s' % JAVA_HOME]
        </envs>
        <console use="'same'"/>
        <stderr mode="'stdout'"/>
        <returnstdout/>
      </process>
      <call function="'_dsconfigCommonArgs'" />
      <call function="'runCommand'">
        { 'name'      : 'dsconfig modifyIndex',
          'location'  : location,
          'command'   : dsconfigCmd,
          'arguments' : dsconfigParams
        }
      </call>
      <return>
        STAXReason
        STAXResult
      </return>
    </sequence>
  </function>
@@ -1527,11 +1459,11 @@
    <function-map-args>
      <function-arg-def name="location" 
                        type="optional" 
                        default="'%s' % STAF_REMOTE_HOSTNAME">
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Location of target host
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
        
      <function-arg-def name="dsPath" 
@@ -1540,60 +1472,59 @@
        <function-arg-description>
          Pathname to installation root
        </function-arg-description>
        <function-arg-property name="type" value="filepath"/>
        <function-arg-property name="type" value="filepath" />
      </function-arg-def>
        
      <function-arg-def name="host" 
                        type="optional" 
                        default="'%s' % STAF_REMOTE_HOSTNAME">
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Directory server hostname or IP address
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>      
        
      <function-arg-def name="port" 
                        type="optional" 
                        default="'%s' % DIRECTORY_INSTANCE_PORT">
                        default="DIRECTORY_INSTANCE_PORT">
        <function-arg-description>
          Directory server port number
        </function-arg-description>       
        <function-arg-property name="type" value="Port number"/>
        <function-arg-property name="type" value="Port number" />
      </function-arg-def>
        
      <function-arg-def name="rootDN" 
                        type="optional" 
                        default="'%s' % DIRECTORY_INSTANCE_DN">
                        default="DIRECTORY_INSTANCE_DN">
        <function-arg-description>
          Bind DN
        </function-arg-description>
        <function-arg-property name="type" value="DN"/>
        <function-arg-property name="type" value="DN" />
      </function-arg-def> 
        
      <function-arg-def name="rootPwd" 
                        type="optional" 
                        default="'%s' % DIRECTORY_INSTANCE_PSWD">
                        default="DIRECTORY_INSTANCE_PSWD">
        <function-arg-description>
          Bind password
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
      
      <function-arg-def name="backendID" 
                        default="'%s' % DIRECTORY_INSTANCE_BE"
                        default="DIRECTORY_INSTANCE_BE"
                        type="optional">
        <function-arg-description>
          The Back-end ID on to which to remove an index from
        </function-arg-description>
      </function-arg-def>
      <function-arg-def name="indexAttribute" type="required">
        <function-arg-description>
          ldap attribute on to which to remove indexing
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
    </function-map-args>
    <sequence>
      <!-- Local variables -->
@@ -1604,470 +1535,428 @@
        dsconfigCmd='%s/%s%s' % (dsBinPath,DSCONFIG,fileExt)
        dsconfigParams = 'delete-je-index -h %s -p %s -D "%s" -w %s --backend-name %s --index-name %s' % (host,port,rootDN,rootPwd,backendID, indexAttribute)
      </script>
      <call function="'_dsconfigCommonArgs'"/>
      <message>
        'Running [%s %s]' % (dsconfigCmd, dsconfigParams)
      </message>
      <process name="'dsconfig removeIndex'">
        <location>'%s' % location</location>
        <command>'%s' % dsconfigCmd</command>
        <parms>'%s' % dsconfigParams</parms>
        <workdir>'%s' % dsBinPath</workdir>
        <envs>
          ['PATH=/bin:/usr/bin:%s' % dsBinPath, 'JAVA_HOME=%s' % JAVA_HOME]
        </envs>
        <console use="'same'"/>
        <stderr mode="'stdout'"/>
        <returnstdout/>
      </process>
      <message>
        '%s returned [%s] with [%s]' % (dsconfigCmd, RC,STAXResult)
      </message>
      <call function="'_dsconfigCommonArgs'" />
      <call function="'runCommand'">
        { 'name'      : 'dsconfig removeIndex',
          'location'  : location,
          'command'   : dsconfigCmd,
          'arguments' : dsconfigParams
        }
      </call>
      <return>
        RC, STAXResult
        STAXResult
      </return>
    </sequence>
  </function>
  <!-- Create synchronization provider using dsconfig -->
  <function name="createSyncProvider">
    <function-prolog>
      This function creates a synchronization provider using dsconfig
    </function-prolog>
    <function-map-args>
      <function-arg-def name="location" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="location"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Location of target host
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
      <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-property name="type" value="filepath" />
      </function-arg-def>
      <function-arg-def name="dsInstanceHost" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="dsInstanceHost"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Directory server hostname or IP address
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
      </function-arg-def>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsInstancePort" type="required">
        <function-arg-description>
          Directory server port number
        </function-arg-description>
        <function-arg-property name="type" value="Port number"/>
        </function-arg-description>
        <function-arg-property name="type" value="Port number" />
      </function-arg-def>
      <function-arg-def name="dsInstanceDn" type="required">
        <function-arg-description>
          Bind DN
        </function-arg-description>
        <function-arg-property name="type" value="DN"/>
      </function-arg-def>
        <function-arg-property name="type" value="DN" />
      </function-arg-def>
      <function-arg-def name="dsInstancePswd" type="required">
        <function-arg-description>
          Bind password
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
      <function-arg-def name="providerName" type="optional" default="MultimasterSync">
        <function-arg-property name="type" value="string" />
      </function-arg-def>
      <function-arg-def name="providerName"
                        type="optional"
                        default="MultimasterSync">
        <function-arg-description>
          Name for the synchronization provider
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="providerType" type="optional" default="MultimasterType">
      <function-arg-def name="providerType"
                        type="optional"
                        default="MultimasterType">
        <function-arg-description>
          Synchronization provider type
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="expectedRC" type="optional" default="0">
        <function-arg-description>
          Expected return code value. Default value is 0
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
    </function-map-args>
    <sequence>
      <!-- Local variables -->
      <script>
        mylocation=location
        STAFCmdParams=''
        STAFCmd=''
        STAFCmdParams=''
        STAFCmd=''
        if dsPath:
          dsBinPath='%s/%s' % (dsPath,fileFolder)
          STAFCmd='%s/%s%s' % (dsBinPath,DSCONFIG,fileExt)
        STAFCmdParamsList=[]
        STAFCmdParamsList.append('create-synchronization-provider')
        STAFCmdParamsList.append('--provider-name "%s"' % providerName)
        STAFCmdParamsList.append('-t %s' % providerType)
        STAFCmdParamsList.append('--set "enabled:true"')
      </script>
      <call function="'_dsconfigCommonArgs'"/>
      <call function="'_dsconfigCommonArgs'" />
      <script>
        STAFCmdParams=' '.join(STAFCmdParamsList)
      </script>
      <message>
        '%s %s' % (STAFCmd, STAFCmdParams)
      </message>
      <process name="'Modify dsconfig object'">
        <location>'%s' % location</location>
        <command>'%s' % STAFCmd</command>
        <parms>'%s' % STAFCmdParams</parms>
        <workdir>'%s' % dsBinPath</workdir>
        <envs>
          ['PATH=/bin:/usr/bin:%s' % dsBinPath]
        </envs>
        <console use="'same'"/>
        <stderr mode="'stdout'"/>
        <returnstdout/>
      </process>
      <call function="'runCommand'">
        { 'name'      : 'Modify dsconfig object',
          'location'  : location,
          'command'   : STAFCmd,
          'arguments' : STAFCmdParams
        }
      </call>
      <script>
        STAXCode=RC
        STAXReason=STAXResult
      </script>
      <call function="'checktestRC'">
        { 'returncode' : STAXCode ,
          'result'     : STAXReason ,
          'expected'   : expectedRC }
        { 'returncode' : STAXCode,
          'result'     : STAXReason,
          'expected'   : expectedRC
        }
      </call>
      <return>
        STAXReason
      </return>
    </sequence>
  </function>
  <!-- Create a replication server using dsconfig -->
  <function name="createReplicationServer">
    <function-prolog>
      This function creates a replication server under a given synchronization provider using dsconfig
    </function-prolog>
    <function-map-args>
      <function-arg-def name="location" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="location"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Location of target host
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
      <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-property name="type" value="filepath" />
      </function-arg-def>
      <function-arg-def name="dsInstanceHost" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="dsInstanceHost"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Directory server hostname or IP address
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
      </function-arg-def>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsInstancePort" type="required">
        <function-arg-description>
          Directory server port number
        </function-arg-description>
        <function-arg-property name="type" value="Port number"/>
        </function-arg-description>
        <function-arg-property name="type" value="Port number" />
      </function-arg-def>
      <function-arg-def name="dsInstanceDn" type="required">
        <function-arg-description>
          Bind DN
        </function-arg-description>
        <function-arg-property name="type" value="DN"/>
      </function-arg-def>
        <function-arg-property name="type" value="DN" />
      </function-arg-def>
      <function-arg-def name="dsInstancePswd" type="required">
        <function-arg-description>
          Bind password
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
      <function-arg-def name="providerName" type="optional" default="MultimasterSync">
        <function-arg-property name="type" value="string" />
      </function-arg-def>
      <function-arg-def name="providerName"
                        type="optional"
                        default="MultimasterSync">
        <function-arg-description>
          Name for the synchronization provider
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
            
      <function-arg-def name="replicationPort" type="required">
        <function-arg-description>
          Replication port number
        </function-arg-description>
        <function-arg-property name="type" value="Port number"/>
        <function-arg-property name="type" value="Port number" />
      </function-arg-def>
      <function-arg-def name="replicationServerId" type="required">
        <function-arg-description>
          Replication server ID
        </function-arg-description>
        <function-arg-property name="type" value="ID number"/>
      </function-arg-def>
        <function-arg-property name="type" value="ID number" />
      </function-arg-def>
      <function-arg-def name="replicationServerList" type="required">
        <function-arg-description>
          List of replication servers (as in host:replicationServerPort)
        </function-arg-description>
        <function-arg-property name="type" value="list"/>
        <function-arg-property name="type" value="list" />
      </function-arg-def>
            
      <function-arg-def name="expectedRC" type="optional" default="0">
        <function-arg-description>
          Expected return code value. Default value is 0
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
    </function-map-args>
    <sequence>
      <!-- Local variables -->
      <script>
        mylocation=location
        STAFCmdParams=''
        STAFCmd=''
        STAFCmdParams=''
        STAFCmd=''
        if dsPath:
          dsBinPath='%s/%s' % (dsPath,fileFolder)
          STAFCmd='%s/%s%s' % (dsBinPath,DSCONFIG,fileExt)
        STAFCmdParamsList=[]
        STAFCmdParamsList.append('create-replication-server')
        STAFCmdParamsList.append('--provider-name "%s"' % providerName)
        STAFCmdParamsList.append('--set "replication-port:%s"' % replicationPort)
        STAFCmdParamsList.append('--set "replication-server-id:%s"' % replicationServerId)                    
        for replServer in replicationServerList :  
          STAFCmdParamsList.append('--set "replication-server:%s"' % replServer)
      </script>
      <call function="'_dsconfigCommonArgs'"/>
      
      <call function="'_dsconfigCommonArgs'" />
      <script>
        STAFCmdParams=' '.join(STAFCmdParamsList)
      </script>
      <message>
        '%s %s' % (STAFCmd, STAFCmdParams)
      </message>
      <process name="'Modify dsconfig object'">
        <location>'%s' % location</location>
        <command>'%s' % STAFCmd</command>
        <parms>'%s' % STAFCmdParams</parms>
        <workdir>'%s' % dsBinPath</workdir>
        <envs>
          ['PATH=/bin:/usr/bin:%s' % dsBinPath]
        </envs>
        <console use="'same'"/>
        <stderr mode="'stdout'"/>
        <returnstdout/>
      </process>
      <call function="'runCommand'">
        { 'name'      : 'Modify dsconfig object',
          'location'  : location,
          'command'   : STAFCmd,
          'arguments' : STAFCmdParams
        }
      </call>
      <script>
        STAXCode=RC
        STAXReason=STAXResult
      </script>
      <call function="'checktestRC'">
        { 'returncode' : STAXCode ,
          'result'     : STAXReason ,
          'expected'   : expectedRC }
        { 'returncode' : STAXCode,
          'result'     : STAXReason,
          'expected'   : expectedRC
        }
      </call> 
      <return>
        STAXReason
      </return>
    </sequence>
  </function>
  </function>
  <!-- Create a multimaster domain using dsconfig -->
  <function name="createMultimasterDomain">
    <function-prolog>
      This function creates a multimaster domain under a given synchronization provider using dsconfig
    </function-prolog>
    <function-map-args>
      <function-arg-def name="location" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="location"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Location of target host
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
      <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-property name="type" value="filepath" />
      </function-arg-def>
      <function-arg-def name="dsInstanceHost" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
      <function-arg-def name="dsInstanceHost"
                        type="optional"
                        default="STAF_REMOTE_HOSTNAME">
        <function-arg-description>
          Directory server hostname or IP address
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
      </function-arg-def>
        <function-arg-property name="type" value="hostname" />
      </function-arg-def>
      <function-arg-def name="dsInstancePort" type="required">
        <function-arg-description>
          Directory server port number
        </function-arg-description>
        <function-arg-property name="type" value="Port number"/>
        </function-arg-description>
        <function-arg-property name="type" value="Port number" />
      </function-arg-def>
      <function-arg-def name="dsInstanceDn" type="required">
        <function-arg-description>
          Bind DN
        </function-arg-description>
        <function-arg-property name="type" value="DN"/>
      </function-arg-def>
        <function-arg-property name="type" value="DN" />
      </function-arg-def>
      <function-arg-def name="dsInstancePswd" type="required">
        <function-arg-description>
          Bind password
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
      <function-arg-def name="providerName" type="optional" default="MultimasterSync">
        <function-arg-property name="type" value="string" />
      </function-arg-def>
      <function-arg-def name="providerName"
                        type="optional"
                        default="MultimasterSync">
        <function-arg-description>
          Name for the synchronization provider
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
      <function-arg-def name="domainName" type="required">
        <function-arg-description>
          Name for multimaster domain
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
      <function-arg-def name="replicationDn" type="required">
        <function-arg-description>
          DN of the replicated suffix
        </function-arg-description>
        <function-arg-property name="type" value="DN"/>
        <function-arg-property name="type" value="DN" />
      </function-arg-def>
      <function-arg-def name="serverId" type="required">
        <function-arg-description>
          Server ID
        </function-arg-description>
        <function-arg-property name="type" value="ID number"/>
      </function-arg-def>
        <function-arg-property name="type" value="ID number" />
      </function-arg-def>
      <function-arg-def name="replicationServerList" type="required">
        <function-arg-description>
          List of replication servers (as in host:replicationServerPort)
        </function-arg-description>
        <function-arg-property name="type" value="list"/>
        <function-arg-property name="type" value="list" />
      </function-arg-def>
            
      <function-arg-def name="expectedRC" type="optional" default="0">
        <function-arg-description>
          Expected return code value. Default value is 0
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
    </function-map-args>
    <sequence>
      <!-- Local variables -->
      <script>
        mylocation=location
        STAFCmdParams=''    
        STAFCmd=''
        STAFCmd=''
        if dsPath:
          dsBinPath='%s/%s' % (dsPath,fileFolder)
          STAFCmd='%s/%s%s' % (dsBinPath,DSCONFIG,fileExt)
        STAFCmdParamsList=[]
        STAFCmdParamsList.append('create-multimaster-domain')
        STAFCmdParamsList.append('--provider-name "%s"' % providerName)
        STAFCmdParamsList.append('--domain-name "%s"' % domainName)          
        STAFCmdParamsList.append('--set "replication-dn:%s"' % replicationDn)
        STAFCmdParamsList.append('--set "server-id:%s"' % serverId)                    
        for replServer in replicationServerList :  
          STAFCmdParamsList.append('--set "replication-server:%s"' % replServer)
      </script>
      <call function="'_dsconfigCommonArgs'"/>
      <call function="'_dsconfigCommonArgs'" />
      <script>
        STAFCmdParams=' '.join(STAFCmdParamsList)
      </script>
      <message>
        '%s %s' % (STAFCmd, STAFCmdParams)
      </message>
      <process name="'Modify dsconfig object'">
        <location>'%s' % location</location>
        <command>'%s' % STAFCmd</command>
        <parms>'%s' % STAFCmdParams</parms>
        <workdir>'%s' % dsBinPath</workdir>
        <envs>
          ['PATH=/bin:/usr/bin:%s' % dsBinPath]
        </envs>
        <console use="'same'"/>
        <stderr mode="'stdout'"/>
        <returnstdout/>
      </process>
      <call function="'runCommand'">
        { 'name'      : 'Modify dsconfig object',
          'location'  : location,
          'command'   : STAFCmd,
          'arguments' : STAFCmdParams
        }
      </call>
      <script>
        STAXCode=RC
        STAXReason=STAXResult
      </script>
      <call function="'checktestRC'">
        { 'returncode' : STAXCode ,
          'result'     : STAXReason ,
          'expected'   : expectedRC }
        { 'returncode' : STAXCode,
          'result'     : STAXReason,
          'expected'   : expectedRC
        }
      </call>
      <return>
        STAXReason
      </return>
    </sequence>
  </function>
  </function>
</stax>
opends/tests/functional-tests/shared/functions/utils.xml
@@ -532,8 +532,11 @@
            self.start=start
            self.stop=stop
            tmp=fullname.split(":")
            del tmp[0:2]
            self.name=''.join(tmp)
            if len(tmp) > 2:
              del tmp[0:2]
              self.name=''.join(tmp)
            else:
              self.name=fullname
            self.duration = 0
            if failures == 0:
              if successes == 0:
opends/tests/functional-tests/testcases/backends/backends.xml
@@ -26,65 +26,25 @@
 !      Portions Copyright 2006-2007 Sun Microsystems, Inc.
 ! -->
<stax>
  <defaultcall function="main_backends"/>
  <function name="main_backends">
    <sequence>
      <block name="'backends'">
        <sequence>
          <script>
            CurrentTestPath['group']='backends'
          </script>
          <call function="'testGroup_Preamble'"/>
          <import machine="STAF_LOCAL_HOSTNAME"
            file="'%s/testcases/backends/import.xml' % (TESTS_DIR)"/>
          <call function="'main_import'" />
          <import machine="STAF_LOCAL_HOSTNAME"
            file="'%s/testcases/backends/import-tasks.xml' % (TESTS_DIR)"/>
          <call function="'main_import-tasks'" />
          <import machine="STAF_LOCAL_HOSTNAME"
            file="'%s/testcases/backends/backup-tasks.xml' % (TESTS_DIR)"/>
          <call function="'main_backup-tasks'" />
          <import machine="STAF_LOCAL_HOSTNAME"
            file="'%s/testcases/backends/backup.xml' % (TESTS_DIR)"/>
          <call function="'main_backup'" />
          <import machine="STAF_LOCAL_HOSTNAME"
            file="'%s/testcases/backends/restore-tasks.xml' % (TESTS_DIR)"/>
          <call function="'main_restore-tasks'" />
          <import machine="STAF_LOCAL_HOSTNAME"
            file="'%s/testcases/backends/restore.xml' % (TESTS_DIR)"/>
          <call function="'main_restore'" />
          <import machine="STAF_LOCAL_HOSTNAME"
            file="'%s/testcases/backends/export-tasks.xml' % (TESTS_DIR)"/>
          <call function="'main_export-tasks'" />
          <import machine="STAF_LOCAL_HOSTNAME"
            file="'%s/testcases/backends/export.xml' % (TESTS_DIR)"/>
          <call function="'main_export'" />
          <iterate var="_test" in="['import','import-tasks','backup-tasks','backup','restore-tasks','restore','export-tasks','export']" >
            <sequence>
              <import machine="STAF_LOCAL_HOSTNAME"
                      file="'%s/testcases/backends/%s.xml' % (TESTS_DIR,_test)"/>
              <call function="'main_%s' % _test" />
            </sequence>
          </iterate>
          <call function="'testGroup_Postamble'"/>
        </sequence>
      </block>
    </sequence>
  </function>
</stax>
opends/tests/functional-tests/testcases/backends/backup-tasks.xml
@@ -25,78 +25,52 @@
 !
 !      Portions Copyright 2007 Sun Microsystems, Inc.
 ! -->
<stax>
  <defaultcall function="main_backup-tasks"/>
  <function name="main_backup-tasks">
    <sequence>
      <block name="'backup-tasks'">
        <sequence>
          <script>
            if not CurrentTestPath.has_key('group'):
              CurrentTestPath['group']='backends'
              CurrentTestPath['group']='backends'
            CurrentTestPath['suite']=STAXCurrentBlock
          </script>
          <call function="'testSuite_Preamble'" />
          
          <call function="'testSuite_Preamble'"/>
          <import machine="STAF_LOCAL_HOSTNAME"
            file="'%s/testcases/backends/backend_setup.xml' % (TESTS_DIR)"/>
                  file="'%s/testcases/backends/backend_setup.xml' % (TESTS_DIR)" />
          <call function="'backend_setup'"> { 'loadBackend' : True } </call>
                  <testcase name="'Backend: Backup Tasks 1'">
                  <sequence>
          <testcase name="'Backend: Backup Tasks: Test 1'">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                'Backend ExportTasks1: Backup the data in OpenDS by scheduling a task'
              </message>
              <call function="'backupTask'">
                { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
                  'dsInstancePort' : DIRECTORY_INSTANCE_PORT,
                  'dsInstanceDn'   : DIRECTORY_INSTANCE_DN,
                  'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
                  'taskID'         : '3',
                  'backupDir'       : '%s/backends/' % logsRemoteDataDir
                }
              </call>
              <call function="'checktestRC'">
                { 'returncode' : RC ,
                  'result'     : STAXResult
                }
              </call>
              <call function="'testCase_Postamble'" />
            </sequence>
          </testcase>
          
                    <call function="'testCase_Preamble'"/>
                    <message>
                      'Backend ExportTasks1: Backup the data in OpenDS by scheduling a task'
                    </message>
                    <call function="'backupTask'">
                      { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
                        'dsInstancePort' : DIRECTORY_INSTANCE_PORT,
                        'dsInstanceDn'   : DIRECTORY_INSTANCE_DN,
                        'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
                        'taskID'         : '3',
                        'backupDir'       : '%s/backends/' % logsRemoteDataDir
                      }
                    </call>
                    <call function="'checktestRC'">
                      { 'returncode' : RC ,
                        'result'     : STAXResult }
                    </call>
                    <call function="'testCase_Postamble'"/>
                  </sequence>
                </testcase>
          <import machine="STAF_LOCAL_HOSTNAME"
            file="'%s/testcases/backends/backend_cleanup.xml' % (TESTS_DIR)"/>
                  file="'%s/testcases/backends/backend_cleanup.xml' % (TESTS_DIR)"/>
          <call function="'backend_cleanup'"/>
          <call function="'testSuite_Postamble'"/>
        </sequence>
      </block>
    </sequence>
  </function>
</stax>
opends/tests/functional-tests/testcases/backends/export-tasks.xml
@@ -25,27 +25,18 @@
 !
 !      Portions Copyright 2007 Sun Microsystems, Inc.
 ! -->
<stax>
  <defaultcall function="main_export-tasks"/>
  <function name="main_export-tasks">
    <sequence>
      <block name="'export-tasks'">
        <sequence>
          <script>
            if not CurrentTestPath.has_key('group'):
              CurrentTestPath['group']='backends'
              CurrentTestPath['group']='backends'
            CurrentTestPath['suite']=STAXCurrentBlock
          </script>
          <call function="'testSuite_Preamble'"/>
          <call function="'testSuite_Preamble'" />
          <!--- Test Suite information
            #@TestSuiteName       Backend Export Tasks Tests
            #@TestSuitePurpose    Verify that the basic export task functionality is working in the Directory Server.
@@ -54,351 +45,328 @@
            #@TestGroup           Backend
            #@TestScript          export.xml
            #@TestHTMLLink        http://opends.dev.java.net/
          -->
          -->
          <import machine="STAF_LOCAL_HOSTNAME"
            file="'%s/testcases/backends/backend_setup.xml' % (TESTS_DIR)"/>
          <call function="'backend_setup'"> { 'loadBackend' : True } </call>
             <sequence>
          <sequence>
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Export Tasks 1
              #@TestID              ExportTasks1
              #@TestPurpose         Verify an export task of a LDIF file on the default backend.
              #@TestPreamble
              #@TestSteps           An ldif file is created that describes the export task to be
                                    scheduled. The task is scheduled by adding the ldif file
                                    with the static ldapmodify.
              #@TestPostamble
              #@TestResult          Success if OpenDS returns 0
            -->
            <testcase name="'Backend: Export Tasks: Test 1'">
              <sequence>
                <call function="'testCase_Preamble'"/>
                <message>
                  'Backend ExportTasks1: Export the data in OpenDS by scheduling a task'
                </message>
                <call function="'exportLdifTask'">
                  { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort' : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'   : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
                    'taskID'         : '1',
                    'ldifFile'       : '%s/backends/ExportTasks1.ldif' % logsRemoteDataDir
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult
                  }
                </call>
                <call function="'testCase_Postamble'" />
              </sequence>
            </testcase>
            
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Export Tasks 1
            #@TestID              ExportTasks1
            #@TestPurpose         Verify an export task of a LDIF file on the default backend.
            #@TestPreamble
            #@TestSteps           An ldif file is created that describes the export task to be
                                  scheduled. The task is scheduled by adding the ldif file
                                  with the static ldapmodify.
            #@TestPostamble
            #@TestResult          Success if OpenDS returns 0
          -->
                <testcase name="'Backend: Export Tasks 1'">
                  <sequence>
                    <call function="'testCase_Preamble'"/>
                    <message>
                      'Backend ExportTasks1: Export the data in OpenDS by scheduling a task'
                    </message>
                    <call function="'exportLdifTask'">
                      { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
                        'dsInstancePort' : DIRECTORY_INSTANCE_PORT,
                        'dsInstanceDn'   : DIRECTORY_INSTANCE_DN,
                        'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
                        'taskID'         : '1',
                        'ldifFile'       : '%s/backends/ExportTasks1.ldif' % logsRemoteDataDir
                      }
                    </call>
                    <call function="'checktestRC'">
                      { 'returncode' : RC ,
                        'result'     : STAXResult }
                    </call>
                    <call function="'testCase_Postamble'"/>
                  </sequence>
                </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: LDIF Default
              #@TestID              LDIF Default
              #@TestPurpose         Verify an export task of a LDIF file on the default backend.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: LDIF Default
            #@TestID              LDIF Default
            #@TestPurpose         Verify an export task of a LDIF file on the default backend.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: LDIF Non Default
            #@TestID              LDIF Non Default
            #@TestPurpose         Verify an export task of a LDIF file on a differrent backend to the default.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Fractional Include Branch
            #@TestID              Fractional Include Branch
            #@TestPurpose         Verify an export task of a LDIF file specifying a branch that should be included in the export task.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Fractional Include Branches
            #@TestID              Fractional Include Branches
            #@TestPurpose         Verify an export task of a LDIF file specifying multiple branches that should be included in the export task.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Fractional Exclude Branch
            #@TestID              Fractional Exclude Branch
            #@TestPurpose         Verify an export task of a LDIF file specifying a branch that should be excluded in the export task.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Fractional Exclude Branches
            #@TestID              Fractional Exclude Branches
            #@TestPurpose         Verify an export task of a LDIF file specifying multiple branches that should be excluded in the export task.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Fractional Branches Mix
            #@TestID              Fractional Branches Mix
            #@TestPurpose         Verify an export task of a LDIF file specifying a mix of include and exclude branches.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Fractional Include Attribute
            #@TestID              Fractional Include Attribute
            #@TestPurpose         Verify an export task of a LDIF file specifying an attribute that should be included in the export task.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Fractional Include Attributes
            #@TestID              Fractional Include Attributes
            #@TestPurpose         Verify an export task of a LDIF file specifying multiple attributes that should be included in the export task.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Fractional Exclude Attribute
            #@TestID              Fractional Exclude Attribute
            #@TestPurpose         Verify an export task of a LDIF file specifying an attribute that should be excluded in the export task.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Fractional Exclude Attributes
            #@TestID              Fractional Exclude Attributes
            #@TestPurpose         Verify an export task of a LDIF file specifying multiple attribute that should be excluded in the export task.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Fractional Mix
            #@TestID              Fractional Mix
            #@TestPurpose         Verify an export task of a LDIF file specifying a mix of fractional attributes and branches.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Filtered Include
            #@TestID              Filtered Include
            #@TestPurpose         Verify an export task of a LDIF file specifying a search filter control which entries are included in the export task.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Filtered Includes
            #@TestID              Filtered Includes
            #@TestPurpose         Verify an export task of a LDIF file specifying a search filter control which entries are included in the export task.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Filtered Excludes
            #@TestID              Filtered Excludes
            #@TestPurpose         Verify an export task of a LDIF file specifying multiple search filters control which entries are excluded in the export task.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Filtered Includes
            #@TestID              Filtered Includes
            #@TestPurpose         Verify an export task of a LDIF file specifying multiple search filters control which entries are included in the export task.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Filtered Excludes Complex
            #@TestID              Filtered Excludes Complex
            #@TestPurpose         Verify an export task of a LDIF file specifying complex search filters control which entries are excluded in the export task.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Filtered Excludes Complex
            #@TestID              Filtered Excludes Complex
            #@TestPurpose         Verify an export task of a LDIF file specifying complex search filters control which entries are excluded in the export task.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Fractional Filtered Mix
            #@TestID              Fractional Filtered Mix
            #@TestPurpose         Verify an export task of a LDIF file specifying a mix of fractional and filtered.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Append To LDIF
            #@TestID              Append To LDIF
            #@TestPurpose         Verify an export task of a LDIF file specifying that the export task process should append to the existing LDIF file.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Compress LDIF
            #@TestID              Compress LDIF
            #@TestPurpose         Verify an export task where the LDIF file is compressed.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Encrypt LDIF
            #@TestID              Encrypt LDIF
            #@TestPurpose         Verify an export task where the LDIF file is encrypted.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Hash Signed LDIF
            #@TestID              Hash Signed LDIF
            #@TestPurpose         Verify an export task where the LDIF file is hashed/signed.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Wrap Column
            #@TestID              Wrap Column
            #@TestPurpose         Verify an export task of a LDIF file containing wrapped columns
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
          <!--- Test Case information
            #@TestMarker          Backend Export Tasks Tests
            #@TestName            Export Tasks: Error Codes
            #@TestID              Error Codes
            #@TestPurpose         Verify an export task fails with an error code.
            #@TestPreamble
            #@TestSteps
            #@TestPostamble
            #@TestResult
          -->
             </sequence>
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: LDIF Non Default
              #@TestID              LDIF Non Default
              #@TestPurpose         Verify an export task of a LDIF file on a differrent backend to the default.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Fractional Include Branch
              #@TestID              Fractional Include Branch
              #@TestPurpose         Verify an export task of a LDIF file specifying a branch that should be included in the export task.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Fractional Include Branches
              #@TestID              Fractional Include Branches
              #@TestPurpose         Verify an export task of a LDIF file specifying multiple branches that should be included in the export task.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Fractional Exclude Branch
              #@TestID              Fractional Exclude Branch
              #@TestPurpose         Verify an export task of a LDIF file specifying a branch that should be excluded in the export task.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Fractional Exclude Branches
              #@TestID              Fractional Exclude Branches
              #@TestPurpose         Verify an export task of a LDIF file specifying multiple branches that should be excluded in the export task.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Fractional Branches Mix
              #@TestID              Fractional Branches Mix
              #@TestPurpose         Verify an export task of a LDIF file specifying a mix of include and exclude branches.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Fractional Include Attribute
              #@TestID              Fractional Include Attribute
              #@TestPurpose         Verify an export task of a LDIF file specifying an attribute that should be included in the export task.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Fractional Include Attributes
              #@TestID              Fractional Include Attributes
              #@TestPurpose         Verify an export task of a LDIF file specifying multiple attributes that should be included in the export task.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Fractional Exclude Attribute
              #@TestID              Fractional Exclude Attribute
              #@TestPurpose         Verify an export task of a LDIF file specifying an attribute that should be excluded in the export task.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Fractional Exclude Attributes
              #@TestID              Fractional Exclude Attributes
              #@TestPurpose         Verify an export task of a LDIF file specifying multiple attribute that should be excluded in the export task.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Fractional Mix
              #@TestID              Fractional Mix
              #@TestPurpose         Verify an export task of a LDIF file specifying a mix of fractional attributes and branches.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Filtered Include
              #@TestID              Filtered Include
              #@TestPurpose         Verify an export task of a LDIF file specifying a search filter control which entries are included in the export task.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Filtered Includes
              #@TestID              Filtered Includes
              #@TestPurpose         Verify an export task of a LDIF file specifying a search filter control which entries are included in the export task.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Filtered Excludes
              #@TestID              Filtered Excludes
              #@TestPurpose         Verify an export task of a LDIF file specifying multiple search filters control which entries are excluded in the export task.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Filtered Includes
              #@TestID              Filtered Includes
              #@TestPurpose         Verify an export task of a LDIF file specifying multiple search filters control which entries are included in the export task.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Filtered Excludes Complex
              #@TestID              Filtered Excludes Complex
              #@TestPurpose         Verify an export task of a LDIF file specifying complex search filters control which entries are excluded in the export task.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Filtered Excludes Complex
              #@TestID              Filtered Excludes Complex
              #@TestPurpose         Verify an export task of a LDIF file specifying complex search filters control which entries are excluded in the export task.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Fractional Filtered Mix
              #@TestID              Fractional Filtered Mix
              #@TestPurpose         Verify an export task of a LDIF file specifying a mix of fractional and filtered.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Append To LDIF
              #@TestID              Append To LDIF
              #@TestPurpose         Verify an export task of a LDIF file specifying that the export task process should append to the existing LDIF file.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Compress LDIF
              #@TestID              Compress LDIF
              #@TestPurpose         Verify an export task where the LDIF file is compressed.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Encrypt LDIF
              #@TestID              Encrypt LDIF
              #@TestPurpose         Verify an export task where the LDIF file is encrypted.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Hash Signed LDIF
              #@TestID              Hash Signed LDIF
              #@TestPurpose         Verify an export task where the LDIF file is hashed/signed.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Wrap Column
              #@TestID              Wrap Column
              #@TestPurpose         Verify an export task of a LDIF file containing wrapped columns
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Export Tasks Tests
              #@TestName            Export Tasks: Error Codes
              #@TestID              Error Codes
              #@TestPurpose         Verify an export task fails with an error code.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
          </sequence>
          <import machine="STAF_LOCAL_HOSTNAME"
            file="'%s/testcases/backends/backend_cleanup.xml' % (TESTS_DIR)"/>
          <call function="'backend_cleanup'"/>
          <call function="'testSuite_Postamble'"/>
        </sequence>
      </block>
    </sequence>
  </function>
</stax>
opends/tests/functional-tests/testcases/backends/export.xml
Diff too large