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

Christophe Sovant
14.16.2008 ea9da534847c609d20e31be9771c8a8621cf2d08
Add testsuite for make-ldif, list-backends and encode-password tools
6 files added
2 files modified
1294 ■■■■■ changed files
opends/tests/functional-tests/shared/data/clu/clear_password.ref 1 ●●●● patch | view | raw | blame | history
opends/tests/functional-tests/shared/data/clu/encoded_password.ref 1 ●●●● patch | view | raw | blame | history
opends/tests/functional-tests/shared/data/clu/make-ldif_template.ref 23 ●●●●● patch | view | raw | blame | history
opends/tests/functional-tests/testcases/clu/clu.xml 5 ●●●● patch | view | raw | blame | history
opends/tests/functional-tests/testcases/clu/clu_encode-password_checkbehavior.xml 535 ●●●●● patch | view | raw | blame | history
opends/tests/functional-tests/testcases/clu/clu_list-backends_checkbehavior.xml 358 ●●●●● patch | view | raw | blame | history
opends/tests/functional-tests/testcases/clu/clu_make-ldif_checkbehavior.xml 367 ●●●●● patch | view | raw | blame | history
opends/tests/shared/functions/tools.xml 4 ●●●● patch | view | raw | blame | history
opends/tests/functional-tests/shared/data/clu/clear_password.ref
New file
@@ -0,0 +1 @@
mypassword
opends/tests/functional-tests/shared/data/clu/encoded_password.ref
New file
@@ -0,0 +1 @@
{SSHA}S9xl7VJy0BFkDDovdixlIz6dcE2h2kOXfDZfCg==
opends/tests/functional-tests/shared/data/clu/make-ldif_template.ref
New file
@@ -0,0 +1,23 @@
define base=dc=com
define suffix=dc=example,[base]
define orgunit=o=clu tests,[suffix]
define maildomain=example.com
define numusers=160
branch: ou=make-ldif,[orgunit]
subordinateTemplate: person:[numusers]
template: person
rdnAttr: uid
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
givenName: <first>
sn: <last>
employeeNumber: <sequential:0>
cn: {givenName} {sn} {employeeNumber}
uid: user.{employeeNumber}
mail: {uid}@[maildomain]
telephoneNumber: <random:telephone>
description: This is the description for user.{employeeNumber}.
opends/tests/functional-tests/testcases/clu/clu.xml
@@ -61,7 +61,10 @@
            testList.append(['.','clu_ldappasswordmodify_checkbehavior'])
            testList.append(['.','clu_ldifsearch_checkbehavior'])
            testList.append(['.','clu_verify-index_checkbehavior'])
            testList.append(['.','clu_rebuild-index_checkbehavior'])
            testList.append(['.','clu_rebuild-index_checkbehavior'])
            testList.append(['.','clu_encode-password_checkbehavior'])
            testList.append(['.','clu_make-ldif_checkbehavior'])
            testList.append(['.','clu_list-backends_checkbehavior'])
            testList.append(['.','clu_cleanup'])
          </script>
          
opends/tests/functional-tests/testcases/clu/clu_encode-password_checkbehavior.xml
New file
@@ -0,0 +1,535 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
<!--
 ! CDDL HEADER START
 !
 ! The contents of this file are subject to the terms of the
 ! Common Development and Distribution License, Version 1.0 only
 ! (the "License").  You may not use this file except in compliance
 ! with the License.
 !
 ! You can obtain a copy of the license at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
 ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 ! See the License for the specific language governing permissions
 ! and limitations under the License.
 !
 ! When distributing Covered Code, exclude this CDDL HEADER in each
 ! file and exclude the License file at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 ! add the following below this CDDL HEADER, with the fields enclosed
 ! by brackets "[]" replaced with your own identifying information:
 !      Portions Copyright [yyyy] [name of copyright owner]
 !
 ! CDDL HEADER END
 !
 !      Copyright 2008 Sun Microsystems, Inc.
 ! -->
