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

gary_williams
30.23.2006 92b7b5e45485b8cd7f80ab280bedcd51de176b71
functional tests - implement import tasks test suite
4 files modified
2047 ■■■■ changed files
opendj-sdk/opends/tests/functional-tests/shared/data/backends/Exclude.ldif 16 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/tests/functional-tests/shared/functions/dsadm.xml 336 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/tests/functional-tests/testcases/backends/backends.xml 4 ●●●● patch | view | raw | blame | history
opendj-sdk/opends/tests/functional-tests/testcases/backends/import-tasks.xml 1691 ●●●● patch | view | raw | blame | history
opendj-sdk/opends/tests/functional-tests/shared/data/backends/Exclude.ldif
@@ -2860,6 +2860,22 @@
uniquemember: uid=jwalker, ou=People, dc=example,dc=com
description: People who can manage QA entries
dn: uid=bbaret, cn=QA Managers,ou=groups,dc=example,dc=com
cn: Bruno Baret
sn: Baret
givenname: Bruno
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
l: Grenoble
uid: bbaret
mail: bbaret@example.com
telephonenumber: +1 408 555 4666
facsimiletelephonenumber: +1 408 555 0121
roomnumber: 3445
userpassword: picketer
dn: cn=PD Managers,ou=groups,dc=example,dc=com
objectclass: top
objectclass: groupOfUniqueNames
opendj-sdk/opends/tests/functional-tests/shared/functions/dsadm.xml
@@ -307,6 +307,293 @@
    </function>
    <!-- Import Task Function -->
    <function name="importLdifTask">
    <function-prolog>
        This function performs an on line import task of an ldif file
    </function-prolog>
    <function-map-args>
        <function-required-arg name="dsInstanceHost">
            Directory Server host name
        </function-required-arg>
        <function-required-arg name="dsInstancePort">
            Directory Server port number
        </function-required-arg>
        <function-required-arg name="dsInstanceDn">
            Directory Server Manager DN
        </function-required-arg>
        <function-required-arg name="dsInstancePswd">
            Directory Server Manager Password
        </function-required-arg>
        <function-required-arg name="taskID">
            The identifier for the task
        </function-required-arg>
        <function-required-arg name="ldifFile">
            The name of the ldif file
        </function-required-arg>
        <function-optional-arg name="backEnd" default="'userRoot'">
            Optional the name of the database backend
        </function-optional-arg>
        <function-optional-arg name="isCompressed" default="'FALSE'">
            Optional imported ldif data file compressed
        </function-optional-arg>
        <function-optional-arg name="isEncrypted" default="'FALSE'">
            Optional imported ldif data file encrypted
        </function-optional-arg>
        <function-optional-arg name="rejectsFile" default="' '">
            Optional name of rejects file
        </function-optional-arg>
        <function-optional-arg name="overwriteRejectsFile" default="'FALSE'">
            Optional name of rejects file
        </function-optional-arg>
        <function-optional-arg name="append" default="'FALSE'">
            Optional append imported ldif data
        </function-optional-arg>
        <function-optional-arg name="skipSchemaValidation" default="'FALSE'">
            Optional don't do schema validation on import
        </function-optional-arg>
        <function-optional-arg name="replaceExisting" default="'TRUE'">
            Optional replace existing data
        </function-optional-arg>
        <function-optional-arg name="excludeBranches" default="' '">
            Optional exclude branches
        </function-optional-arg>
        <function-optional-arg name="includeBranches" default="' '">
            Optional include branches
        </function-optional-arg>
        <function-optional-arg name="excludeAttributes" default="' '">
            Optional exclude attributes
        </function-optional-arg>
        <function-optional-arg name="includeAttributes" default="' '">
            Optional include attributes
        </function-optional-arg>
        <function-optional-arg name="excludeFilters" default="' '">
            Optional exclude filters
        </function-optional-arg>
        <function-optional-arg name="includeFilters" default="' '">
            Optional include filters
        </function-optional-arg>
    </function-map-args>
      <sequence>
        <script>
          taskDN='ds-task-id=%s,cn=Scheduled Tasks,cn=Tasks' % taskID
        </script>
        <!-- Build the import task configuration object -->
        <script>
          ldifLines=[]
          ldifLines.append('dn: %s' % taskDN)
          ldifLines.append('objectclass: top')
          ldifLines.append('objectclass: ds-task')
          ldifLines.append('objectclass: ds-task-import')
          ldifLines.append('ds-task-class-name: org.opends.server.tasks.ImportTask')
        </script>
        <script>
          ldifLines.append('ds-task-import-backend-id: %s' % backEnd )
          ldifLines.append('ds-task-import-ldif-file: %s' % ldifFile )
          ldifLines.append('ds-task-import-is-compressed: %s' % isCompressed )
          ldifLines.append('ds-task-import-is-encrypted: %s' % isEncrypted )
        </script>
        <if expr="rejectsFile != ' '">
          <script>
            ldifLines.append('ds-task-import-reject-file: %s' % rejectsFile )
          </script>
        </if>
        <script>
          ldifLines.append('ds-task-import-overwrite-rejects: %s' % overwriteRejectsFile )
          ldifLines.append('ds-task-import-append: %s' % append )
          ldifLines.append('ds-task-import-skip-schema-validation: %s' % skipSchemaValidation )
          ldifLines.append('ds-task-import-replace-existing: %s' % replaceExisting )
        </script>
        <iterate var="branch" in="excludeBranches">
          <sequence>
            <if expr="branch == ' '">
              <break/>
            </if>
            <script>
              ldifLines.append('ds-task-import-exclude-branch: %s' % branch )
            </script>
          </sequence>
        </iterate>
        <iterate var="branch" in="includeBranches">
          <sequence>
            <if expr="branch == ' '">
              <break/>
            </if>
            <script>
              ldifLines.append('ds-task-import-include-branch: %s' % branch )
            </script>
          </sequence>
        </iterate>
        <iterate var="attribute" in="excludeAttributes">
          <sequence>
            <if expr="attribute == ' '">
              <break/>
            </if>
            <script>
              ldifLines.append('ds-task-import-exclude-attribute: %s' % attribute )
            </script>
          </sequence>
        </iterate>
        <iterate var="attribute" in="includeAttributes">
          <sequence>
            <if expr="attribute == ' '">
              <break/>
            </if>
            <script>
              ldifLines.append('ds-task-import-include-attribute: %s' % attribute )
            </script>
          </sequence>
        </iterate>
        <iterate var="filter" in="excludeFilters">
          <sequence>
            <if expr="filter == ' '">
              <break/>
            </if>
            <script>
              ldifLines.append('ds-task-import-exclude-filter: %s' % filter)
            </script>
          </sequence>
        </iterate>
        <iterate var="filter" in="includeFilters">
          <sequence>
            <if expr="filter == ' '">
              <break/>
            </if>
            <script>
              ldifLines.append('ds-task-import-include-filter: %s' % filter)
            </script>
          </sequence>
        </iterate>
        <!-- Write out the import-task ldif -->
        <script>
          outfile = open('%s/import-task.ldif' % TMP_DATA_DIR,"w")
          for line in ldifLines:
            outfile.write("%s\n" % line)
          outfile.close()
        </script>
        <!-- Copy the import-task ldif to remote host -->
        <message>'Copy import task ldif file.'</message>
        <call function="'copyfile'">
          { 'srcfile'    : '%s/import-task.ldif' % TMP_DATA_DIR,
            'destfile'   : '%s/import-task.ldif' % STAGED_DATA_DIR,
            'remotehost' : STAF_REMOTE_HOSTNAME }
        </call>
        <!-- On line Import Task with ldapmodify -->
        <message>
          'ldapmodify.%s -a -h %s -p %s -D "%s" -w %s' % (fileExt,dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd)
        </message>
        <process name="'On line Import Task'">
          <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
          <command>'%s/ldapmodify.%s' % (OPENDS_BINPATH,fileExt)</command>
          <parms>'-a -h %s -p %s -D "%s" -w %s' % (dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd)</parms>
          <workdir>'%s' % (OPENDS_BINPATH)</workdir>
          <envs>
                ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
          </envs>
          <stdin>'%s/import-task.ldif' % STAGED_DATA_DIR</stdin>
          <stderr mode="'stdout'"/>
          <returnstdout/>
        </process>
        <script>
          importTaskRC=RC
          importTaskResult=STAXResult
        </script>
        <call function="'checkRC'">
          { 'returncode' : importTaskRC ,
            'result'     : importTaskResult }
        </call>
        <!-- Check that the task is completed -->
        <script>
          loopRC=1
        </script>
        <script>
          import re
          searchre = re.compile('ds-task-state: COMPLETED_SUCCESSFULLY')
        </script>
        <!-- Wait for the task to be COMPLETED_SUCCESSFULLY -->
        <loop from="1" to="5" while="loopRC != 0">
          <sequence>
            <message>
              'ldapsearch.%s -h %s -p %s -D "%s" -w %s -s base -b "%s" "objectclass=*" ds-task-state' % (fileExt,dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd,taskDN)
            </message>
            <process name="'Search On line Import Task'">
              <location>'%s' % (STAF_REMOTE_HOSTNAME) </location>
              <command>'%s/ldapsearch.%s' % (OPENDS_BINPATH,fileExt)</command>
              <parms>'-h %s -p %s -D "%s" -w %s -s base -b "%s" "objectclass=*" ds-task-state' % (dsInstanceHost,dsInstancePort,dsInstanceDn,dsInstancePswd,taskDN)</parms>
              <workdir>'%s' % (OPENDS_BINPATH)</workdir>
              <envs>
                    ['PATH=/bin:/usr/bin:%s' % (OPENDS_BINPATH), 'JAVA_HOME=%s' % (JAVA_HOME)]
              </envs>
              <stderr mode="'stdout'"/>
              <returnstdout/>
            </process>
            <script>
              searchRC=RC
              searchResult=STAXResult
            </script>
            <script>
              result = STAXResult[0][1]
            </script>
            <if expr='re.search(searchre, result) != None'>
              <sequence>
                <script>loopRC=0</script>
              </sequence>
            <else>
              <message log="1" level="'Warning'">
                'No match on ds-task-state.'
              </message>
            </else>
            </if>
            <call function="'checkRC'">
                { 'returncode' : searchRC ,
                  'result'     : searchResult }
            </call>
            <call function="'Sleep'">
              { 'sleepForMilliSeconds' : '2000' }
            </call>
          </sequence>
        </loop>
        <return>loopRC</return>
      </sequence>
    </function>
    <!-- Check Import Function -->
    <function name="checkImport">
