sample.xml revision d81978a0815d5b8a75633c35e3e1f8708d36f017
<?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, include this CDDL HEADER in each
! file and include 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 2007-2008 Sun Microsystems, Inc.
! -->
<stax>
<defaultcall function="sample" />
<function name="sample">
<function-list-args>
<function-required-arg name="STAXParentID"/>
</function-list-args>
<sequence>
<script>
CurrentTestPath['group']= 'sample'
envAlreadyLoaded='true'
</script>
<!--- Load the job environment for the test group execution -->
<import machine="STAF_LOCAL_HOSTNAME"
file="'%s/environment.xml' % TESTS_FUNCTIONS_DIR" />
<call function="'loadJobEnvironment'">
{ 'parent' : STAXParentID }
</call>
<!---
#@TestSuiteName Sample
#@TestSuitePurpose Illustrate how to easily contribute functional tests
#@TestSuiteGroup Sample
#@TestScript aci_add_entry.xml
-->
<!-- Try/catch/finally structure are a handy way to alter the execution
flow of a suite in front of unexpected conditions
-->
<try>
<!-- this is an example of how to loop through a list of functions to
run instead of duplicating calls
-->
<sequence>
<iterate in="['testGroup_Preamble','testSuite_Preamble','sample_setup']" var="setupStep">
<!-- the sequence tag is superfluous here since there is only a
single instruction to execute within the iterate block
-->
<call function="setupStep" />
</iterate>
<iterate in="['sample_test','knownIssue_test','passing_test','inconclusive_test','failing_test']" var="testStep">
<!-- the sequence tag is superfluous here since there is only a
single instruction to execute within the iterate block
-->
<call function="testStep" />
</iterate>
</sequence>
<catch exception="'STAFException.Topology.CreationException'">
<!-- it is a good idea to make sure that the messages getting
sent to the gui also make their way in the logs for easier
after-the-fact log mining. Use log="1" wherever it makes sense
Setting the log level to an appropriate value will also make
troubleshooting and debugging easier.
Level values can be (among others):
. fatal
. error
. warning
. info
. trace
. debug
-->
<message log="1" level="'fatal'">'Could not create the topology. Bailing out.'</message>
</catch>
<catch exception="'STAXException.Topology.StartException'">
<message log="1" level="'fatal'">'Could not start at least one server in the topology. Bailing out.'</message>
</catch>
<finally>
<iterate in="['sample_cleanup','testSuite_Postamble','testGroup_Postamble']" var="testStep">
<call function="testStep" />
</iterate>
</finally>
</try>
</sequence>
</function>
<!-- the test -->
<function name="sample_test">
<!---
Place test-specific test information here.
The tag, TestMarker, must be the same as the tag, TestSuiteName.
#@TestMarker Sample
#@TestName sample_test
#@TestIssue xyz
#@TestPurpose Illustrate how to issue a query on OpenDS
#@TestPreamble none
#@TestStep Fetch all the entries in the server
#@TestPostamble none
#@TestResult Success if OpenDS returns 0
-->
<block name="STAXCurrentFunction">
<sequence>
<script>
CurrentTestPath['suite']= 'search'
</script>
<testcase name="getTestCaseName(STAXCurrentFunction)">
<sequence>
<call function="'testCase_Preamble'" />
<call function="'SearchObject'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'dsBaseDN' : DIRECTORY_INSTANCE_SFX ,
'dsFilter' : 'objectclass=*' }
</call>
<call function="'testCase_Postamble'" />
</sequence>
</testcase>
</sequence>
</block>
</function>
<!-- the test -->
<function name="knownIssue_test">
<!---
Place test-specific test information here.
The tag, TestMarker, must be the same as the tag, TestSuiteName.
#@TestMarker Sample
#@TestName sample_test
#@TestIssue xyz
#@TestPurpose Illustrate how to issue a query on OpenDS
#@TestPreamble none
#@TestStep Fetch all the entries in the server
#@TestPostamble none
#@TestResult Success if OpenDS returns 0
-->
<block name="STAXCurrentFunction">
<sequence>
<script>
CurrentTestPath['suite']= 'search'
</script>
<testcase name="getTestCaseName(STAXCurrentFunction)">
<sequence>
<call function="'testCase_Preamble'" />
<!-- search for an entry that does not exist -->
<call function="'SearchObject'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'dsBaseDN' : DIRECTORY_INSTANCE_SFX ,
'dsFilter' : 'wrongfilter' }
</call>
<script>
knownIssue(828)
</script>
<call function="'testCase_Postamble'" />
</sequence>
</testcase>
</sequence>
</block>
</function>
<!-- the dummy failing test -->
<function name="failing_test">
<!---
Place test-specific test information here.
The tag, TestMarker, must be the same as the tag, TestSuiteName.
#@TestMarker Sample
#@TestName failing_test
#@TestIssue xyz
#@TestPurpose Illustrate how to issue a query on OpenDS
#@TestPreamble none
#@TestStep Fetch all the entries in the server
#@TestPostamble none
#@TestResult Success if OpenDS returns 0
-->
<block name="STAXCurrentFunction">
<sequence>
<script>
CurrentTestPath['suite']= 'dummy'
</script>
<testcase name="getTestCaseName(STAXCurrentFunction)">
<sequence>
<call function="'testCase_Preamble'" />
<tcstatus result="'fail'" />
<call function="'testCase_Postamble'" />
</sequence>
</testcase>
</sequence>
</block>
</function>
<!-- the dummy inconclusive test -->
<function name="inconclusive_test">
<!---
Place test-specific test information here.
The tag, TestMarker, must be the same as the tag, TestSuiteName.
#@TestMarker Sample
#@TestName passing_test
#@TestIssue xyz
#@TestPurpose Illustrate how to issue a query on OpenDS
#@TestPreamble none
#@TestStep Fetch all the entries in the server
#@TestPostamble none
#@TestResult Success if OpenDS returns 0
-->
<block name="STAXCurrentFunction">
<sequence>
<script>
CurrentTestPath['suite']= 'dummy'
</script>
<testcase name="getTestCaseName(STAXCurrentFunction)">
<sequence>
<call function="'testCase_Preamble'" />
<call function="'testCase_Postamble'" />
</sequence>
</testcase>
</sequence>
</block>
</function>
<!-- the dummy passing test -->
<function name="passing_test">
<!---
Place test-specific test information here.
The tag, TestMarker, must be the same as the tag, TestSuiteName.
#@TestMarker Sample
#@TestName passing_test
#@TestIssue xyz
#@TestPurpose Illustrate how to issue a query on OpenDS
#@TestPreamble none
#@TestStep Fetch all the entries in the server
#@TestPostamble none
#@TestResult Success if OpenDS returns 0
-->
<block name="STAXCurrentFunction">
<sequence>
<script>
CurrentTestPath['suite']= 'dummy'
</script>
<testcase name="getTestCaseName(STAXCurrentFunction)">
<sequence>
<call function="'testCase_Preamble'" />
<tcstatus result="'pass'" />
<call function="'testCase_Postamble'" />
</sequence>
</testcase>
</sequence>
</block>
</function>
<!-- Setup the instance for sample test -->
<function name="sample_setup">
<sequence>
<call function="'runFunction'">
{ 'functionName' : 'createTopology' ,
'functionMessage' : 'Create DS topology as described in config.py',
'functionException' : 'Topology.CreationException' ,
'functionArguments' : { 'initialiseInstance' : True }
}
</call>
<call function="'runFunction'">
{ 'functionName' : 'StartDsWithScript' ,
'functionMessage' : 'Start DS to run on port %s' % (DIRECTORY_INSTANCE_PORT) ,
'functionArguments' : { 'location' : STAF_REMOTE_HOSTNAME }
}
</call>
<call function="'runFunction'">
{ 'functionName' : 'isAlive' ,
'functionMessage' : 'Checking if the server is available' ,
'functionException' : 'Topology.StartException' ,
'functionArguments' : { 'noOfLoops' : 5 ,
'noOfMilliSeconds' : 2000 }
}
</call>
</sequence>
</function>
<!-- cleanup after the test -->
<function name="sample_cleanup">
<sequence>
<call function="'runFunction'">
{ 'functionName' : 'StopDsWithScript' ,
'functionMessage' : 'Stop DS running on port %s' % (DIRECTORY_INSTANCE_PORT),
'functionArguments' : { 'location' : STAF_REMOTE_HOSTNAME ,
'dsHost' : DIRECTORY_INSTANCE_HOST ,
'dsPort' : DIRECTORY_INSTANCE_PORT ,
'dsBindDN' : DIRECTORY_INSTANCE_DN ,
'dsBindPwd' : DIRECTORY_INSTANCE_PSWD }
}
</call>
<call function="'runFunction'">
{ 'functionName' : 'removeTopology',
'functionMessage' : 'Remove DS topology created for the Test Suite'
}
</call>
</sequence>
</function>
</stax>