<stax>
  <defaultcall function="clu_encode-password_checkbehavior"/>
  <function name="clu_encode-password_checkbehavior">
    <sequence>
      <block name="'clu_encode-password_checkbehavior'">
        <sequence>
          <!--- Test Suite information
            #@TestSuiteName     encode-password check behavior tests
            #@TestSuitePurpose  Test the results of the encode-password command.
            #@TestSuiteGroup    encode-password check behavior tests
            #@TestScript        clu_encode-password_checkbehavior.xml
          -->
          <script>
            if not CurrentTestPath.has_key('group'):
              CurrentTestPath['group'] = 'clu'
            CurrentTestPath['suite'] = STAXCurrentBlock
          </script>
          <call function="'testSuite_Preamble'"/>
          <!--- Define default value for clearFile and encodedFile -->
          <script>
            clearFile   = '%s/clu/clear_password.ref' % logsRemoteDataDir
            encodedFile = '%s/clu/encoded_password.ref' % logsRemoteDataDir
          </script>
          <!--- Test Case information
            #@TestMarker          encode-password check behavior tests
            #@TestName            encode-password: list available schemes
            #@TestIssue           none
            #@TestPurpose         Test encode-password with listSchemes option.
            #@TestPreamble        none
            #@TestStep            Do an encode-password with listSchemes option.
            #@TestPostamble       none
            #@TestResult          Success if encode-password returns 0.
          -->
          <testcase name="getTestCaseName
          ('encode-password: list available schemes')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                'encode-password: list available schemes'
              </message>
              <call function="'encodePasswordWithScript'">
                {
                'listSchemes'   : 'True'
                }
              </call>
              <script>
                returnString = STAXResult[0][1]
              </script>
              <call function="'checktestString'">
                {
                'returnString'   : returnString ,
                'expectedString' : 'SSHA'
                }
              </call>
              <call function="'checktestString'">
                {
                'returnString'   : returnString ,
                'expectedString' : 'MD5'
                }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </testcase>
          <!--- Test Case information
            #@TestMarker          encode-password check behavior tests
            #@TestName            encode-password: list available
                                  authPasswordSyntax schemes
            #@TestIssue           none
            #@TestPurpose         Test encode-password with listSchemes and
                                  authPasswordSyntax options.
            #@TestPreamble        none
            #@TestStep            Do an encode-password with listSchemes and
                                  authPasswordSyntax options.
            #@TestPostamble       none
            #@TestResult          Success if encode-password returns 0.
          -->
          <testcase name="getTestCaseName
          ('encode-password: list available authPasswordSyntax schemes')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                'encode-password: list available authPasswordSyntax schemes'
              </message>
              <call function="'encodePasswordWithScript'">
                {
                'listSchemes'   : 'True' ,
                'authPwdSyntax' : 'True'
                }
              </call>
              <script>
                returnString = STAXResult[0][1]
              </script>
              <call function="'checktestString'">
                {
                'returnString'   : returnString ,
                'expectedString' : 'SHA1'
                }
              </call>
              <call function="'checktestString'">
                {
                'returnString'   : returnString ,
                'expectedString' : 'MD5'
                }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </testcase>
          <!--- Test Case information
            #@TestMarker          encode-password check behavior tests
            #@TestName            encode-password: encode clear-text pwd
            #@TestIssue           none
            #@TestPurpose         Test encode-password to encode clear-text pwd.
            #@TestPreamble        none
            #@TestStep            Do an encode-password to encode clear-text pwd
            #@TestStep            Remove schemes tag from pwd for next testcases
            #@TestPostamble       none
            #@TestResult          Success if encode-password returns 0.
          -->
          <testcase name="getTestCaseName
          ('encode-password: encode clear-text pwd')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                'encode-password: encode clear-text pwd'
              </message>
              <call function="'encodePasswordWithScript'">
                {
                'clearPwd'      : 'mypassword' ,
                'storageScheme' : 'SSHA'
                }
              </call>
              <script>
                returnString = STAXResult[0][1]
                cmdResult = returnString.split(':')
                pwd = cmdResult[1].strip().replace('{SSHA}', '')
              </script>
              <call function="'checktestString'">
                {
                'returnString'   : returnString ,
                'expectedString' : 'Encoded Password:'
                }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </testcase>
          <!--- Test Case information
            #@TestMarker          encode-password check behavior tests
            #@TestName            encode-password: encode clear-text pwd using
                                  authPasswordSyntax
            #@TestIssue           none
            #@TestPurpose         Test encode-password to encode clear-text pwd
                                  using authPasswordSyntax.
            #@TestPreamble        none
            #@TestStep            Do an encode-password to encode clear-text
                                  with -a option.
            #@TestPostamble       none
            #@TestResult          Success if encode-password returns 0.
          -->
          <testcase name="getTestCaseName
          ('encode-password: encode clear-text pwd using authPasswordSyntax')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                'encode-password: encode clear-text pwd using \
                authPasswordSyntax'
              </message>
              <call function="'encodePasswordWithScript'">
                {
                'clearPwd'      : 'mypassword' ,
                'storageScheme' : 'SHA1' ,
                'authPwdSyntax' : 'True'
                }
              </call>
              <script>
                returnString = STAXResult[0][1]
                cmdResult = returnString.split(':')
                pwd2 = cmdResult[1].strip().replace('"', '')
              </script>
              <call function="'checktestString'">
                {
                'returnString'   : returnString ,
                'expectedString' : 'Encoded Password:'
                }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </testcase>
          <!--- Test Case information
            #@TestMarker          encode-password check behavior tests
            #@TestName            encode-password: compare pwds
            #@TestIssue           none
            #@TestPurpose         Test encode-password to compare pwds.
            #@TestPreamble        none
            #@TestStep            Do an encode-password to compare pwds without
                                  storageScheme option
            #@TestStep            Do an encode-password to compare good pwds with
                                  storageSchema option
            #@TestStep            Do an encode-password to compare bad pws with
                                  storageSchema option
            #@TestPostamble       none
            #@TestResult          Success if encode-password returns 1 for the
                                  fisrt test and 0 otherwise, and if the outputs
                                  are corrects.
          -->
          <testcase name="getTestCaseName
          ('encode-password: compare pwd')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                'encode-password: comparison error'
              </message>
              <call function="'encodePasswordWithScript'">
                {
                'clearPwd'      : 'mypassword' ,
                'encodedPwd'    : pwd ,
                'expectedRC'    : 1
                }
              </call>
              <script>
                returnString = STAXResult[0][1]
              </script>
              <call function="'checktestString'">
                {
                'returnString'   : returnString ,
                'expectedString' : 'No password storage scheme was specified'
                }
              </call>
              <message>
                'encode-password: comparison successful'
              </message>
              <call function="'encodePasswordWithScript'">
                {
                'clearPwd'      : 'mypassword' ,
                'encodedPwd'    : pwd ,
                'storageScheme' : 'SSHA'
                }
              </call>
              <script>
                returnString = STAXResult[0][1]
                msg = 'The provided clear-text and encoded passwords match'
              </script>
              <call function="'checktestString'">
                {
                'returnString'   : returnString ,
                'expectedString' : msg
                }
              </call>
              <message>
                'encode-password: comparison unsuccessful'
              </message>
              <call function="'encodePasswordWithScript'">
                {
                'clearPwd'      : 'password' ,
                'encodedPwd'    : pwd ,
                'storageScheme' : 'SSHA'
                }
              </call>
              <script>
                returnString = STAXResult[0][1]
                msg='The provided clear-text and encoded passwords do not match'
              </script>
              <call function="'checktestString'">
                {
                'returnString'   : returnString ,
                'expectedString' : msg
                }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </testcase>
          <!--- Test Case information
            #@TestMarker          encode-password check behavior tests
            #@TestName            encode-password: compare pwds encoded with
                                  -a option
            #@TestIssue           none
            #@TestStep            Do an encode-password to compare pwds without
                                  -a option and with -r option
            #@TestStep            Do an encode-password to compare good pwds with
                                  -a and -r options
            #@TestStep            Do an encode-password to compare bad pws with
                                  -a and -r options
            #@TestPostamble       none
            #@TestResult          Success if encode-password returns 1 for the
                                  fisrt test, 6 when the comparison is successful,
                                  5 when the comparison is unsuccessful, and if the
                                  outputs are corrects.
          -->
          <testcase name="getTestCaseName
          ('encode-password: compare pwd with -r option')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                'encode-password: comparison error'
              </message>
              <call function="'encodePasswordWithScript'">
                {
                'clearPwd'      : 'mypassword' ,
                'encodedPwd'    : pwd2 ,
                'useCmpRC'      : 'True' ,
                'expectedRC'    : 1
                }
              </call>
              <script>
                returnString = STAXResult[0][1]
              </script>
              <call function="'checktestString'">
                {
                'returnString'   : returnString ,
                'expectedString' : 'No password storage scheme was specified'
                }
              </call>
              <message>
                'encode-password: comparison successful'
              </message>
              <call function="'encodePasswordWithScript'">
                {
                'clearPwd'      : 'mypassword' ,
                'encodedPwd'    : pwd2 ,
                'authPwdSyntax' : 'True' ,
                'useCmpRC'      : 'True' ,
                'expectedRC'    : 6
                }
              </call>
              <script>
                returnString = STAXResult[0][1]
                msg = 'The provided clear-text and encoded passwords match'
              </script>
              <call function="'checktestString'">
                {
                'returnString'   : returnString ,
                'expectedString' : msg
                }
              </call>
              <message>
                'encode-password: comparison unsuccessful'
              </message>
              <call function="'encodePasswordWithScript'">
                {
                'clearPwd'      : 'password' ,
                'encodedPwd'    : pwd2 ,
                'authPwdSyntax' : 'True' ,
                'useCmpRC'      : 'True' ,
                'expectedRC'    : 5
                }
              </call>
              <script>
                returnString = STAXResult[0][1]
                msg='The provided clear-text and encoded passwords do not match'
              </script>
              <call function="'checktestString'">
                {
                'returnString'   : returnString ,
                'expectedString' : msg
                }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </testcase>
          <!--- Test Case information
            #@TestMarker          encode-password check behavior tests
            #@TestName            encode-password: compare pwds using files
            #@TestIssue           none
            #@TestPurpose         Test encode-password to compare password using
                                  files.
            #@TestPreamble        none
            #@TestStep            Do an encode-password to compare good pwds
                                  stored in files and using -r option.
            #@TestPostamble       none
            #@TestResult          Success if encode-password returns 6 and the
                                  output is correct.
          -->
          <testcase name="getTestCaseName
          ('encode-password: compare pwd using file')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                'encode-password: comparison successful'
              </message>
              <call function="'encodePasswordWithScript'">
                {
                'clearPwdFile'   : clearFile ,
                'encodedPwdFile' : encodedFile ,
                'useCmpRC'       : 'True' ,
                'expectedRC'     : 6
                }
              </call>
              <script>
                returnString = STAXResult[0][1]
                msg = 'The provided clear-text and encoded passwords match'
              </script>
              <call function="'checktestString'">
                {
                'returnString'   : returnString ,
                'expectedString' : msg
                }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </testcase>
          <call function="'testSuite_Postamble'"/>
        </sequence>
      </block>
    </sequence>
  </function>
