From: <pet...@us...> - 2007-01-25 10:39:32
|
Revision: 11374 http://svn.sourceforge.net/jikesrvm/?rev=11374&view=rev Author: peter_donald Date: 2007-01-25 02:39:31 -0800 (Thu, 25 Jan 2007) Log Message: ----------- Make it possible for the testing system to exclude tests from test run. The exclusion rules allow exclusion of test by * specific test altogether or in a particular configuration, target or configuration+target * test suite altogether or in a particular configuration, target or configuration+target * all tests in a particular configuration, target or configuration+target Currently the nightly tests exclude the following tests unconditionally from all runs as they are not working and unlikely to work in near future. * basic/test.org.jikesrvm.basic.core.threads.TestSuspend * dacapo/eclipse To achieve this we needed to add an if task as the ant pattern if selective task execution does not work from within macros. Modified Paths: -------------- rvmroot/trunk/build/tasks.xml rvmroot/trunk/build/testing/sanity.properties rvmroot/trunk/build/tests.xml rvmroot/trunk/testing/build.xml rvmroot/trunk/testing/tests/dacapo/build.xml Added Paths: ----------- rvmroot/trunk/tools/ant-tasks/src/org/jikesrvm/tools/ant/IfTask.java Modified: rvmroot/trunk/build/tasks.xml =================================================================== --- rvmroot/trunk/build/tasks.xml 2007-01-25 10:27:44 UTC (rev 11373) +++ rvmroot/trunk/build/tasks.xml 2007-01-25 10:39:31 UTC (rev 11374) @@ -21,6 +21,8 @@ <taskdef name="timer" classname="org.jikesrvm.tools.ant.TimerTask" classpath="${tasks.classes}"/> <!-- custom exec task will store value in property when timeout occurs. Used in running rvm. --> <taskdef name="texec" classname="org.jikesrvm.tools.ant.TimeoutRecordingExecTask" classpath="${tasks.classes}"/> + <!-- Task that makes it easier for conditional task execution within macros. --> + <taskdef name="if" classname="org.jikesrvm.tools.ant.IfTask" classpath="${tasks.classes}"/> </target> </project> Modified: rvmroot/trunk/build/testing/sanity.properties =================================================================== --- rvmroot/trunk/build/testing/sanity.properties 2007-01-25 10:27:44 UTC (rev 11373) +++ rvmroot/trunk/build/testing/sanity.properties 2007-01-25 10:39:31 UTC (rev 11374) @@ -50,3 +50,6 @@ test.run.ExtremeAssertionsOptAdaptiveCopyMS.tests=${test.set.short} test.run.BaseBaseGCTrace.tests=gctracingtest + +exclude.test.basic.test.org.jikesrvm.basic.core.threads.TestSuspend=true +exclude.test.dacapo.eclipse=true Modified: rvmroot/trunk/build/tests.xml =================================================================== --- rvmroot/trunk/build/tests.xml 2007-01-25 10:27:44 UTC (rev 11373) +++ rvmroot/trunk/build/tests.xml 2007-01-25 10:39:31 UTC (rev 11374) @@ -348,21 +348,56 @@ <property name="test.@{tag}.output.file" value="${output.dir}/@{tag}-output.txt"/> <property name="test.@{tag}.sanitized.output.file" value="${output.dir}/@{tag}.txt"/> + <condition property="test.@{tag}.exclude" value="true" else="false"> + <or> + <!-- check whether we have disabled test altogether, in configuration, target or configuration+target --> + <isset property="exclude.test.${test.suite.name}.@{tag}"/> + <isset property="exclude.test.${config.name}.${test.suite.name}.@{tag}"/> + <isset property="exclude.test.${target.name}.${test.suite.name}.@{tag}"/> + <isset property="exclude.test.${config.name}.${target.name}.${test.suite.name}.@{tag}"/> + + <!-- check whether we have disabled suite altogether, in configuration, target or configuration+target --> + <isset property="exclude.suite..${test.suite.name}"/> + <isset property="exclude.suite.${config.name}.${test.suite.name}"/> + <isset property="exclude.suite.${target.name}.${test.suite.name}"/> + <isset property="exclude.suite.${config.name}.${target.name}.${test.suite.name}"/> + + <!-- check whether we have disabled testing altogether, in configuration, target or configuration+target --> + <isset property="exclude.tests.${config.name}"/> + <isset property="exclude.tests.${target.name}"/> + <isset property="exclude.tests.${config.name}.${target.name}"/> + </or> + </condition> + <property name="test.@{tag}.command" value='${rvm.exe} ${test.@{tag}.rvm.args} -classpath "${test.@{tag}.class.path}" ${test.@{tag}.class} ${test.@{tag}.args}'/> + <if> + <equals arg1="${test.@{tag}.exclude}" arg2="true"/> + <sequential> + <!-- If we run are excluded then record result --> + <property name="test.@{tag}.result" value="EXCLUDED"/> + <explainResult tag="@{tag}" message="Test excluded."/> + <touch file="${test.@{tag}.output.file}"/> + </sequential> + </if> <timer property="test.@{tag}.time"/> - <texec executable="${rvm.exe}" - failonerror="false" - dir="@{dir}" - timeout="${test.@{tag}.time.limit}000" - timeoutProperty="test.@{tag}.timeout" - output="${test.@{tag}.output.file}" - resultproperty="test.@{tag}.exit.code"> - <arg line="${test.@{tag}.rvm.args}"/> - <arg value="-classpath"/> - <arg value="${test.@{tag}.class.path}"/> - <arg line="${test.@{tag}.class} ${test.@{tag}.args}"/> - </texec> + <if> + <equals arg1="${test.@{tag}.exclude}" arg2="false"/> + <sequential> + <texec executable="${rvm.exe}" + failonerror="false" + dir="@{dir}" + timeout="${test.@{tag}.time.limit}000" + timeoutProperty="test.@{tag}.timeout" + output="${test.@{tag}.output.file}" + resultproperty="test.@{tag}.exit.code"> + <arg line="${test.@{tag}.rvm.args}"/> + <arg value="-classpath"/> + <arg value="${test.@{tag}.class.path}"/> + <arg line="${test.@{tag}.class} ${test.@{tag}.args}"/> + </texec> + </sequential> + </if> <timer property="test.@{tag}.time" stop="true"/> <cleanOutput file="${test.@{tag}.output.file}" tofile="${test.@{tag}.sanitized.output.file}"/> Modified: rvmroot/trunk/testing/build.xml =================================================================== --- rvmroot/trunk/testing/build.xml 2007-01-25 10:27:44 UTC (rev 11373) +++ rvmroot/trunk/testing/build.xml 2007-01-25 10:39:31 UTC (rev 11374) @@ -78,6 +78,9 @@ <property name="test.run.name" value="${test.run.@{tag}.name}"/> <property name="test.mode" value="${test.run.@{tag}.test.mode}"/> <property name="test.rvm.extra.args" value="${test.run.@{tag}.test.rvm.extra.args}"/> + <propertyset> + <propertyref prefix="exclude."/> + </propertyset> </subant> <subant target="test" failonerror="false" output="${driver.scratch.dir}/Test-@{tag}-@{test}.txt"> <filelist dir="tests" files="@{test}/build.xml"/> @@ -86,6 +89,9 @@ <property name="test.run.name" value="${test.run.@{tag}.name}"/> <property name="test.mode" value="${test.run.@{tag}.test.mode}"/> <property name="test.rvm.extra.args" value="${test.run.@{tag}.test.rvm.extra.args}"/> + <propertyset> + <propertyref prefix="exclude."/> + </propertyset> </subant> </sequential> </forEach> Modified: rvmroot/trunk/testing/tests/dacapo/build.xml =================================================================== --- rvmroot/trunk/testing/tests/dacapo/build.xml 2007-01-25 10:27:44 UTC (rev 11373) +++ rvmroot/trunk/testing/tests/dacapo/build.xml 2007-01-25 10:39:31 UTC (rev 11374) @@ -42,10 +42,8 @@ <dacapo name="lusearch"/> <dacapo name="pmd"/> <dacapo name="xalan"/> + <dacapo name="eclipse"/> - <!-- eclipse does not work so time limit it but still let it run --> - <dacapo name="eclipse" timeLimit="30"/> - <outputGroupEnd/> <finishResults/> </target> Added: rvmroot/trunk/tools/ant-tasks/src/org/jikesrvm/tools/ant/IfTask.java =================================================================== --- rvmroot/trunk/tools/ant-tasks/src/org/jikesrvm/tools/ant/IfTask.java (rev 0) +++ rvmroot/trunk/tools/ant-tasks/src/org/jikesrvm/tools/ant/IfTask.java 2007-01-25 10:39:31 UTC (rev 11374) @@ -0,0 +1,41 @@ +package org.jikesrvm.tools.ant; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.taskdefs.MacroDef; +import org.apache.tools.ant.taskdefs.MacroInstance; +import org.apache.tools.ant.taskdefs.condition.Condition; +import org.apache.tools.ant.taskdefs.condition.ConditionBase; + +/** + * The if task makes it easier to performs some tasks conditionally. + * It contains a nested condition and associated sequential task. + * + * @author Peter Donald + */ +public class IfTask + extends ConditionBase { + private MacroDef macroDef; + + public MacroDef.NestedSequential createSequential() { + macroDef = new MacroDef(); + macroDef.setProject(getProject()); + return macroDef.createSequential(); + } + + public void execute() { + validate(); + + final Condition condition = (Condition) getConditions().nextElement(); + if (condition.eval()) { + final MacroInstance i = new MacroInstance(); + i.setProject(getProject()); + i.setMacroDef(macroDef); + i.execute(); + } + } + + private void validate() { + if (1 != countConditions()) throw new BuildException("Must specify exactly one condition."); + if (null == macroDef) throw new BuildException("Must specify a sequential task to execute."); + } +} Property changes on: rvmroot/trunk/tools/ant-tasks/src/org/jikesrvm/tools/ant/IfTask.java ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |