<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>

	<target name="runtests-hudson">
		<!-- <delete dir="${testDir}" quiet="true" /> -->
		<mkdir dir="${testDir}" />
		<property name="testResults" value="${testDir}/testresults" />

		<!--set up testing directory-->
		<unzip src="${testFramework}" dest="${testDir}" overwrite="false">
			<patternset>
				<exclude name="**/equinoxp2tests.properties" />
				<exclude name="**/test.xml" />
			</patternset>
		</unzip>

		<echo message="executionDir ${executionDir} testExecutable ${testExecutable} testScript ${testScript} args ${args}" />

		<!--callback to custom script for post setup-->
		<!-- <ant antfile="${customTest}" target="customSetup" dir="${basedir}" /> -->
		<condition property="executionArguments" value="/c ${testScript} ${args}">
			<and>
				<os family="windows" />
			</and>
		</condition>
		<property name="executionArguments" value="${testScript} ${args}" />

		<!--run the tests-->
		<exec dir="${executionDir}" executable="${testExecutable}">
			<arg line="${executionArguments}" />
		</exec>
		<!-- <arg line="${testScript} ${args}" /> -->

		<!--	<mkdir dir="${testResults}" />
		<mkdir dir="${testResults}/consolelogs" /> -->

		<!--	<copy todir="${testResults}">
			<fileset dir="${executionDir}/results" />
		</copy> -->

		<!-- <copy todir="${testResults}/consolelogs" file="${executionDir}/${consolelog}" /> -->
	</target>


</project>