</stax>
opends/tests/functional-tests/testcases/clu/clu_list-backends_checkbehavior.xml
New file
@@ -0,0 +1,358 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
<!--
 ! CDDL HEADER START
 !
 ! The contents of this file are subject to the terms of the
 ! Common Development and Distribution License, Version 1.0 only
 ! (the "License").  You may not use this file except in compliance
 ! with the License.
 !
 ! You can obtain a copy of the license at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
 ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 ! See the License for the specific language governing permissions
 ! and limitations under the License.
 !
 ! When distributing Covered Code, exclude this CDDL HEADER in each
 ! file and exclude the License file at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 ! add the following below this CDDL HEADER, with the fields enclosed
 ! by brackets "[]" replaced with your own identifying information:
 !      Portions Copyright [yyyy] [name of copyright owner]
 !
 ! CDDL HEADER END
 !
 !      Copyright 2008 Sun Microsystems, Inc.
 ! -->
<stax>
  <defaultcall function="clu_list-backends_checkbehavior"/>
  <function name="clu_list-backends_checkbehavior">
    <sequence>
      <block name="'clu_list-backends_checkbehavior'">
        <sequence>
          <!--- Test Suite information
            #@TestSuiteName     list-backends check behavior tests
            #@TestSuitePurpose  Test the results of the list-backends command.
            #@TestSuiteGroup    list-backends check behavior tests
            #@TestScript        clu_list-backends_checkbehavior.xml
          -->
          <script>
            if not CurrentTestPath.has_key('group'):
              CurrentTestPath['group'] = 'clu'
            CurrentTestPath['suite'] = STAXCurrentBlock
          </script>
          <call function="'testSuite_Preamble'"/>
          <!--- Test Case information
            #@TestMarker          list-backends check behavior tests
            #@TestName            list-backends: without option
            #@TestIssue           none
            #@TestPurpose         Test list-backends without option.
            #@TestPreamble        none
            #@TestStep            Do an list-backends without option.
            #@TestPostamble       none
            #@TestResult          Success if list-backends returns 0 and the
                                  ouput is correct.
          -->
          <testcase name="getTestCaseName
          ('list-backends: without option')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                'list-backends: without option'
              </message>
              <call function="'listBackendsWithScript'">
                {}
              </call>
              <script>
                returnString = STAXResult[0][1]
              </script>
              <call function="'checktestString'">
                {
                'returnString'   : returnString ,
                'expectedString' : 'config         : cn=config'
                }
              </call>
              <call function="'checktestString'">
                {
                'returnString'   : returnString ,
                'expectedString' : 'userRoot       : dc=com'
                }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </testcase>
          <!--- Test Case information
            #@TestMarker          list-backends check behavior tests
            #@TestName            list-backends: backendID option
            #@TestIssue           none
            #@TestPurpose         Test list-backends with backendID option.
            #@TestPreamble        none
            #@TestStep            Do an list-backends with backendID option.
            #@TestPostamble       none
            #@TestResult          Success if list-backends returns 0 and the
                                  ouput is correct.
          -->
          <testcase name="getTestCaseName
          ('list-backends: backendID option')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                'list-backends: backendID option'
              </message>
              <call function="'listBackendsWithScript'">
                {
                'dsBackendID' : 'schema'
                }
              </call>
              <script>
                returnString = STAXResult[0][1]
              </script>
              <call function="'checktestString'">
                {
                'returnString'   : returnString ,
                'expectedString' : 'schema     : cn=schema'
                }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </testcase>
          <!--- Test Case information
            #@TestMarker          list-backends check behavior tests
            #@TestName            list-backends: baseDN option
            #@TestIssue           none
            #@TestPurpose         Test list-backends with baseDN option.
            #@TestPreamble        none
            #@TestStep            Do an list-backends with basedDN option.
            #@TestPostamble       none
            #@TestResult          Success if list-backends returns 0 and the
                                  ouput is correct.
          -->
          <testcase name="getTestCaseName
          ('list-backends: baseDN option')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                'list-backends: baseDN option'
              </message>
              <call function="'listBackendsWithScript'">
                {
                'dsBaseDN'    : 'dc=com'
                }
              </call>
              <script>
                returnString = STAXResult[0][1]
                msg1 = 'The provided DN \'dc=com\' is a base DN'
                msg2 = 'for backend \'userRoot\''
              </script>
              <call function="'checktestString'">
                {
                'returnString'   : returnString ,
                'expectedString' : '%s %s' % (msg1, msg2)
                }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </testcase>
          <!--- Test Case information
            #@TestMarker          list-backends check behavior tests
            #@TestName            list-backends: backendID and baseDN options
            #@TestIssue           none
            #@TestPurpose         Test list-backends with backendID and
                                  baseDN options
            #@TestPreamble        none
            #@TestStep            Do an list-backends with backendID and
                                  baseDN options.
            #@TestPostamble       none
            #@TestResult          Success if list-backends returns 1 and the
                                  ouput is correct.
          -->
          <testcase name="getTestCaseName
          ('list-backends: backendID and baseDN options')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                'list-backends: backendID and baseDN options'
              </message>
              <call function="'listBackendsWithScript'">
                {
                'dsBackendID' : 'userRoot' ,
                'dsBaseDN'    : 'dc=com' ,
                'expectedRC'  : 1
                }
              </call>
              <script>
                returnString = STAXResult[0][1]
                msg1 = 'You may not provide both the --backendID'
                msg2 = 'and the --baseDN arguments'
              </script>
              <call function="'checktestString'">
                {
                'returnString'   : returnString ,
                'expectedString' : '%s %s' % (msg1, msg2)
                }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </testcase>
         <!--- Test Case information
            #@TestMarker          list-backends check behavior tests
            #@TestName            list-backends: invalid backendID
            #@TestIssue           none
            #@TestPurpose         Test list-backends with an invalid backendID
            #@TestPreamble        none
            #@TestStep            Do an list-backends with an invalid backendID
            #@TestPostamble       none
            #@TestResult          Success if list-backends returns 1 and the
                                  ouput is correct.
          -->
          <testcase name="getTestCaseName
          ('list-backends: invalid backendID')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                'list-backends: invalid backendID'
              </message>
              <call function="'listBackendsWithScript'">
                {
                'dsBackendID' : 'mybackend' ,
                'expectedRC'  : 1
                }
              </call>
              <script>
                returnString = STAXResult[0][1]
                msg1 = 'There is no backend with ID \'mybackend\' in the'
                msg2 = 'server configuration'
              </script>
              <call function="'checktestString'">
                {
                'returnString'   : returnString ,
                'expectedString' : '%s %s' % (msg1, msg2)
                }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </testcase>
          <!--- Test Case information
            #@TestMarker          list-backends check behavior tests
            #@TestName            list-backends: invalid baseDN
            #@TestIssue           2594
            #@TestPurpose         Test list-backends with an invalid baseDN
            #@TestPreamble        none
            #@TestStep            Do an list-backends with an invalid baseDN.
            #@TestPostamble       none
            #@TestResult          Success if list-backends returns 1 and the
                                  ouput is correct.
          -->
          <testcase name="getTestCaseName
          ('list-backends: invalid baseDN')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                'list-backends: invalid baseDN'
              </message>
              <call function="'listBackendsWithScript'">
                {
                'dsBaseDN'    : 'dc=mybasedn' ,
                'expectedRC'  : 1
                }
              </call>
              <script>
                returnString = STAXResult[0][1]
                msg1 = 'The provided DN \'dc=mybasedn\' is not a base DN'
                msg2 = 'for any backend configured in the Directory Server'
              </script>
              <call function="'checktestString'">
                {
                'returnString'   : returnString ,
                'expectedString' : '%s %s' % (msg1, msg2)
                }
              </call>
              <script>
                knownIssue(2594)
              </script>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </testcase>
          <call function="'testSuite_Postamble'"/>
        </sequence>
      </block>
    </sequence>
  </function>
