Author: varlax
Date: Mon Nov 20 03:27:39 2006
New Revision: 477149
URL: http://svn.apache.org/viewvc?view=rev&rev=477149
Log:
Refactored kernel.test.xml, made it more "ant-minded" and added some features:
[+] "kernel.test.forkmode" support, "once" by default;
[+] single "test.case" support;
[+] "kernel.test.failfast" behaviour support;
[!] Improved results reporting;
[+] easy customization via property file;
Some intermittent failures appeared on Win32 due to forking only "once", but we must meet
them sooner or later - why not now...
Added:
harmony/enhanced/drlvm/trunk/build/make/test.properties
Modified:
harmony/enhanced/drlvm/trunk/build/make/targets/kernel.test.xml
Modified: harmony/enhanced/drlvm/trunk/build/make/targets/kernel.test.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/build/make/targets/kernel.test.xml?view=diff&rev=477149&r1=477148&r2=477149
==============================================================================
--- harmony/enhanced/drlvm/trunk/build/make/targets/kernel.test.xml (original)
+++ harmony/enhanced/drlvm/trunk/build/make/targets/kernel.test.xml Mon Nov 20 03:27:39 2006
@@ -1,17 +1,18 @@
<!--
- Copyright 2006 The Apache Software Foundation or its licensors, as applicable.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
-->
<project name="KERNEL TESTS">
@@ -20,7 +21,9 @@
<property name="kernel.test.dir" location="${build.semi.dir}/kernel.tests"/>
<property name="test.resource.path" location="${kernel.test.dir}/resources"/>
<property name="test.class.path" location="${kernel.test.dir}/classes"/>
-
+
+ <property name="test.jvm.exe" value="${build.deploy.dir}/bin/java"/>
+ <property file="test.properties"/>
<patternset id="kernel.test.java.pattern">
<include name="org/apache/harmony/**/*Test.java" />
@@ -36,68 +39,58 @@
<exclude name="java/lang/RuntimeAdditionalTest40.java" />
<exclude name="java/lang/RuntimeAdditionalTest41.java" />
<exclude name="java/lang/RuntimeAdditionalTest42.java" />
-
- <!-- This test fails -->
- <!--exclude name="java/lang/ThreadTest.java" /-->
</patternset>
-
- <property name="vm.use_verifier" value="1" />
- <property name="kernel.test.timeout" value="360000" />
- <target name="kernel.test" depends="-pre-kernel-test">
- <property name="test.mode" value="jet+opt+int" />
- <if>
- <contains string="${test.mode}" substring="batch" />
- <then>
- <antcallback target="-run-kernel-test-batch"
- return="batch.status">
- </antcallback>
- </then>
- </if>
- <if>
- <contains string="${test.mode}" substring="jet" />
- <then>
- <antcallback target="-run-kernel-test"
- return="jit.jet.status">
- <param name="jit.or.interpreter" value="jitrino.jet" />
- <param name="int.or.jit.arg" value="-Dem.properties=jet" />
- </antcallback>
- </then>
- </if>
- <if>
- <contains string="${test.mode}" substring="opt" />
- <then>
- <antcallback target="-run-kernel-test"
- return="jit.opt.status">
- <param name="jit.or.interpreter" value="jitrino.opt" />
- <param name="int.or.jit.arg" value="-Dem.properties=opt" />
- </antcallback>
- </then>
- </if>
- <if>
- <contains string="${test.mode}" substring="int" />
- <then>
- <antcallback target="-run-kernel-test"
- return="interpreter.status">
- <param name="jit.or.interpreter" value="interpreter" />
- <param name="int.or.jit.arg" value="-Xint" />
- </antcallback>
- </then>
- </if>
- <if>
- <or>
- <contains string="${jit.jet.status}" substring="FAILED" />
- <contains string="${jit.opt.status}" substring="FAILED" />
- <contains string="${interpreter.status}" substring="FAILED" />
- <contains string="${batch.status}" substring="FAILED" />
- </or>
- <then>
- <fail message="Kernel tests FAILED" />
- </then>
- </if>
- </target>
+ <target name="kernel.test"
+ depends="compile-kernel-test, run-kernel-test, report-kernel-test, check-kernel-test"/>
- <target name="compile-kernel-tests" depends="">
+ <target name="run-kernel-test" depends="-prepare-kernel-test">
+ <condition property="kernel.test.continue" value="true" else="false">
+ <isfalse value="${kernel.test.failfast}"/>
+ </condition>
+ <for list="${kernel.test.mode}" param="mode"
+ trim="true" keepgoing="${kernel.test.continue}">
+ <sequential>
+ <antcall target="-run-kernel-test-batch">
+ <param name="kernel.mode" value="@{mode}" />
+ </antcall>
+ </sequential>
+ </for>
+ </target>
+
+ <target name="report-kernel-test">
+ <for list="${kernel.test.mode}" param="mode"
+ trim="true" keepgoing="true">
+ <sequential>
+ <junitreport todir="${kernel.test.dir}/reports/@{mode}.mode">
+ <fileset dir="${kernel.test.dir}/reports/@{mode}.mode">
+ <include name="*.xml" />
+ </fileset>
+ <report format="frames"
+ todir="${kernel.test.dir}/reports/@{mode}.mode/html" />
+ </junitreport>
+ </sequential>
+ </for>
+ </target>
+
+ <target name="check-kernel-test">
+ <loadfile property="kernel.test.summary"
+ srcFile="${kernel.test.dir}/reports/summary"/>
+ <echo message=" ***************************${line.separator}"/>
+ <echo message=" *** Kernel tests status ***${line.separator}"/>
+ <echo message=" ***************************${line.separator}"/>
+ <echo message="${line.separator}"/>
+ <echo message="${kernel.test.summary}"/>
+ <echo message="${line.separator}"/>
+ <echo>Please find detailed results under ${kernel.test.dir}/reports directory.</echo>
+
+ <condition property="kernel.failures">
+ <contains string="${kernel.test.summary}" substring="FAILED" />
+ </condition>
+ <fail if="kernel.failures" message="There were test failures." />
+ </target>
+
+ <target name="compile-kernel-test">
<mkdir dir="${test.resource.path}" />
<javac srcdir="${kernel.test.javasrc}/../kernel_resources"
destdir="${test.resource.path}"
@@ -111,177 +104,61 @@
<delete quiet="true" dir="${test.class.path}/notfound" />
</target>
- <target name="-pre-kernel-test" depends="compile-kernel-tests">
+ <target name="-prepare-kernel-test">
+ <delete quiet="true" dir="${kernel.test.dir}/reports" />
+ <mkdir dir="${kernel.test.dir}/reports" />
+
<condition property="junit.jar" value="${junit.home}/junit.jar">
<isset property="junit.home" />
</condition>
- <property name="junit.jar" location="${external.dep.CLASSLIB}/depends/jars/junit_3.8.2/junit.jar"/>
- <if>
- <not>
- <available file="${junit.jar}"/>
- </not>
- <then>
- <echo>
+ <property name="junit.jar"
+ location="${external.dep.CLASSLIB}/depends/jars/junit_3.8.2/junit.jar"/>
+ <available file="${junit.jar}" property="junit.found"/>
+ <fail unless="junit.found">
==============================================
Please set the classpath of junit as follows:
build.bat -Djunit.jar=%JUNIT_HOME% test
==============================================
- </echo>
- <fail message="Kernel tests misconfigured" />
- </then>
- </if>
-
- <delete quiet="true" dir="${kernel.test.dir}/reports" />
- <delete quiet="true" dir="${kernel.test.dir}/ref-reports" />
- <mkdir dir="${kernel.test.dir}/reports" />
- <mkdir dir="${kernel.test.dir}/ref-reports" />
-
+ </fail>
</target>
<target name="-run-kernel-test-batch">
+ <propertycopy property="kernel.mode.name" from="${kernel.mode}.name" override="on"/>
+ <propertycopy property="kernel.mode.switch" from="${kernel.mode}.switch" override="on"/>
+ <echo>
+ ==================================
+ Run kernel tests using ${kernel.mode.name}
+ ==================================
+ </echo>
<property name="report.dir"
- location="${kernel.test.dir}/reports/batch.mode"/>
+ location="${kernel.test.dir}/reports/${kernel.mode}.mode"/>
<mkdir dir="${report.dir}" />
- <junit fork="yes" forkmode="once" timeout="${kernel.test.timeout}"
- haltonfailure="no" failureproperty="batch.failed"
- filtertrace="no" printsummary="on"
- jvm="${build.deploy.dir}/bin/java">
-
- <env key="JAVA_HOME" value="${build.deploy.dir}"/>
+ <junit fork="yes" failureproperty="kernel.failed"
+ filtertrace="no" printsummary="on" showoutput="off"
+ haltonfailure="${kernel.test.failfast}"
+ forkmode="${kernel.test.forkmode}"
+ timeout="${kernel.test.timeout}"
+ jvm="${test.jvm.exe}">
- <jvmarg value="-Dtest.resource.path=${test.resource.path}"/>
<jvmarg value="-Dvm.assert_dialog=0" />
+ <jvmarg value="-Dtest.resource.path=${test.resource.path}"/>
+ <jvmarg value="${kernel.mode.switch}" />
<jvmarg value="-Xbootclasspath/a:${junit.jar}${path.separator}${test.class.path}"
/>
- <formatter type="brief"/>
- <batchtest todir="${report.dir}">
+ <formatter type="xml"/>
+ <batchtest todir="${report.dir}" unless="test.case">
<fileset dir="${kernel.test.javasrc}">
<patternset refid="kernel.test.java.pattern"/>
</fileset>
</batchtest>
+ <test name="${test.case}" todir="${report.dir}" if="test.case" />
</junit>
- <condition property="batch.status" value="FAILED" else="PASSED">
- <isset property="batch.failed" />
+ <condition property="kernel.status" value="FAILED" else="PASSED">
+ <isset property="kernel.failed" />
</condition>
- </target>
-
-
- <target name="-run-kernel-test">
- <echo>
- ==================================
- Run kernel tests using ${jit.or.interpreter}
- ==================================
- </echo>
-
- <property name="report.dir"
- location="${kernel.test.dir}/reports/${jit.or.interpreter}"/>
- <mkdir dir="${report.dir}" />
-
- <for param="test">
- <fileset dir="${kernel.test.javasrc}">
- <patternset refid="kernel.test.java.pattern" />
- </fileset>
- <sequential>
-
- <basename property="last.dir" file="${kernel.test.javasrc}" />
- <propertyregex property="class.name" override="true" input="@{test}" regexp="(.)+${last.dir}\${file.separator}"
replace="" defaultValue="@{test}" />
- <propertyregex property="class.name" override="true" input="${class.name}"
regexp="\.java" replace="" defaultValue="${class.name}" />
- <propertyregex property="class.name" override="true" input="${class.name}"
regexp="\${file.separator}" replace="." global="true" defaultValue="${class.name}" />
- <echo message="RUNNING : ${class.name}" />
-
- <junit fork="yes" failureproperty="@{test}.failed"
- timeout="${kernel.test.timeout}" newenvironment="yes" filtertrace="no"
- jvm="${build.deploy.dir}/bin/java">
-
- <env key="JAVA_HOME" value="${build.deploy.dir}"/>
-
- <!--env key="LD_LIBRARY_PATH" value="${build.deploy.dir}/bin:${env.LD_LIBRARY_PATH}"
/-->
- <env key="SYSTEMDRIVE" value="${env.SystemDrive}" />
- <env key="HOME" value="${env.HOME}" />
- <env key="PATH" value="${env.PATH}" />
- <jvmarg value="-Dtest.resource.path=${test.resource.path}"/>
- <jvmarg value="-Demma.coverage.out.file=${emma.coverage.out}" />
- <jvmarg value="-Demma.coverage.out.merge=true" />
- <jvmarg value="-Xbootclasspath/p:${emma.coverage.ip}${path.separator}${emma.jar}"
/>
- <jvmarg value="-Dvm.use_verifier=${vm.use_verifier}" />
- <jvmarg value="-Dvm.assert_dialog=0" />
- <jvmarg value="-Xbootclasspath/a:${junit.jar}${path.separator}${test.class.path}"
/>
- <jvmarg value="${int.or.jit.arg}" />
- <jvmarg value="-ea:java.lang.reflect..." />
- <formatter type="brief"/>
- <formatter type="xml" />
- <test name="${class.name}" todir="${report.dir}"/>
- </junit>
- <condition property="${jit.or.interpreter}.status" value="FAILED">
- <isset property="@{test}.failed" />
- </condition>
-
- <!--
- Gregory
- It appears that some kernel unit tests for drlvm classes are
- implementation specific and may fail on RI. So it makes no
- sense to check tests on RI. Also running test on RI
- right after it failed on drlvm creates wrong test run report.
-
- I am commenting this block for now in case someone wants it
- back, possibly under some condition. My POV is that this
- block should be removed eventually.
- <if>
- <or>
- <isset property="@{test}.failed" />
- <isset property="kernel.test.reference" />
- </or>
- <then>
- <junit fork="yes" failureproperty="@{test}.ref.failed"
- timeout="${kernel.test.timeout}"
- newenvironment="yes" filtertrace="no">
-
-
- <env key="JAVA_HOME" value="${build.deploy.dir}"/>
-
- <!- -env key="LD_LIBRARY_PATH" value="${build.deploy.dir}/bin:${env.LD_LIBRARY_PATH}"
/- ->
- <env key="SYSTEMDRIVE" value="${env.SystemDrive}" />
- <env key="HOME" value="${env.HOME}" />
- <env key="PATH" value="${env.PATH}" />
- <jvmarg value="-Dtest.resource.path=${test.resource.path}"/>
- <jvmarg value="-Xbootclasspath/a:${junit.jar}${path.separator}${test.class.path}"
/>
- <formatter type="brief"/>
- <formatter type="xml" />
- <test name="${class.name}" todir="${kernel.test.dir}/ref-reports"/>
- </junit>
-
- <if>
- <isset property="@{test}.ref.failed" />
- <then>
- <echo message=" **** FAILED on reference JRE ****" />
- </then>
- </if>
- </then>
- </if>
- /-->
- </sequential>
- </for>
-
- <junitreport todir="${report.dir}">
- <fileset dir="${report.dir}">
- <include name="TEST-*.xml" />
- </fileset>
- <report format="frames" todir="${report.dir}/html" />
- </junitreport>
- <junitreport todir="${kernel.test.dir}/ref-reports">
- <fileset dir="${kernel.test.dir}/ref-reports">
- <include name="TEST-*.xml" />
- </fileset>
- <report format="frames" todir="${kernel.test.dir}/ref-reports/html" />
- </junitreport>
- <property name="${jit.or.interpreter}.status" value="PASSED"/>
- <propertycopy name="status" from="${jit.or.interpreter}.status"/>
- <echo message="" />
- <echo message="==============================================" />
- <echo message="Kernel tests ${status} using ${jit.or.interpreter}. Please find
the detailed results here:" />
- <echo message="${report.dir}${file.separator}html${file.separator}index.html"
/>
- <echo message="==============================================" />
+ <concat append="on" destfile="${kernel.test.dir}/reports/summary"
+ > ${kernel.mode.name} ${kernel.status}${line.separator}</concat>
</target>
</project>
Added: harmony/enhanced/drlvm/trunk/build/make/test.properties
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/build/make/test.properties?view=auto&rev=477149
==============================================================================
--- harmony/enhanced/drlvm/trunk/build/make/test.properties (added)
+++ harmony/enhanced/drlvm/trunk/build/make/test.properties Mon Nov 20 03:27:39 2006
@@ -0,0 +1,19 @@
+kernel.test.mode=jet,opt,int
+kernel.test.failfast=off
+kernel.test.forkmode=once
+kernel.test.timeout=360000
+
+
+jit.name=Client mode JIT (default)
+jit.switch=-Dbogus
+
+jet.name=jitrino.JET
+jet.switch=-Xem:jet
+
+opt.name=jitrino.OPT
+opt.switch=-Xem:opt
+
+int.name=interpreter
+int.switch=-Xint
+
+
|