Home | History | Annotate | Download | only in scripts
      1 <project name="Targets to run Automated Tests Locally and Remotely" default="main" basedir=".">
      2 
      3 <!--
      4 This script must be called with the ${tester} property set.
      5 
      6 The testing.properties file must contain definitions for all other properties in this script if they are not
      7 set in a calling script or command line.  See test.properties.template for property descriptions.
      8 -->
      9 
     10 <property name="customTest" value="${tester}/customTest.xml" />
     11 <property name="testing.properties" value="${tester}/testing.properties" />
     12 <property file="${testing.properties}" />
     13 <property name="dropLocation" value="${buildDirectory}" />
     14 	
     15 <target name="main">
     16 	<antcall target="${testTarget}" />
     17 </target>
     18 
     19 <!--
     20 Targets for setting up and running tests remotely
     21 It is assumed that keys are set up on test machines to permit connections without user name and password prompts.
     22 -->
     23 <target name="runtests-remote" depends="setRemoteLoginClient,setRemoteCopyClient">
     24 	<property name="testResults" value="${dropLocation}/${buildLabel}/testresults" />
     25 	
     26 	<exec dir="." executable="${loginClient}">
     27 		<arg line="${testMachine} mkdir ${testDir}" />
     28 	</exec>
     29 	
     30 	<!--install the vm used for testing-->
     31 	<antcall target="installVmForRemote" />
     32 	
     33 	<!--set up the automated testing framework-->
     34 	<exec dir="." executable="${copyClient}">
     35 		<arg line="${dropLocation}/${buildLabel}/${testFramework} ${testMachine}:${testDir}" />
     36 	</exec>
     37 	<exec dir="." executable="${loginClient}">
     38 		<arg line="${testMachine} unzip -o -qq ${testDir}/${testFramework} -d ${testDir}" />
     39 	</exec>
     40 	<exec dir="." executable="${copyClient}">
     41 		<arg line="${dropLocation}/${buildLabel}/${runtime} ${testMachine}:${executionDir}" />
     42 	</exec>
     43 	
     44 	<!--callback to custom script for post setup-->
     45 	<ant antfile="${customTest}" target="customSetup" dir="${basedir}"/>
     46 	
     47 	<exec dir="." executable="${loginClient}">
     48 		<arg line="${testMachine} ${testScript} ${args}" />
     49 	</exec>
     50 	
     51 	<!--${testResults} and ${testResults}/consolelogs must exist before rcp and scp copy operations.
     52 	  Directories contents are copied flattened if the destination directories don't exist.-->
     53 	<mkdir dir="${testResults}/consolelogs" />
     54 	
     55 	<exec dir="." executable="${copyClient}">
     56 		<arg line="-r ${testMachine}:${executionDir}/results/* ${testResults}"/>
     57 	</exec>
     58 	<!--  copy the console log from testing  -->
     59 	<exec dir="." executable="${copyClient}">
     60 		<arg line="-r ${testMachine}:${executionDir}/${consolelog} ${testResults}/consolelogs"/>
     61 	</exec>
     62 </target>
     63 
     64 <target name="setRemoteLoginClient">
     65 	<!--use rsh if rsh is set, otherwise use default, ssh-->
     66 	<condition property="loginClient" value="rsh">
     67 		<isset property="rsh" />
     68 	</condition>
     69 	<!--default remote login client-->
     70 	<property name="loginClient" value="ssh" />	
     71 </target>
     72 
     73 <target name="setRemoteCopyClient">
     74 	<!--use rcp if rsh is set, otherwise use default, scp-->
     75 	<condition property="copyClient" value="rcp">
     76 		<isset property="rsh" />
     77 	</condition>
     78 	<!--default remote copy client-->
     79 	<property name="copyClient" value="scp" />	
     80 </target>
     81 
     82 <target name="installVmForRemote" unless="skipVmInstall">
     83 	<available file="${vmDest}" property="vmExists" />
     84 	<antcall target="getVM" />
     85 	
     86 	<exec dir="." executable="${copyClient}">
     87 		<arg line="${vmDest} ${testMachine}:${testDir}" />
     88 	</exec>
     89 	
     90 	<exec dir="." executable="${loginClient}">
     91 		<arg line="${testMachine} ${vmInstallCommand}" />
     92 	</exec>
     93 </target>
     94 
     95 
     96 <!--
     97 
     98 Targets for setting up and running tests locally
     99 
    100 -->
    101 <target name="runtests-local">
    102 	<delete dir="${testDir}" quiet="true"/>
    103 	<mkdir dir="${testDir}" />
    104 	<property name="testResults" value="${dropLocation}/${buildLabel}/testresults" />
    105 	
    106 	<!--set up testing directory-->
    107 	<unzip src="${dropLocation}/${buildLabel}/${testFramework}" dest="${testDir}" />
    108 	
    109 	<!--install the vm used for testing-->
    110 	<antcall target="installVmForLocal" />
    111 	
    112 	<!--copy in the runtime to test-->
    113 	<copy todir="${executionDir}" file="${dropLocation}/${buildLabel}/${runtime}" />
    114 
    115 	<!--callback to custom script for additional setup-->
    116 	<ant antfile="${customTest}" target="customSetup" dir="${basedir}" />
    117 
    118 	<!--run the tests-->
    119 	<exec dir="${executionDir}" executable="${testExecutable}">
    120   		<arg line="${args}" />
    121 	</exec>
    122 
    123 	<mkdir dir="${testResults}" />
    124 	<mkdir dir="${testResults}/consolelogs" />
    125 
    126 	<copy todir="${testResults}">
    127 		<fileset dir="${executionDir}/results" />
    128 	</copy>
    129 
    130 	<copy todir="${testResults}/consolelogs" file="${executionDir}/${consolelog}" />
    131 </target>
    132 
    133 <target name="installVmForLocal" unless="skipVmInstall">
    134 	<available file="${vmDest}" property="vmExists" />
    135 	<antcall target="getVM" />
    136 	<exec dir="${testDir}" executable="${vmInstallExecutable}">	
    137 		<arg line="${vmInstallCommand}" />
    138 	</exec>
    139 </target>
    140 
    141 <target name="getVM" unless="vmExists">
    142 	<get src="${vmUrl}" dest="${vmDest}" usetimestamp="true"/>
    143 </target>
    144 
    145 </project>