<project name="Targets to run Automated Tests Locally and Remotely" default="main" basedir="."> <!-- This script must be called with the ${tester} property set. The testing.properties file must contain definitions for all other properties in this script if they are not set in a calling script or command line. See test.properties.template for property descriptions. --> <property name="customTest" value="${tester}/customTest.xml" /> <property name="testing.properties" value="${tester}/testing.properties" /> <property file="${testing.properties}" /> <property name="dropLocation" value="${buildDirectory}" /> <target name="main"> <antcall target="${testTarget}" /> </target> <!-- Targets for setting up and running tests remotely It is assumed that keys are set up on test machines to permit connections without user name and password prompts. --> <target name="runtests-remote" depends="setRemoteLoginClient,setRemoteCopyClient"> <property name="testResults" value="${dropLocation}/${buildLabel}/testresults" /> <exec dir="." executable="${loginClient}"> <arg line="${testMachine} mkdir ${testDir}" /> </exec> <!--install the vm used for testing--> <antcall target="installVmForRemote" /> <!--set up the automated testing framework--> <exec dir="." executable="${copyClient}"> <arg line="${dropLocation}/${buildLabel}/${testFramework} ${testMachine}:${testDir}" /> </exec> <exec dir="." executable="${loginClient}"> <arg line="${testMachine} unzip -o -qq ${testDir}/${testFramework} -d ${testDir}" /> </exec> <exec dir="." executable="${copyClient}"> <arg line="${dropLocation}/${buildLabel}/${runtime} ${testMachine}:${executionDir}" /> </exec> <!--callback to custom script for post setup--> <ant antfile="${customTest}" target="customSetup" dir="${basedir}"/> <exec dir="." executable="${loginClient}"> <arg line="${testMachine} ${testScript} ${args}" /> </exec> <!--${testResults} and ${testResults}/consolelogs must exist before rcp and scp copy operations. Directories contents are copied flattened if the destination directories don't exist.--> <mkdir dir="${testResults}/consolelogs" /> <exec dir="." executable="${copyClient}"> <arg line="-r ${testMachine}:${executionDir}/results/* ${testResults}"/> </exec> <!-- copy the console log from testing --> <exec dir="." executable="${copyClient}"> <arg line="-r ${testMachine}:${executionDir}/${consolelog} ${testResults}/consolelogs"/> </exec> </target> <target name="setRemoteLoginClient"> <!--use rsh if rsh is set, otherwise use default, ssh--> <condition property="loginClient" value="rsh"> <isset property="rsh" /> </condition> <!--default remote login client--> <property name="loginClient" value="ssh" /> </target> <target name="setRemoteCopyClient"> <!--use rcp if rsh is set, otherwise use default, scp--> <condition property="copyClient" value="rcp"> <isset property="rsh" /> </condition> <!--default remote copy client--> <property name="copyClient" value="scp" /> </target> <target name="installVmForRemote" unless="skipVmInstall"> <available file="${vmDest}" property="vmExists" /> <antcall target="getVM" /> <exec dir="." executable="${copyClient}"> <arg line="${vmDest} ${testMachine}:${testDir}" /> </exec> <exec dir="." executable="${loginClient}"> <arg line="${testMachine} ${vmInstallCommand}" /> </exec> </target> <!-- Targets for setting up and running tests locally --> <target name="runtests-local"> <delete dir="${testDir}" quiet="true"/> <mkdir dir="${testDir}" /> <property name="testResults" value="${dropLocation}/${buildLabel}/testresults" /> <!--set up testing directory--> <unzip src="${dropLocation}/${buildLabel}/${testFramework}" dest="${testDir}" /> <!--install the vm used for testing--> <antcall target="installVmForLocal" /> <!--copy in the runtime to test--> <copy todir="${executionDir}" file="${dropLocation}/${buildLabel}/${runtime}" /> <!--callback to custom script for additional setup--> <ant antfile="${customTest}" target="customSetup" dir="${basedir}" /> <!--run the tests--> <exec dir="${executionDir}" executable="${testExecutable}"> <arg line="${args}" /> </exec> <mkdir dir="${testResults}" /> <mkdir dir="${testResults}/consolelogs" /> <copy todir="${testResults}"> <fileset dir="${executionDir}/results" /> </copy> <copy todir="${testResults}/consolelogs" file="${executionDir}/${consolelog}" /> </target> <target name="installVmForLocal" unless="skipVmInstall"> <available file="${vmDest}" property="vmExists" /> <antcall target="getVM" /> <exec dir="${testDir}" executable="${vmInstallExecutable}"> <arg line="${vmInstallCommand}" /> </exec> </target> <target name="getVM" unless="vmExists"> <get src="${vmUrl}" dest="${vmDest}" usetimestamp="true"/> </target> </project>