<?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="import"/>
|
|
<function name="import">
|
|
<sequence>
|
|
<!--- Test Suite information
|
#@TestSuiteName Setup-Uninstall import Tests
|
#@TestSuitePurpose Test all options of the setup command relative
|
to initial data generation and data import
|
(ie: all options that feed DS with data at setup
|
time)
|
#@TestSuiteGroup import
|
#@TestSuiteID import Tests
|
#@TestGroup Setup-Uninstall
|
#@TestScript import.xml
|
#@TestHTMLLink http://opends.dev.java.net/
|
-->
|
|
<script>
|
if not CurrentTestPath.has_key('group'):
|
CurrentTestPath['group'] = 'setup'
|
CurrentTestPath['suite'] = 'import'
|
</script>
|
|
<call function="'testSuite_Preamble'"/>
|
|
<call function="'getFreePort'">
|
{
|
'host' : STAF_REMOTE_HOSTNAME,
|
'port' : 5500,
|
}
|
</call>
|
<script>IMP_I1_PORT = STAXResult</script>
|
|
<call function="'getFreePort'">
|
{
|
'host' : STAF_REMOTE_HOSTNAME,
|
'port' : 5600,
|
}
|
</call>
|
<script>IMP_I2_PORT = STAXResult</script>
|
|
<message>
|
'Got these free ports: %s, %s' % (IMP_I1_PORT, IMP_I2_PORT)
|
</message>
|
|
<!--- Test Case information
|
#@TestMarker Setup-Uninstall Import options
|
#@TestName Setup-Uninstall: import:
|
setup_uninstall_import_sample
|
#@TestID setup_uninstall_import_sample
|
#@TestPurpose Test the ability of the setup command to
|
generate and import LDAP entries
|
#@TestPreamble
|
#@TestStep Unzip OpenDS distribution
|
Setup OpenDS with 2 suffixes and generate 5
|
entries per suffix
|
Check entries are here
|
Uninstall OpenDS
|
#@TestPostamble
|
#@TestResult PASS if all steps ran without errors
|
-->
|
<testcase name="getTestCaseName('setup_uninstall_import_sample')">
|
<sequence>
|
|
<script>
|
IMP_I1_BASE = '%s/imp_i1' % (OUT_GROUP)
|
IMP_I1_ROOT = '%s/%s' % (IMP_I1_BASE, OPENDSNAME)
|
</script>
|
|
|
<call function="'testCase_Preamble'"/>
|
<message>'Setup Uninstall: Sample data options'</message>
|
|
<!-- 1. Setup options: baseDN baseDN sampleData -->
|
<message>'Prepare Open DS ZIP (in %s)' % IMP_I1_ROOT</message>
|
|
<call function="'runSTAFCommand'">
|
{ 'name' : 'Create directory to contain I1',
|
'location' : STAF_REMOTE_HOSTNAME,
|
'service' : 'FS',
|
'request' : 'CREATE',
|
'arguments' : 'DIRECTORY %s FAILIFEXISTS' % IMP_I1_BASE
|
}
|
</call>
|
|
<call function="'checktestRC'">
|
{ 'returncode' : RC,
|
'expected' : 0,
|
'result' : 'FAIL to create directory',
|
}
|
</call>
|
|
<call function="'runSTAFCommand'">
|
{ 'name' : 'Extract OpenDS ZIP file',
|
'location' : STAF_REMOTE_HOSTNAME,
|
'service' : 'ZIP',
|
'request' : 'UNZIP',
|
'arguments' : 'ZIPFILE %s/%s TODIRECTORY %s RESTOREPERMISSION' \
|
% (ZIPPATH, ZIPNAME, IMP_I1_BASE)
|
}
|
</call>
|
|
<call function="'checktestRC'">
|
{ 'returncode' : RC,
|
'expected' : 0,
|
'result' : 'FAIL to unzip OpenDS ZIP file',
|
}
|
</call>
|
|
<script>
|
c = '%s/setup%s' % (IMP_I1_ROOT, fileExt)
|
p = []
|
p.append('--cli --no-prompt --ldapPort %s' % (IMP_I1_PORT))
|
p.append('--rootUserPassword "kangourou"')
|
p.append('--baseDN "o=o1"')
|
p.append('--baseDN "o=o2"')
|
p.append('--sampleData 5')
|
p = ' '.join(p)
|
</script>
|
|
<message>'%s %s' % (c, p)</message>
|
<call function="'runCommand'">
|
{ 'location' : STAF_REMOTE_HOSTNAME,
|
'name' : 'Launch setup command for I1',
|
'command' : c,
|
'arguments' : p,
|
'path' : IMP_I1_ROOT,
|
'expectedRC': 0,
|
'outputFile': '%s/imp-setup-i1.txt' % OUT_GROUP,
|
}
|
</call>
|
|
<!-- Check StartTLS is refused -->
|
<call function="'ldapSearchWithScript'">
|
{ 'dsInstancePort' : IMP_I1_PORT,
|
'dsInstanceDn' : "cn=Directory Manager",
|
'dsInstancePswd' : "kangourou",
|
'dsBaseDN' : "o=o2",
|
'dsFilter' : 'dn=*',
|
'expectedRC' : 52,
|
'dsUseStartTLS' : 'True',
|
}
|
</call>
|
|
<!-- Check Data have been generated under o=o1 -->
|
<message>'Check Data have been generated under o=o1'</message>
|
<call function="'ldapSearchWithScript'">
|
{ 'dsInstancePort' : IMP_I1_PORT,
|
'dsInstanceDn' : "cn=Directory Manager",
|
'dsInstancePswd' : "kangourou",
|
'dsBaseDN' : "o=o1",
|
'dsFilter' : 'objectclass=*',
|
'dsAttributes' : 'dn',
|
'expectedRC' : 0,
|
}
|
</call>
|
|
<call function="'CheckMatches'">
|
{
|
'string2find' : 'dn',
|
'mainString' : STAXResult[0][1],
|
'nbExpected' : 7,
|
'caseSensitive' : 'True'
|
}
|
</call>
|
|
<!-- Check Data have been generated under o=o2 -->
|
<message>'Check Data have been generated under o=o2'</message>
|
<call function="'ldapSearchWithScript'">
|
{ 'dsInstancePort' : IMP_I1_PORT,
|
'dsInstanceDn' : "cn=Directory Manager",
|
'dsInstancePswd' : "kangourou",
|
'dsBaseDN' : "o=o2",
|
'dsFilter' : 'objectclass=*',
|
'dsAttributes' : 'dn',
|
'expectedRC' : 0,
|
}
|
</call>
|
|
<call function="'CheckMatches'">
|
{
|
'string2find' : 'dn',
|
'mainString' : STAXResult[0][1],
|
'nbExpected' : 7,
|
'caseSensitive' : 'True'
|
}
|
</call>
|
|
<!-- 2. Uninstall options: quiet forceOnError remove-all-->
|
<message>'Uninstall options: quiet forceOnError remove-all'</message>
|
<script>
|
c = '%s/uninstall%s' % (IMP_I1_ROOT, fileExt)
|
p = []
|
p.append('--cli --no-prompt')
|
p.append('--quiet --forceOnError --remove-all')
|
p.append('--referencedHostName %s' % STAF_REMOTE_HOSTNAME)
|
p = ' '.join(p)
|
</script>
|
|
<message>'%s %s' % (c, p)</message>
|
<call function="'runCommand'">
|
{ 'location' : STAF_REMOTE_HOSTNAME,
|
'name' : 'Uninstall I1',
|
'command' : c,
|
'arguments' : p,
|
'path' : IMP_I1_ROOT,
|
'expectedRC': 0,
|
'outputFile': '%s/imp-uninstall-i1.txt' % OUT_GROUP,
|
}
|
</call>
|
|
<call function="'testCase_Postamble'"/>
|
|
|
</sequence>
|
</testcase>
|
|
<!--- Test Case information
|
#@TestMarker Setup-Uninstall Import options
|
#@TestName Setup-Uninstall: import:
|
import_reject_skip
|
#@TestID import_reject_skip
|
#@TestPurpose Test the ability of the setup command to
|
import LDAP entries and manage rejected and
|
skipped entries
|
#@TestPreamble
|
#@TestStep Unzip OpenDS distribution
|
Setup OpenDS with a LDIF file to import, and
|
files for rejected and skipped entries
|
Check skipped & rejected entries
|
Stop OpenDS
|
Uninstall OpenDS
|
#@TestPostamble
|
#@TestResult PASS if all steps ran without errors
|
-->
|
<testcase name="getTestCaseName('import_reject_skip')">
|
<sequence>
|
|
<script>
|
IMP_I2_BASE = '%s/imp_i2' % (OUT_GROUP)
|
IMP_I2_ROOT = '%s/%s' % (IMP_I2_BASE, OPENDSNAME)
|
|
IMP_LDIF_FILE = '%s/setup/imp-o1.ldif' % logsRemoteDataDir
|
IMP_SKIP_FILE = '%s/imp-skip.ldif' % (OUT_GROUP)
|
IMP_REJECT_FILE = '%s/imp-reject.ldif' % (OUT_GROUP)
|
</script>
|
|
<call function="'testCase_Preamble'"/>
|
<message>'Setup and Import: Reject / Skip entries'</message>
|
|
|
<!-- 1. Setup options: baseDN "o=o1" ldifFile rejectFile
|
skipFile verbose -->
|
<message>'Prepare Open DS ZIP (in %s)' % IMP_I2_ROOT</message>
|
|
<call function="'runSTAFCommand'">
|
{ 'name' : 'Create directory to contain I2',
|
'location' : STAF_REMOTE_HOSTNAME,
|
'service' : 'FS',
|
'request' : 'CREATE',
|
'arguments' : 'DIRECTORY %s FAILIFEXISTS' % IMP_I2_BASE
|
}
|
</call>
|
|
<call function="'checktestRC'">
|
{ 'returncode' : RC,
|
'expected' : 0,
|
'result' : 'FAIL to create directory',
|
}
|
</call>
|
|
<call function="'runSTAFCommand'">
|
{ 'name' : 'Extract OpenDS ZIP file',
|
'location' : STAF_REMOTE_HOSTNAME,
|
'service' : 'ZIP',
|
'request' : 'UNZIP',
|
'arguments' : 'ZIPFILE %s/%s TODIRECTORY %s RESTOREPERMISSION' \
|
% (ZIPPATH, ZIPNAME, IMP_I2_BASE)
|
}
|
</call>
|
|
<call function="'checktestRC'">
|
{ 'returncode' : RC,
|
'expected' : 0,
|
'result' : 'FAIL to unzip OpenDS ZIP file',
|
}
|
</call>
|
|
<script>
|
c = '%s/setup%s' % (IMP_I2_ROOT, fileExt)
|
p = []
|
p.append('--cli --no-prompt --rootUserDN "cn=DM"')
|
p.append('--rootUserPassword "kangourou"')
|
p.append('--ldapPort %s' % IMP_I2_PORT)
|
p.append('--baseDN "o=o1"')
|
p.append('--ldifFile %s' % IMP_LDIF_FILE)
|
p.append('--rejectFile %s' % IMP_REJECT_FILE)
|
p.append('--skipFile %s' % IMP_SKIP_FILE)
|
p.append('--verbose')
|
p = ' '.join(p)
|
</script>
|
|
<message>'%s %s' % (c, p)</message>
|
<call function="'runCommand'">
|
{ 'location' : STAF_REMOTE_HOSTNAME,
|
'name' : 'Launch setup command for I2',
|
'command' : c,
|
'arguments' : p,
|
'path' : IMP_I2_ROOT,
|
'expectedRC': 0,
|
'outputFile': '%s/imp-setup-i2.txt' % OUT_GROUP,
|
}
|
</call>
|
|
<call function="'runSTAFCommand'">
|
{ 'name' : 'Get content of reject file',
|
'location' : STAF_REMOTE_HOSTNAME,
|
'service' : 'FS',
|
'request' : 'GET',
|
'arguments' : 'FILE %s TEXT' % IMP_REJECT_FILE
|
}
|
</call>
|
|
<call function="'checktestRC'">
|
{ 'returncode' : RC,
|
'expected' : 0,
|
'result' : 'FAIL to get content of reject file ',
|
}
|
</call>
|
|
<call function="'CheckMatches'">
|
{
|
'string2find' : 'violates',
|
'mainString' : STAFResult,
|
'nbExpected' : 4,
|
'caseSensitive' : 'True'
|
}
|
</call>
|
|
<call function="'runSTAFCommand'">
|
{ 'name' : 'Get content of skip file',
|
'location' : STAF_REMOTE_HOSTNAME,
|
'service' : 'FS',
|
'request' : 'GET',
|
'arguments' : 'FILE %s TEXT' % IMP_SKIP_FILE
|
}
|
</call>
|
|
<call function="'checktestRC'">
|
{ 'returncode' : RC,
|
'expected' : 0,
|
'result' : 'FAIL to get content of skip file ',
|
}
|
</call>
|
|
<call function="'CheckMatches'">
|
{
|
'string2find' : 'Skipping',
|
'mainString' : STAFResult,
|
'nbExpected' : 1,
|
'caseSensitive' : 'True'
|
}
|
</call>
|
|
<call function="'ldapSearchWithScript'">
|
{ 'dsInstancePort' : IMP_I2_PORT,
|
'dsInstanceDn' : "cn=DM",
|
'dsInstancePswd' : "kangourou",
|
'dsBaseDN' : "o=o1",
|
'dsFilter' : 'objectclass=*',
|
'dsAttributes' : 'dn',
|
'expectedRC' : 0,
|
}
|
</call>
|
|
<call function="'CheckMatches'">
|
{
|
'string2find' : 'dn',
|
'mainString' : STAXResult[0][1],
|
'nbExpected' : 2,
|
'caseSensitive' : 'True'
|
}
|
</call>
|
|
<!-- 2. Stop DS -->
|
<message>'Stop DS'</message>
|
<call function="'StopDsWithScript'">
|
{ 'location' : STAF_REMOTE_HOSTNAME,
|
'dsPath' : '%s' % IMP_I2_ROOT,
|
'dsPort' : IMP_I2_PORT,
|
'dsBindDN' : 'cn=DM',
|
'dsBindPwd' : 'kangourou',
|
}
|
</call>
|
|
<!-- 3. Uninstall options: verbose forceOnError remove-all
|
noPropertiesFile -->
|
<message>
|
'Uninstall opts: verbose forceOnError remove-all noPropertiesFile'
|
</message>
|
<script>
|
c = '%s/uninstall%s' % (IMP_I2_ROOT, fileExt)
|
p = []
|
p.append('--cli --no-prompt --noPropertiesFile')
|
p.append('--verbose --forceOnError --remove-all')
|
p.append('--referencedHostName %s' % STAF_REMOTE_HOSTNAME)
|
p = ' '.join(p)
|
</script>
|
|
<message>'%s %s' % (c, p)</message>
|
<call function="'runCommand'">
|
{ 'location' : STAF_REMOTE_HOSTNAME,
|
'name' : 'Uninstall I2',
|
'command' : c,
|
'arguments' : p,
|
'path' : IMP_I2_ROOT,
|
'expectedRC': 0,
|
'outputFile': '%s/imp-uninstall-i2.txt' % OUT_GROUP,
|
}
|
</call>
|
|
<!-- Do some post-uninstall checks -->
|
<message>'Do some post-uninstall checks'</message>
|
<call function="'runSTAFCommand'">
|
{ 'name' : 'Get content of skip file',
|
'location' : STAF_REMOTE_HOSTNAME,
|
'service' : 'FS',
|
'request' : 'LIST',
|
'arguments' : 'DIRECTORY %s' % IMP_I2_ROOT
|
}
|
</call>
|
|
<call function="'checktestRC'">
|
{ 'returncode' : RC,
|
'expected' : 0,
|
'result' : 'FAIL to get content of install directory',
|
}
|
</call>
|
|
<script>
|
nb = len(STAFResult)
|
ct = (STAFResult[0] == 'lib')
|
a = ' '
|
</script>
|
|
<call function="'checktestRC'">
|
{ 'returncode' : nb,
|
'result' : a,
|
'expected' : 1
|
}
|
</call>
|
|
<call function="'checktestRC'">
|
{ 'returncode' : ct,
|
'result' : a,
|
'expected' : 1
|
}
|
</call>
|
|
<call function="'testCase_Postamble'"/>
|
|
</sequence>
|
</testcase>
|
|
<call function="'testSuite_Postamble'"/>
|
|
</sequence>
|
|
</function>
|
|
</stax>
|