alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

What this is

This file is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Other links

The source code

<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>
... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.