<?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 legal-notices/CDDLv1_0.txt
! or http://forgerock.org/license/CDDLv1.0.html.
! See the License for the specific language governing permissions
! and limitations under the License.
!
! When distributing Covered Code, include this CDDL HEADER in each
! file and include the License file at legal-notices/CDDLv1_0.txt.
! 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-2010 Sun Microsystems, Inc.
! Portions Copyright 2011-2013 ForgeRock AS
! -->
<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' : 5544,
}
</call>
<script>IMP_I1_ADMIN_PORT = STAXResult</script>
<call function="'getFreePort'">
{
'host' : STAF_REMOTE_HOSTNAME,
'port' : 5600,
}
</call>
<script>IMP_I2_PORT = STAXResult</script>
<call function="'getFreePort'">
{
'host' : STAF_REMOTE_HOSTNAME,
'port' : 5644,
}
</call>
<script>IMP_I2_ADMIN_PORT = STAXResult</script>
<message>
'Got these free ports: %s, %s, %sand %s' % (IMP_I1_PORT, \
IMP_I1_ADMIN_PORT, IMP_I2_PORT, IMP_I2_ADMIN_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 OpenDJ ZIP file',
'location' : STAF_REMOTE_HOSTNAME,
'service' : 'ZIP',
'request' : 'UNZIP',
'arguments' : 'ZIPFILE %s/%s TODIRECTORY %s RESTOREPERMISSION' \
% (DIRECTORY_INSTANCE_DIR, ZIPNAME, IMP_I1_BASE)
}
</call>
<call function="'checktestRC'">
{ 'returncode' : RC,
'expected' : 0,
'result' : 'FAIL to unzip OpenDJ 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('--adminConnectorPort %s' % IMP_I1_ADMIN_PORT)
p.append('--rootUserPassword "kangourou"')
p.append('--baseDN "o=o1"')
p.append('--baseDN "o=o2"')
p.append('--sampleData 5 %s' % licenseOption)
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 OpenDJ distribution
Setup OpenDJ with a LDIF file to import, and
files for rejected and skipped entries
Check skipped and rejected entries
Stop OpenDJ
Uninstall OpenDJ
#@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' % remote.data
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' \
% (DIRECTORY_INSTANCE_DIR, 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('--adminConnectorPort %s' % IMP_I2_ADMIN_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 %s' % licenseOption)
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,
'dsAdminPort' : IMP_I2_ADMIN_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>
<script>
res = STAFResult
if 'coverage.ec' in res:
res.remove('coverage.ec')
nb = len(res)
ct = (res[0] == 'lib')
a = ' '
</script>
<call function="'checktestRC'">
{ 'returncode' : RC,
'expected' : 0,
'result' : 'FAIL to get content of install directory',
}
</call>
<script>
if PRODUCTNAME.startswith('OpenDJ'):
if is_windows_platform(STAF_REMOTE_HOSTNAME):
expectedNb = 2
else:
expectedNb = 1
else:
if is_windows_platform(STAF_REMOTE_HOSTNAME):
expectedNb = 3
else:
expectedNb = 2
</script>
<call function="'checktestRC'">
{ 'returncode' : nb,
'result' : a,
'expected' : expectedNb
}
</call>
<!--
<call function="'checktestRC'">
{ 'returncode' : ct,
'result' : a,
'expected' : 1
}
</call>
-->
<call function="'testCase_Postamble'"/>
</sequence>
</testcase>
<call function="'testSuite_Postamble'"/>
</sequence>
</function>
</stax>