@@ -336,18 +623,30 @@
    </function-map-args>
    
    <sequence>
    <!-- StartDS -->
    <call function="'startDS'">
      { 'dsbinpath' : '%s' % (OPENDS_BINPATH) }
    </call>
    <!-- If we don't want to start DS then we don't need to stop it -->
    <script>stopDS=startDS</script>
    
    <!-- Wait for DS to start -->
    <call function="'isAlive'">
      { 'noOfLoops'        : 5 ,
        'noOfMilliSeconds' : 2000 }
    </call>
    <!-- Do we need to start the DS -->
    <if expr="startDS == 'yes'">
      <sequence>
      <!-- StartDS -->
      <call function="'startDS'">
        { 'dsbinpath' : '%s' % (OPENDS_BINPATH) }
      </call>
      <!-- Wait for DS to start -->
      <call function="'isAlive'">
        { 'noOfLoops'        : 5 ,
          'noOfMilliSeconds' : 2000 }
      </call>
      </sequence>
    </if>
    <!-- Search for expected entries -->    
    <iterate var="expectedEntry" in="expectedEntries">
      
@@ -400,12 +699,17 @@
    </sequence>
      
    </iterate>
    <!-- StopDS -->
    <call function="'stopDS'">
      { 'dsInstancePort' : '%s' % (DIRECTORY_INSTANCE_PORT) }
    </call>
    <!-- Do we need to stop the Directory Server -->
    <if expr="stopDS == 'yes'">
      <!-- StopDS -->
      <call function="'stopDS'">
        { 'dsInstancePort' : '%s' % (DIRECTORY_INSTANCE_PORT) }
      </call>
    </if>
    </sequence>
  </function>