</stax>
opends/tests/functional-tests/testcases/clu/clu_make-ldif_checkbehavior.xml
New file
@@ -0,0 +1,367 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
<!--
 ! CDDL HEADER START
 !
 ! The contents of this file are subject to the terms of the
 ! Common Development and Distribution License, Version 1.0 only
 ! (the "License").  You may not use this file except in compliance
 ! with the License.
 !
 ! You can obtain a copy of the license at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
 ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 ! See the License for the specific language governing permissions
 ! and limitations under the License.
 !
 ! When distributing Covered Code, exclude this CDDL HEADER in each
 ! file and exclude the License file at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 ! add the following below this CDDL HEADER, with the fields enclosed
 ! by brackets "[]" replaced with your own identifying information:
 !      Portions Copyright [yyyy] [name of copyright owner]
 !
 ! CDDL HEADER END
 !
 !      Copyright 2008 Sun Microsystems, Inc.
 ! -->
<stax>
  <defaultcall function="clu_make-ldif_checkbehavior"/>
  <function name="clu_make-ldif_checkbehavior">
    <sequence>
      <block name="'clu_make-ldif_checkbehavior'">
        <sequence>
          <!--- Test Suite information
            #@TestSuiteName     make-ldif check behavior tests
            #@TestSuitePurpose  Test the results of the make-ldif command.
            #@TestSuiteGroup    make-ldif check behavior tests
            #@TestScript        clu_make-ldif_checkbehavior.xml
          -->
          <script>
            if not CurrentTestPath.has_key('group'):
              CurrentTestPath['group'] = 'clu'
            CurrentTestPath['suite'] = STAXCurrentBlock
          </script>
          <call function="'testSuite_Preamble'"/>
          <!--- Define default value for template -->
          <script>
            template = '%s/clu/make-ldif_template.ref' % logsRemoteDataDir
          </script>
          <!--- Test Case information
            #@TestMarker          make-ldif check behavior tests
            #@TestName            make-ldif: generate ldif file with seed 0
            #@TestIssue           none
            #@TestPurpose         Test make-ldif with to generate ldif file
                                  with seed 0
            #@TestPreamble        none
            #@TestStep            Do an make-ldif with seed of 0.
            #@TestPostamble       none
            #@TestResult          Success if make-ldif returns 0 and if the
                                  output is correct.
          -->
          <testcase name="getTestCaseName
          ('make-ldif: generate ldif file with seed 0')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                'make-ldif: generate ldif file with seed 0'
              </message>
              <call function="'MakeLdifWithScript'">
                {
                'templateFile'   : template ,
                'ldifFile'       : '%s/make-ldif_seed0_1.ldif' \
                                   % DIRECTORY_INSTANCE_DIR ,
                'randomSeed'     : 0
                }
              </call>
              <script>
                returnString = STAXResult[0][1]
                msg = 'LDIF processing complete.  161 entries written'
              </script>
              <call function="'checktestString'">
                {
                'returnString'   : returnString ,
                'expectedString' : msg
                }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </testcase>
          <!--- Test Case information
            #@TestMarker          make-ldif check behavior tests
            #@TestName            make-ldif: import generated data
            #@TestIssue           none
            #@TestPurpose         Check that data genereted witch make-ldif
                                  are correct
            #@TestPreamble        none
            #@TestStep            Do an make-ldif with seed of 0.
            #@TestStep            Stop the server.
            #@TestStep            Import the data generated with make-ldif.
            #@TestStep            Start the server.
            #@TestStep            Search some entries using ldapsearch.
            #@TestPostamble       none
            #@TestResult          Success if ldapsearch returns the expected
                                  number of entries.
          -->
          <testcase name="getTestCaseName
          ('make-ldif: import generated data')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                'make-ldif: generate a second ldif file with seed of 0'
              </message>
              <call function="'MakeLdifWithScript'">
                {
                'templateFile'   : template ,
                'ldifFile'       : '%s/make-ldif_seed0_2.ldif' \
                                   % DIRECTORY_INSTANCE_DIR ,
                'randomSeed'     : 0
                }
              </call>
              <message>
                'make-ldif: stop the server'
              </message>
              <call function="'StopDsWithScript'">
                { 'location' : STAF_REMOTE_HOSTNAME }
              </call>
              <message>
                'make-ldif: import the data'
              </message>
              <call function="'ImportLdifWithScript'">
                {
                'dsLdifFile'  : '%s/make-ldif_seed0_2.ldif' \
                                %  DIRECTORY_INSTANCE_DIR ,
                'dsBackEnd'   : 'userRoot' ,
                'dsAppend'    : 'True'
                }
              </call>
              <call function="'checktestRC'">
                {
                'returncode' : RC ,
                'result'     : STAXResult
                }
              </call>
              <message>
                'make-ldif: start the server'
              </message>
              <call function="'StartDsWithScript'">
                { 'location' : STAF_REMOTE_HOSTNAME }
              </call>
              <!--- Check that DS started -->
              <call function="'isAlive'">
                {
                'noOfLoops'        : 5 ,
                'noOfMilliSeconds' : 2000
                }
              </call>
              <message>
                'make-ldif: search some entries to check that data are imported'
              </message>
              <call function="'ldapSearchWithScript'">
                {
                'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'   : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
                'dsCountEntries' : 'True' ,
                'dsBaseDN'       : 'ou=make-ldif,o=clu tests,dc=example,dc=com',
                'dsFilter'       : 'objectclass=*' ,
                'expectedRC'     : 'noCheck'
                }
              </call>
              <script>
                returnString = STAXResult[0][1]
              </script>
              <call function="'checktestString'">
                {
                'returnString'     : returnString ,
                'expectedString'   : 'Total number of matching entries: 161'
                }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </testcase>
          <!--- Test Case information
            #@TestMarker          make-ldif check behavior tests
            #@TestName            make-ldif: compare generated data
            #@TestIssue           none
            #@TestPurpose         Check that data genereted witch make-ldif
                                  are correct
            #@TestPreamble        none
            #@TestStep            Do an make-ldif to generate a first file
                                  without seed.
            #@TestStep            Do an make-ldif to generate a second file
                                  without seed.
            #@TestStep            Do an make-ldif to generate a file
                                  with seed of 5.
            #@TestStep            Compare files generated with seed of 0.
            #@TestStep            Compare one file generated with seed of 0 and
                                  one generated without seed.
            #@TestStep            Compare files generated without seed.
            #@TestStep            Compare one file generated with seed of 0 and
                                  one generated with seed of 5.
            #@TestPostamble       none
            #@TestResult          Success if ldif-diff returns 0 in each cases.
          -->
          <testcase name="getTestCaseName
          ('make-ldif: compare generated data')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                'make-ldif: generate a first ldif file without seed'
              </message>
              <call function="'MakeLdifWithScript'">
                {
                'templateFile'   : template ,
                'ldifFile'       : '%s/make-ldif_noseed_1.ldif' \
                                   % DIRECTORY_INSTANCE_DIR
                }
              </call>
              <message>
                'make-ldif: generate a second ldif file without seed'
              </message>
              <call function="'MakeLdifWithScript'">
                {
                'templateFile'   : template ,
                'ldifFile'       : '%s/make-ldif_noseed_2.ldif' \
                                   % DIRECTORY_INSTANCE_DIR
                }
              </call>
              <message>
                'make-ldif: generate a ldif file with seed of 5'
              </message>
              <call function="'MakeLdifWithScript'">
                {
                'templateFile'   : template ,
                'ldifFile'       : '%s/make-ldif_seed5.ldif' \
                                   % DIRECTORY_INSTANCE_DIR ,
                'randomSeed'     : 5
                }
              </call>
              <message>
                'make-ldif: ldifs with seed of 0 must be the same'
              </message>
              <call function="'LdifDiffWithScript'">
                {
                'sourceLdif' : '%s/make-ldif_seed0_1.ldif' \
                % DIRECTORY_INSTANCE_DIR ,
                'targetLdif' : '%s/make-ldif_seed0_2.ldif' \
                % DIRECTORY_INSTANCE_DIR ,
                'outputLdif' : '%s/make-ldif_seed0.diff' \
                % DIRECTORY_INSTANCE_DIR
                }
              </call>
              <message>
                'make-ldif: ldifs with seed of 0 and no seed must \
                be different'
              </message>
              <call function="'LdifDiffWithScript'">
                {
                'sourceLdif' : '%s/make-ldif_seed0_1.ldif' \
                % DIRECTORY_INSTANCE_DIR ,
                'targetLdif' : '%s/make-ldif_noseed_1.ldif' \
                % DIRECTORY_INSTANCE_DIR ,
                'outputLdif' : '%s/make-ldif_noseed_1.diff' \
                % DIRECTORY_INSTANCE_DIR
                }
              </call>
              <message>
                'make-ldif: ldifs with no seed must be different'
              </message>
              <call function="'LdifDiffWithScript'">
                {
                'sourceLdif' : '%s/make-ldif_noseed_1.ldif' \
                % DIRECTORY_INSTANCE_DIR ,
                'targetLdif' : '%s/make-ldif_noseed_2.ldif' \
                % DIRECTORY_INSTANCE_DIR ,
                'outputLdif' : '%s/make-ldif_noseed_2.diff' \
                % DIRECTORY_INSTANCE_DIR
                }
              </call>
              <message>
                'make-ldif: ldifs with seed of 0 and seed of 5 \
                must be different'
              </message>
              <call function="'LdifDiffWithScript'">
                {
                'sourceLdif' : '%s/make-ldif_seed0_1.ldif' \
                % DIRECTORY_INSTANCE_DIR ,
                'targetLdif' : '%s/make-ldif_seed5.ldif' \
                % DIRECTORY_INSTANCE_DIR ,
                'outputLdif' : '%s/make-ldif_seed5.diff' \
                % DIRECTORY_INSTANCE_DIR
                }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </testcase>
          <call function="'testSuite_Postamble'"/>
        </sequence>
      </block>
    </sequence>
  </function>
</stax>
opends/tests/shared/functions/tools.xml
@@ -72,7 +72,7 @@
        <function-arg-property name="type" value="filename"/>
      </function-arg-def>
      
      <function-arg-def name="randomSeed " type="optional">
      <function-arg-def name="randomSeed" type="optional">
        <function-arg-description>
          The seed to use to initialize the random number generator
        </function-arg-description>
@@ -128,7 +128,7 @@
          'expectedRC': expectedRC
        }
      </call>
      <return>[RC, STAXResult]</return>
      <return>STAXResult</return>
    </sequence>
  </function>