blob: f8d6352757a31922e24598114b4bb646cf77a653 [file] [log] [blame]
<project name="test" default="testSuite">
<import file="${basedir}/build/buildInitialize.xml"/>
<import file="${basedir}/build/testOverride.xml"/>
<import file="${basedir}/build/testInitialize.xml"/>
<import file="${basedir}/build/buildTest.xml"/>
<import file="${basedir}/build/validateTest.xml"/>
<import file="${basedir}/build/buildHandler.xml"/>
<import file="${basedir}/build/executeTest.xml"/>
<import file="${basedir}/build/buildMonitor.xml"/>
<import file="${basedir}/build/buildLibrary.xml"/>
<!--
Default target that set all the required framework to build, run and report on the tests
-->
<target name="testSuite" depends="preInitializeTest, overrideTest, initialize, initializeTest, compileMonitorUtility, moveMonitorJar, initializeLogFile, runTests, displayAllResults"
description="Build and Run all tests"/>
<target name="preInitializeTest" depends="pre-init">
<echo message="dir.properties = ${dir.properties} - ${platform}"/>
<property file="${dir.properties}/test.${platform}.properties" />
<property file="${dir.properties}/test.common.properties" />
<property name="dir.xmlParser" value="${env.XERCES_HOME}/bin${path.separator}${env.XERCES_HOME}/lib"/>
</target>
<target name="moveMonitorJar" depends="initialize, compileMonitorUtility">
<description>
The monitor utility is built in its source directory. This is not good as when you do a cvs update this always comes back as a
difference. So, as the monitor is only built when a test is run, this is the right place to move it from there to the
obj directory so it does not interfere with the cvs update process.
</description>
<!-- moving the monitor fails if it's been used already so set "failonerror=false"-->
<move todir="${dir.obj}/test/monitor" failonerror="false">
<fileset dir="${basedir}/tests/utils/monitor">
<include name="**/*.class"/>
<include name="*.jar"/>
</fileset>
</move>
</target>
<!--
Loop through all the test xml properties files in the tests
list and call runTest target
-->
<target name="runTests" depends="setTestList, defineMonitor, defineMockServer">
<foreach target="runTest" param="test_property" inheritall="true">
<path refid="test_properties"/>
</foreach>
<!-- we need to stop the monitor (if there is any) -->
<antcall target="stopMonitor" inheritall="true" />
<!-- if we are running in mockserver mode then we need to stop the MockServer -->
<if>
<equals arg1="${mockServer}" arg2="true" />
<then>
<antcall target="stopMockServer"
inheritall="true" />
</then>
</if>
</target>
<!--
Set the list of tests to run to either all tests, an individual test, or a selection of tests
-->
<target name="setTestList" depends="setListType,setIndividual,setFromList,setAll"/>
<target name="setListType">
<condition property="allTest">
<and>
<not>
<isset property="test.name"/>
</not>
<not>
<isset property="test.list"/>
</not>
</and>
</condition>
</target>
<!--
Create a list of all the tests
-->
<target name="setAll" if="allTest">
<path id="test_properties">
<fileset dir="${dir.testproperties}" includes="*.xml"/>
</path>
</target>
<!--
Create a list of just 1 test from command line parameter -Dtest.name=
-->
<target name="setIndividual" if="test.name">
<echo message="setIndividual ${test.name}"/>
<path id="test_properties">
<fileset dir="${dir.testproperties}" includes="${test.name}.xml"/>
</path>
</target>
<!--
Create a list of tests from a properties file unless an individual test has been specified too
-->
<target name="setFromList" if="test.list" unless="test.name">
<if>
<isset property="test.exclude.list"/>
<then>
<path id="test_properties">
<fileset dir="${dir.testproperties}" includesfile="${test.list}" excludesfile="${test.exclude.list}"/>
</path>
</then>
<else>
<path id="test_properties">
<fileset dir="${dir.testproperties}" includesfile="${test.list}"/>
</path>
</else>
</if>
</target>
<!--
For the specified test_property test load the properties files and derive
any other required properties, compile the test client, set the endpoint
if required, run the test, and validate if successful.
* setPropertiesForTest is in testInitialize.xml
* validateTest is in validateTest.xml
-->
<target name="runTest" depends="setPropertiesForTest,cleanTest,buildTest,executeTestRun,validateTest"/>
<target name="cleanTest">
<delete dir="${dir.test.generated}/${test.clientLang}/${test.name}"/>
</target>
<!--
Build test
-->
<target name="buildTest" depends="setPropertiesForThisTest, compileTestClient, validateClientCompilation, compileHandlers"/>
<target name="setPropertiesForThisTest" depends="checkIfRequestFile">
<property name="test.directory" value="${dir.test.generated}/${test.clientLang}/${test.name}"/>
<property name="expected.file" value="${test.directory}/${test.name}.expected"/>
<property name="r_expected.file" value="${test.directory}/${test.name}Request.expected"/>
<property name="response_expected.file" value="${test.directory}/${test.name}ServerResponse.expected"/>
<property name="results.stdout" value="${test.directory}/${test.name}.out"/>
<property name="results.stderr" value="${test.directory}/${test.name}.err"/>
</target>
<target name="checkIfRequestFile" if="test.expected.request" unless="test.nomonitor">
<available file="${dir.autotests}/output/${test.expected.request}" property="requestFileExists"/>
</target>
<target name="compileTestClient">
<antcall target="compileClient" inheritall="true">
<param name="wsdl.test" value="${dir.autotests}/wsdls/${test.wsdl}"/>
<param name="client.code" value="${dir.autotests}/client/${test.clientLang}/${test.clientCode}"/>
</antcall>
</target>
<target name="executeTestRun">
<antcall target="executeTest" inheritall="true">
<param name="test.directory" value="${dir.test.generated}/${test.clientLang}/${test.name}"/>
</antcall>
</target>
<!--
When the test run has finished display the results file
-->
<target name="displayAllResults">
<loadfile property="results" srcFile="${results.log}"/>
<echo message="${results}"/>
</target>
</project>