opendj-sdk/opends/tests/functional-tests/testcases/backends/backends.xml
@@ -37,6 +37,10 @@
          file="'%s/testcases/backends/import.xml' % (TESTS_DIR)"/>
    <call function="'main_import'" />
        <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
          file="'%s/testcases/backends/import-tasks.xml' % (TESTS_DIR)"/>
    <call function="'main_import-tasks'" />
      </sequence>
  </function>
opendj-sdk/opends/tests/functional-tests/testcases/backends/import-tasks.xml
@@ -28,341 +28,1372 @@
<stax>
  <defaultcall function="main"/>
  <defaultcall function="main_import-tasks"/>
  <function name="main">
  <function name="main_import-tasks">
    <sequence>
      <!--- Test Suite information
        #@TestSuiteName       Backend Import Tasks Tests
        #@TestSuitePurpose    Verify that the basic import using the task based functionality is working in the Directory Server.
        #@TestSuiteID         Import Tasks Tests
        #@TestSuiteGroup      Import-Tasks
        #@TestGroup           Backend
        #@TestScript          import-tasks.xml
        #@TestHTMLLink        http://opends.dev.java.net/
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: LDIF Default
        #@TestID              LDIF Default
        #@TestPurpose         Verify an import task of a LDIF file using the default backend.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: LDIF Non Default
        #@TestID              LDIF Non Default
        #@TestPurpose         Verify an import task of a LDIF file using a differrent backend to the default.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Fractional Include Branch
        #@TestID              Fractional Include Branch
        #@TestPurpose         Verify an import task of a LDIF file specifying a branch that should be included in the import.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Fractional Include Branches
        #@TestID              Fractional Include Branches
        #@TestPurpose         Verify an import task of a LDIF file specifying multiple branches that should be included in the import.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Fractional Exclude Branch
        #@TestID              Fractional Exclude Branch
        #@TestPurpose         Verify an import task of a LDIF file specifying a branch that should be excluded in the import.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Fractional Exclude Branches
        #@TestID              Fractional Exclude Branches
        #@TestPurpose         Verify an import task of a LDIF file specifying multiple branches that should be excluded in the import.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Fractional Branches Mix
        #@TestID              Fractional Branches Mix
        #@TestPurpose         Verify an import task of a LDIF file specifying a mix of include and exclude branches.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Fractional Include Attribute
        #@TestID              Fractional Include Attribute
        #@TestPurpose         Verify an import task of a LDIF file specifying an attribute that should be included in the import.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Fractional Include Attributes
        #@TestID              Fractional Include Attributes
        #@TestPurpose         Verify an import task of a LDIF file specifying multiple attributes that should be included in the import.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Fractional Exclude Attribute
        #@TestID              Fractional Exclude Attribute
        #@TestPurpose         Verify an import task of a LDIF file specifying an attribute that should be excluded in the import.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Fractional Exclude Attribute
        #@TestID              Fractional Exclude Attributes
        #@TestPurpose         Verify an import task of a LDIF file specifying multiple attribute that should be excluded in the import.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Fractional Mix
        #@TestID              Fractional Mix
        #@TestPurpose         Verify an import task of a LDIF file specifying a mix of fractional attributes and branches.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Filtered Include
        #@TestID              Filtered Include
        #@TestPurpose         Verify an import task of a LDIF file specifying a search filter control which entries are included in the import.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Filtered Exclude
        #@TestID              Filtered Exclude
        #@TestPurpose         Verify an import task of a LDIF file specifying a search filter control which entries are excluded in the import.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Filtered Includes
        #@TestID              Filtered Includes
        #@TestPurpose         Verify an import task of a LDIF file specifying multiple search filters control which entries are included in the import.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Filtered Excludes
        #@TestID              Filtered Excludes
        #@TestPurpose         Verify an import task of a LDIF file specifying multiple search filters control which entries are excluded in the import.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Filtered Includes Complex
        #@TestID              Filtered Includes Complex
        #@TestPurpose         Verify an import task of a LDIF file specifying complex search filters control which entries are included in the import.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Filtered Excludes Complex
        #@TestID              Filtered Excludes Complex
        #@TestPurpose         Verify an import task of a LDIF file specifying complex search filters control which entries are excluded in the import.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Fractional Filtered Mix
        #@TestID              Fractional Filtered Mix
        #@TestPurpose         Verify an import task of a LDIF file specifying a mix of fractional and filtered.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Append
        #@TestID              Append
        #@TestPurpose         Verify an import task of a LDIF file specifying that the import process should append to the existing database.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks:Append Replace Existing
        #@TestID              Append Replace Existing
        #@TestPurpose         Verify an import task of a LDIF file specifying that an existing entry should be replaced when appending to an existing database.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Compressed
        #@TestID              Compressed
        #@TestPurpose         Verify an import task of a LDIF file specifying the data to import is compressed.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Encrypted
        #@TestID              Encrypted
        #@TestPurpose         Verify an import task of a LDIF file specifying the data to import is encrypted.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Hashed Signed
        #@TestID              Hashed Signed
        #@TestPurpose         Verify an import task of a LDIF file specifying the data to import is hashed/signed.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Rejects File
        #@TestID              Rejects File
        #@TestPurpose         Verify an import task of a LDIF file specifying the a path to a file into which rejected entries may be written if they are not accepted during the import process, when the rejects file is not overwritten.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Rejects File Overwrite
        #@TestID              Rejects File Overwrite
        #@TestPurpose         Verify an import task of a LDIF file specifying the a path to a file into which rejected entries may be written if they are not accepted during the import process, when the rejects file is overwritten.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Skip Schema Validation Accept
        #@TestID              Skip Schema Validation Accept
        #@TestPurpose         Verify an import task of a LDIF file containing invalided schema is accepted when skip schema validation is specified
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Skip Schema Validation Reject
        #@TestID              Skip Schema Validation Reject
        #@TestPurpose         Verify an import task of a LDIF file containing invalided schema is rejected when skip schema validation is not specified
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
      <parallel>
      
       <!--- Test Case information
        #@TestMarker          Backend Import Tasks Tests
        #@TestName            Import Tasks: Error Codes
        #@TestID              Error Codes
        #@TestPurpose         Verify an import task fails with an error code.
        #@TestPreamble
        #@TestSteps
        #@TestPostamble
        #@TestResult
      -->
        <block name="'Block DS Process Active'">
          <!--- Block : DS -->
          <testcase name="'StartDS'">
            <sequence>
              <message>
                 'Start DS to run on port %s' % (DIRECTORY_INSTANCE_PORT)
              </message>
              <!--- Start DS -->
              <call function="'startDS'">
                { 'dsbinpath' : '%s' % (OPENDS_BINPATH) }
              </call>
              <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
              </call>
            </sequence>
          </testcase>
        <!--- Block : DS -->
        </block>
        <!--- Block : Test Cases -->
        <block name="'Block Test Cases Active'">
          <sequence>
            <!--- Check that DS started -->
            <call function="'isAlive'">
              { 'noOfLoops'        : 5 ,
                'noOfMilliSeconds' : 2000 }
            </call>
            <!--- Test Suite information
              #@TestSuiteName       Backend Import Tasks Tests
              #@TestSuitePurpose    Verify that the basic import using the task based functionality is working in the Directory Server.
              #@TestSuiteID         Import Tasks Tests
              #@TestSuiteGroup      Import-Tasks
              #@TestGroup           Backend
              #@TestScript          import-tasks.xml
              #@TestHTMLLink        http://opends.dev.java.net/
            -->
      
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: LDIF Default
              #@TestID              LDIF Default
              #@TestPurpose         Verify an import task of a LDIF file using the default backend.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: LDIF Default'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort' : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'   : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
                    'taskID'         : STAXCurrentTestcase,
                    'ldifFile'       : '%s/backends/Example.ldif' % STAGED_DATA_DIR,
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries' : ['uid=scarter,ou=People,dc=example,dc=com',
                                         'uid=dmiller, ou=People, dc=example,dc=com',
                                         'uid=rhunt, ou=People, dc=example,dc=com'],
                     'startDS'        : 'no'
                   }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: LDIF Non Default
              #@TestID              LDIF Non Default
              #@TestPurpose         Verify an import task of a LDIF file using a differrent backend to the default.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Fractional Include Branch
              #@TestID              Fractional Include Branch
              #@TestPurpose         Verify an import task of a LDIF file specifying a branch that should be included in the import.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Fractional Include Branch'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost'  : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort'  : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'    : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd'  : DIRECTORY_INSTANCE_PSWD,
                    'taskID'          : STAXCurrentTestcase,
                    'ldifFile'        : '%s/backends/Include.ldif' % STAGED_DATA_DIR,
                    'includeBranches' : 'dc=com',
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries' : ['uid=scarter,ou=People,dc=example,dc=com',
                                         'uid=dmiller, ou=People, dc=example,dc=com',
                                         'uid=rhunt, ou=People, dc=example,dc=com'],
                    'startDS'         : 'no'
                  }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Fractional Include Branches
              #@TestID              Fractional Include Branches
              #@TestPurpose         Verify an import task of a LDIF file specifying multiple branches that should be included in the import.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Fractional Include Branches'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost'  : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort'  : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'    : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd'  : DIRECTORY_INSTANCE_PSWD,
                    'taskID'          : STAXCurrentTestcase,
                    'ldifFile'        : '%s/backends/Include.ldif' % STAGED_DATA_DIR,
                    'includeBranches' : ['dc=com','dc=example,dc=com']
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries' : ['uid=scarter,ou=People,dc=example,dc=com',
                                         'uid=dmiller, ou=People, dc=example,dc=com',
                                         'uid=rhunt, ou=People, dc=example,dc=com'],
                    'startDS'         : 'no'
                  }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Fractional Exclude Branch
              #@TestID              Fractional Exclude Branch
              #@TestPurpose         Verify an import task of a LDIF file specifying a branch that should be excluded in the import.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Fractional Exclude Branch'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost'  : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort'  : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'    : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd'  : DIRECTORY_INSTANCE_PSWD,
                    'taskID'          : STAXCurrentTestcase,
                    'ldifFile'        : '%s/backends/Exclude.ldif' % STAGED_DATA_DIR,
                    'excludeBranches' : 'ou=Departed,ou=People,dc=example,dc=com',
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries' : ['uid=scarter,ou=People,dc=example,dc=com',
                                         'uid=dmiller, ou=People, dc=example,dc=com',
                                         'uid=rhunt, ou=People, dc=example,dc=com'],
                    'missingEntries'  : ['uid=fvinker,ou=Departed,ou=People,dc=example,dc=com',
                                         'uid=brammage,ou=Departed,ou=People,dc=example,dc=com'],
                    'startDS'         : 'no'
                  }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Fractional Exclude Branches
              #@TestID              Fractional Exclude Branches
              #@TestPurpose         Verify an import task of a LDIF file specifying multiple branches that should be excluded in the import.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Fractional Exclude Branches'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost'  : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort'  : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'    : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd'  : DIRECTORY_INSTANCE_PSWD,
                    'taskID'          : STAXCurrentTestcase,
                    'ldifFile'        : '%s/backends/Exclude.ldif' % STAGED_DATA_DIR,
                    'excludeBranches' : ['ou=Departed,ou=People,dc=example,dc=com',
                                         'cn=QA Managers,ou=groups,dc=example,dc=com']
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries' : ['uid=scarter,ou=People,dc=example,dc=com',
                                         'uid=dmiller, ou=People, dc=example,dc=com',
                                         'uid=rhunt, ou=People, dc=example,dc=com'],
                    'missingEntries'  : ['uid=fvinker,ou=Departed,ou=People,dc=example,dc=com',
                                         'uid=brammage,ou=Departed,ou=People,dc=example,dc=com',
                                         'uid=bbaret,cn=QA Managers,ou=groups,dc=example,dc=com'],
                    'startDS'         : 'no'
                  }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Fractional Branches Mix
              #@TestID              Fractional Branches Mix
              #@TestPurpose         Verify an import task of a LDIF file specifying a mix of include and exclude branches.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Fractional Branches Mix'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost'  : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort'  : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'    : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd'  : DIRECTORY_INSTANCE_PSWD,
                    'taskID'          : STAXCurrentTestcase,
                    'ldifFile'        : '%s/backends/Exclude.ldif' % STAGED_DATA_DIR,
                    'includeBranches' : 'dc=com',
                    'excludeBranches' : 'ou=Departed,ou=People,dc=example,dc=com',
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries' : ['uid=scarter,ou=People,dc=example,dc=com',
                                         'uid=dmiller, ou=People, dc=example,dc=com',
                                         'uid=rhunt, ou=People, dc=example,dc=com'],
                    'missingEntries'  : ['uid=fvinker,ou=Departed,ou=People,dc=example,dc=com',
                                         'uid=brammage,ou=Departed,ou=People,dc=example,dc=com'],
                    'startDS'         : 'no'
                  }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Fractional Include Attribute
              #@TestID              Fractional Include Attribute
              #@TestPurpose         Verify an import task of a LDIF file specifying an attribute that should be included in the import.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Fractional Include Attribute'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost'  : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort'  : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'    : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd'  : DIRECTORY_INSTANCE_PSWD,
                    'taskID'          : STAXCurrentTestcase,
                    'ldifFile'        : '%s/backends/Include.ldif' % STAGED_DATA_DIR,
                    'includeAttributes' : 'dc',
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries' : ['dc=com','dc=example,dc=com'],
                    'missingEntries'  : ['ou=People,dc=example,dc=com'],
                    'startDS'         : 'no'
                  }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Fractional Include Attributes
              #@TestID              Fractional Include Attributes
              #@TestPurpose         Verify an import task of a LDIF file specifying multiple attributes that should be included in the import.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Fractional Include Attributes'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost'  : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort'  : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'    : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd'  : DIRECTORY_INSTANCE_PSWD,
                    'taskID'          : STAXCurrentTestcase,
                    'ldifFile'        : '%s/backends/Include.ldif' % STAGED_DATA_DIR,
                    'includeAttributes' : ['dc','cn','ou','sn']
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries' : ['uid=scarter,ou=People,dc=example,dc=com',
                                         'uid=dmiller,ou=People,dc=example,dc=com',
                                         'uid=rhunt,ou=People,dc=example,dc=com'],
                    'startDS'         : 'no'
                  }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Fractional Exclude Attribute
              #@TestID              Fractional Exclude Attribute
              #@TestPurpose         Verify an import task of a LDIF file specifying an attribute that should be excluded in the import.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Fractional Exclude Attribute'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost'    : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort'    : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'      : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd'    : DIRECTORY_INSTANCE_PSWD,
                    'taskID'            : STAXCurrentTestcase,
                    'ldifFile'          : '%s/backends/Exclude.ldif' % STAGED_DATA_DIR,
                    'excludeAttributes' : 'userpassword'
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries'   : ['uid=scarter,ou=People,dc=example,dc=com'],
                    'missingAttributes' : ['userpassword'],
                    'startDS'         : 'no'
                  }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Fractional Exclude Attributes
              #@TestID              Fractional Exclude Attributes
              #@TestPurpose         Verify an import task of a LDIF file specifying multiple attribute that should be excluded in the import.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Fractional Exclude Attributes'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost'    : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort'    : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'      : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd'    : DIRECTORY_INSTANCE_PSWD,
                    'taskID'            : STAXCurrentTestcase,
                    'ldifFile'          : '%s/backends/Exclude.ldif' % STAGED_DATA_DIR,
                    'excludeAttributes' : ['userpassword','mail','roomnumber']
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries'   : ['uid=scarter,ou=People,dc=example,dc=com'],
                    'missingAttributes' : ['userpassword','mail','roomnumber'],
                    'startDS'         : 'no'
                  }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Fractional Mix
              #@TestID              Fractional Mix
              #@TestPurpose         Verify an import task of a LDIF file specifying a mix of fractional attributes and branches.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Fractional Mix'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost'    : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort'    : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'      : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd'    : DIRECTORY_INSTANCE_PSWD,
                    'taskID'            : STAXCurrentTestcase,
                    'ldifFile'          : '%s/backends/Exclude.ldif' % STAGED_DATA_DIR,
                    'includeBranches'   : ['dc=com','dc=example,dc=com','ou=People,dc=example,dc=com'],
                    'excludeBranches'   : 'ou=Departed,ou=People,dc=example,dc=com',
                    'includeAttributes' : ['dc','cn','ou','sn'],
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries' : ['uid=scarter,ou=People,dc=example,dc=com',
                                         'uid=dmiller, ou=People, dc=example,dc=com',
                                         'uid=rhunt, ou=People, dc=example,dc=com'],
                    'missingEntries'  : ['uid=fvinker,ou=Departed,ou=People,dc=example,dc=com',
                                         'uid=brammage,ou=Departed,ou=People,dc=example,dc=com'],
                    'startDS'         : 'no'
                  }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Filtered Include
              #@TestID              Filtered Include
              #@TestPurpose         Verify an import task of a LDIF file specifying a search filter control which entries are included in the import.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Filtered Include'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost'  : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort'  : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'    : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd'  : DIRECTORY_INSTANCE_PSWD,
                    'taskID'          : STAXCurrentTestcase,
                    'ldifFile'        : '%s/backends/Include.ldif' % STAGED_DATA_DIR,
                    'includeFilters'  : 'objectclass=*',
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries' : ['uid=scarter,ou=People,dc=example,dc=com',
                                         'uid=dmiller,ou=People,dc=example,dc=com',
                                         'uid=rhunt,ou=People,dc=example,dc=com'],
                    'startDS'         : 'no'
                  }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Filtered Exclude
              #@TestID              Filtered Exclude
              #@TestPurpose         Verify an import task of a LDIF file specifying a search filter control which entries are excluded in the import.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Filtered Exclude'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost'  : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort'  : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'    : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd'  : DIRECTORY_INSTANCE_PSWD,
                    'taskID'          : STAXCurrentTestcase,
                    'ldifFile'        : '%s/backends/Exclude.ldif' % STAGED_DATA_DIR,
                    'excludeFilters'  : 'objectclass=person',
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries' : ['dc=example,dc=com',
                                         'ou=People,dc=example,dc=com'],
                    'missingEntries'  : ['uid=scarter,ou=People,dc=example,dc=com',
                                         'uid=dmiller,ou=People,dc=example,dc=com',
                                         'uid=rhunt,ou=People,dc=example,dc=com'],
                    'startDS'         : 'no'
                  }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Filtered Includes
              #@TestID              Filtered Includes
              #@TestPurpose         Verify an import task of a LDIF file specifying multiple search filters control which entries are included in the import.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Filtered Includes'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost'  : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort'  : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'    : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd'  : DIRECTORY_INSTANCE_PSWD,
                    'taskID'          : STAXCurrentTestcase,
                    'ldifFile'        : '%s/backends/Include.ldif' % STAGED_DATA_DIR,
                    'includeFilters'  : ['objectclass=domain*','objectclass=organizationalunit']
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries' : ['dc=example,dc=com',
                                         'ou=People,dc=example,dc=com'],
                    'missingEntries' : ['uid=scarter,ou=People,dc=example,dc=com',
                                        'uid=dmiller,ou=People,dc=example,dc=com',
                                        'uid=rhunt,ou=People,dc=example,dc=com'],
                    'startDS'         : 'no'
                  }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Filtered Excludes
              #@TestID              Filtered Excludes
              #@TestPurpose         Verify an import task of a LDIF file specifying multiple search filters control which entries are excluded in the import.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Filtered Excludes'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost'  : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort'  : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'    : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd'  : DIRECTORY_INSTANCE_PSWD,
                    'taskID'          : STAXCurrentTestcase,
                    'ldifFile'        : '%s/backends/Exclude.ldif' % STAGED_DATA_DIR,
                    'excludeFilters'  : ['objectclass=person','objectclass=organizationalunit'],
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries' : ['dc=example,dc=com'],
                    'missingEntries'  : ['ou=People,dc=example,dc=com'],
                    'startDS'         : 'no'
                  }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Filtered Includes Complex
              #@TestID              Filtered Includes Complex
              #@TestPurpose         Verify an import task of a LDIF file specifying complex search filters control which entries are included in the import.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Filtered Includes Complex'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost'  : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort'  : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'    : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd'  : DIRECTORY_INSTANCE_PSWD,
                    'taskID'          : STAXCurrentTestcase,
                    'ldifFile'        : '%s/backends/Include.ldif' % STAGED_DATA_DIR,
                    'includeFilters'  : '|(objectclass=person)(objectclass=domain)(objectclass=organizationalunit)',
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries' : ['uid=scarter,ou=People,dc=example,dc=com',
                                         'uid=dmiller,ou=People,dc=example,dc=com',
                                         'uid=rhunt,ou=People,dc=example,dc=com'],
                    'startDS'         : 'no'
                  }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Filtered Excludes Complex
              #@TestID              Filtered Excludes Complex
              #@TestPurpose         Verify an import task of a LDIF file specifying complex search filters control which entries are excluded in the import.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Filtered Excludes Complex'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost'  : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort'  : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'    : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd'  : DIRECTORY_INSTANCE_PSWD,
                    'taskID'          : STAXCurrentTestcase,
                    'ldifFile'        : '%s/backends/Exclude.ldif' % STAGED_DATA_DIR,
                    'excludeFilters'  : '&amp;(objectclass=person)(ou=Departed)',
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries' : ['uid=rhunt,ou=People,dc=example,dc=com'],
                    'missingEntries'  : ['uid=fvinker,ou=Departed,ou=People,dc=example,dc=com'],
                    'startDS'         : 'no'
                  }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Fractional Filtered Mix
              #@TestID              Fractional Filtered Mix
              #@TestPurpose         Verify an import task of a LDIF file specifying a mix of fractional and filtered.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Fractional Filtered Mix'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost'    : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort'    : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'      : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd'    : DIRECTORY_INSTANCE_PSWD,
                    'taskID'            : STAXCurrentTestcase,
                    'ldifFile'          : '%s/backends/Exclude.ldif' % STAGED_DATA_DIR,
                    'excludeFilters'    : '&amp;(objectclass=person)(ou=Departed)',
                    'includeBranches'   : 'dc=com',
                    'excludeAttributes' : 'userpassword'
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries'   : ['uid=scarter,ou=People,dc=example,dc=com'],
                    'missingAttributes' : ['userpassword'],
                    'startDS'           : 'no'
                  }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Append
              #@TestID              Append
              #@TestPurpose         Verify an import task of a LDIF file specifying that the import process should append to the existing database.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Append'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort' : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'   : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
                    'taskID'         : STAXCurrentTestcase,
                    'ldifFile'       : '%s/backends/Append.ldif' % STAGED_DATA_DIR,
                    'append'         : 'TRUE'
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries'  : ['ou=Departed,ou=People,dc=example,dc=com',
                                          'uid=fvinker,ou=Departed,ou=People,dc=example,dc=com',
                                          'uid=brammage,ou=Departed,ou=People,dc=example,dc=com'],
                    'startDS'         : 'no'
                  }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks:Append Replace Existing
              #@TestID              Append Replace Existing
              #@TestPurpose         Verify an import task of a LDIF file specifying that an existing entry should be replaced when appending to an existing database.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Append Replace Existing'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost'  : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort'  : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'    : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd'  : DIRECTORY_INSTANCE_PSWD,
                    'taskID'          : STAXCurrentTestcase,
                    'ldifFile'        : '%s/backends/Append.ldif' % STAGED_DATA_DIR,
                    'append'          : 'TRUE',
                    'replaceExisting' : 'TRUE'
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries'  : ['ou=Departed,ou=People,dc=example,dc=com',
                                          'uid=fvinker,ou=Departed,ou=People,dc=example,dc=com',
                                          'uid=brammage,ou=Departed,ou=People,dc=example,dc=com'],
                    'startDS'         : 'no'
                  }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Compressed
              #@TestID              Compressed
              #@TestPurpose         Verify an import task of a LDIF file specifying the data to import is compressed.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Compressed'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort' : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'   : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
                    'taskID'         : STAXCurrentTestcase,
                    'ldifFile'       : '%s/backends/Example.ldif.gz' % STAGED_DATA_DIR,
                    'isCompressed'   : 'TRUE'
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries' : ['uid=scarter,ou=People,dc=example,dc=com',
                                         'uid=dmiller,ou=People,dc=example,dc=com',
                                         'uid=rhunt,ou=People,dc=example,dc=com'],
                    'startDS'         : 'no'
                  }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Encrypted
              #@TestID              Encrypted
              #@TestPurpose         Verify an import task of a LDIF file specifying the data to import is encrypted.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Encrypted'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort' : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'   : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
                    'taskID'         : STAXCurrentTestcase,
                    'ldifFile'       : '%s/backends/Example.ldif' % STAGED_DATA_DIR,
                    'isEncrypted'    : 'TRUE'
                  }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries' : ['uid=scarter,ou=People,dc=example,dc=com',
                                         'uid=dmiller,ou=People,dc=example,dc=com',
                                         'uid=rhunt,ou=People,dc=example,dc=com'],
                    'startDS'         : 'no'
                  }
                </call>
                <!-- This test should fail. -->
                <tcstatus result="'fail'"/>
                <message log="1" level="'Error'">
                 'Error: Known bug. Issue 839: Encrypted LDIF export is not implemented'
                </message>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Hashed Signed
              #@TestID              Hashed Signed
              #@TestPurpose         Verify an import task of a LDIF file specifying the data to import is hashed/signed.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!-- Test Not Implemented. Feature not avaliable -->
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Rejects File
              #@TestID              Rejects File
              #@TestPurpose         Verify an import task of a LDIF file specifying the a path to a file into which rejected entries may be written if they are not accepted during the import process, when the rejects file is not overwritten.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Rejects File'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort' : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'   : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
                    'taskID'         : STAXCurrentTestcase,
                    'ldifFile'       : '%s/backends/Example.ldif' % STAGED_DATA_DIR,
                    'rejectsFile'    : './rejects'
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries' : ['uid=scarter,ou=People,dc=example,dc=com',
                                         'uid=dmiller,ou=People,dc=example,dc=com',
                                         'uid=rhunt,ou=People,dc=example,dc=com'],
                    'startDS'         : 'no'
                  }
                </call>
                <!-- Should check there is a rejects file and the contents are correct -->
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Rejects File Overwrite
              #@TestID              Rejects File Overwrite
              #@TestPurpose         Verify an import task of a LDIF file specifying the a path to a file into which rejected entries may be written if they are not accepted during the import process, when the rejects file is overwritten.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Rejects File'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort'       : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'         : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD,
                    'taskID'               : STAXCurrentTestcase,
                    'ldifFile'             : '%s/backends/Example.ldif' % STAGED_DATA_DIR,
                    'rejectsFile'          : './rejects',
                    'overwriteRejectsFile' : 'TRUE'
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries' : ['uid=scarter,ou=People,dc=example,dc=com',
                                         'uid=dmiller,ou=People,dc=example,dc=com',
                                         'uid=rhunt,ou=People,dc=example,dc=com'],
                    'startDS'         : 'no'
                  }
                </call>
                <!-- Should check there is a rejects file and the contents are correct -->
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Skip Schema Validation Accept
              #@TestID              Skip Schema Validation Accept
              #@TestPurpose         Verify an import task of a LDIF file containing invalided schema is accepted when skip schema validation is specified
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Skip Schema Validation Accept'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort'       : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'         : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD,
                    'taskID'               : STAXCurrentTestcase,
                    'ldifFile'             : '%s/backends/Schema.ldif' % STAGED_DATA_DIR,
                    'skipSchemaValidation' : 'TRUE'
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries' : ['uid=scarter,ou=People,dc=example,dc=com',
                                         'uid=dmiller,ou=People,dc=example,dc=com',
                                         'uid=kwinters,ou=People,dc=example,dc=com'],
                    'startDS'         : 'no'
                  }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
            <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Skip Schema Validation Reject
              #@TestID              Skip Schema Validation Reject
              #@TestPurpose         Verify an import task of a LDIF file containing invalided schema is rejected when skip schema validation is not specified
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <testcase name="'Import Tasks: Skip Schema Validation Reject'">
              <sequence>
                <call function="'testCaseStartBanner'"/>
                <call function="'importLdifTask'">
                  { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
                    'dsInstancePort'       : DIRECTORY_INSTANCE_PORT,
                    'dsInstanceDn'         : DIRECTORY_INSTANCE_DN,
                    'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD,
                    'taskID'               : STAXCurrentTestcase,
                    'ldifFile'             : '%s/backends/Schema.ldif' % STAGED_DATA_DIR,
                    'skipSchemaValidation' : 'FALSE'
                  }
                </call>
                <call function="'checktestRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
                </call>
                <call function="'checkImport'">
                  { 'expectedEntries' : ['uid=dmiller,ou=People,dc=example,dc=com'],
                    'missingEntries'  : ['uid=scarter,ou=People,dc=example,dc=com',
                                         'uid=kwinters,ou=People,dc=example,dc=com'],
                    'startDS'         : 'no'
                  }
                </call>
                <call function="'testCaseEndBanner'"/>
              </sequence>
            </testcase>
             <!--- Test Case information
              #@TestMarker          Backend Import Tasks Tests
              #@TestName            Import Tasks: Error Codes
              #@TestID              Error Codes
              #@TestPurpose         Verify an import task fails with an error code.
              #@TestPreamble
              #@TestSteps
              #@TestPostamble
              #@TestResult
            -->
            <!-- Need to know what the error codes are -->
            <!--- Test Case : Stop DS -->
            <testcase name="'StopDS'">
              <sequence>
                <message>
                   'Stop DS running on port %s' % (DIRECTORY_INSTANCE_PORT)
                </message>
                <!--- Stop DS -->
                <call function="'stopDS'">
                  { 'dsInstancePort' : '%s' % (DIRECTORY_INSTANCE_PORT) }
                </call>
                <call function="'checktestRC'">
                    { 'returncode' : RC ,
                      'result'     : STAXResult }
                </call>
              </sequence>
            </testcase>
          </sequence>
        <!--- Block : Test Cases -->
        </block>
      </parallel>
    </sequence>
  </function>