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