summaryrefslogtreecommitdiff
path: root/openembedded/scripts
diff options
context:
space:
mode:
authorAndrew McDermott <andrew.mcdermott@linaro.org>2013-11-14 15:11:19 +0000
committerAndrew McDermott <andrew.mcdermott@linaro.org>2013-11-20 11:46:06 +0000
commit751be8e82a104ad60e7fa67227cff2bc6e10a01a (patch)
treef748d43b2adbc3c0ac77b8995b13412cef8884be /openembedded/scripts
parentd79a15befea960cc4eac564807aea79a2162bfce (diff)
Rework OpenJDK tests to invoke jtreg directly
This commit reworks the invocation of the JTREG tests to rely on jtreg(1) directly. It was previously using the makefiles in the OpenJDK test directories but there were significant differences between the JDK Makefile and the hotspot Makefile which added unnecessary complexity, particularly as we now want to run tests against both -client and -server VMs. There are also additional parameters for specifying the test timeout and job concurrency. And I also moved the exclude file into this repo so that it can be subject to code reviews. Change-Id: Ic90df7969f862c3fc5ecb71f658601cd2e1d89ba Signed-off-by: Andrew McDermott <andrew.mcdermott@linaro.org>
Diffstat (limited to 'openembedded/scripts')
-rwxr-xr-xopenembedded/scripts/jtreg-test167
1 files changed, 73 insertions, 94 deletions
diff --git a/openembedded/scripts/jtreg-test b/openembedded/scripts/jtreg-test
index a19928f..7f3b82b 100755
--- a/openembedded/scripts/jtreg-test
+++ b/openembedded/scripts/jtreg-test
@@ -1,6 +1,6 @@
#!/bin/bash
-# JTREG LAVA test harness.
+# LAVA wrapper for invoking jtreg(1) and accumulating the results.
#
# Copyright (C) 2013, Linaro Limited.
#
@@ -21,104 +21,83 @@
# Author: Andrew McDermott <andrew.mcdermott@linaro.org>
#
-if [ $# -lt 2 ]; then
- echo "usage: $0: <test-dir> <test>" >&2
- exit 1
-fi
-
-if [ -z "$PRODUCT_HOME" ]; then
- echo "error: PRODUCT_HOME not set!" >&2
- exit 1
-fi
-
-if [ -z "$JT_HOME" ]; then
- echo "error: JT_HOME not set!" >&2
- exit 1
-fi
-
-if [ -z "$JTREG" ]; then
- JTREG=$JT_HOME/linux/bin/jtreg-lava
-fi
-
-set -x
-
-uniq_pathname() {
- local name=$1
- name=${name#$to/}
- name=${name////-}
- echo $to/$name
-}
-
-test_dir=$1
-test_to_run=$2
-
-t=/tmp/jtreg/$test_to_run.$$
-rm -rf $t
-mkdir -p $t
-to=$t/testoutput
-
-# Accommodate differences between jdk tests and hotspot tests.
-#
-# The hotspot tests need to be invoked with TESTDIRS set and they also
-# put the output one directory deeper and the output content (and
-# location) is different to the jdk tests.
-#
-if [ -n "$TESTDIRS" ]; then
- lava-test-case $test_to_run \
- --shell \
- make -C $test_dir PRODUCT_HOME=$PRODUCT_HOME JTREG=$JTREG JT_HOME=$JT_HOME ALT_OUTPUTDIR=$t TESTDIRS=$TESTDIRS
-
- exit_code=$?
- to=`ls -1d $t/*/testoutput`
- zip --quiet -d $to/ARCHIVE_BUNDLE.zip 'JTwork/classes/*'
- mv $to/ARCHIVE_BUNDLE.zip $to/${test_to_run}-ARCHIVE_BUNDLE.zip
- lava-test-case-attach $test_to_run $to/${test_to_run}-ARCHIVE_BUNDLE.zip
- pushd $PWD
- cd $to
- unzip -x -o $to/${test_to_run}-ARCHIVE_BUNDLE.zip 'JTreport/text/*.txt'
- shopt -s nullglob
- for i in $to/JTwork/scratch/hs*.log; do
- lava-test-case-attach $test_to_run $i text/plain
- done
- for i in JTreport/text/*.txt; do
- lava-test-case-attach $test_to_run $i text/plain
+# All options before the '--' are for this script. The remaining are
+# for jtreg(1).
+
+test_case=unknown
+java_vm=-client
+product_home=/usr/lib/jvm/java-8-openjdk
+
+while getopts ":j:o:p:t:" opt; do
+ case $opt in
+ j)
+ java_vm=$OPTARG
+ ;;
+ o)
+ output_dir=$OPTARG
+ ;;
+ p)
+ product_home=$OPTARG
+ ;;
+ t)
+ test_case=$OPTARG
+ ;;
+ \?)
+ echo "Invalid option: -$OPTARG" >&2
+ exit 1
+ ;;
+ :)
+ echo "Option -$OPTARG requires an argument." >&2
+ exit 1
+ ;;
+ esac
+done
+
+shift $((OPTIND-1))
+
+output_dir=/tmp/jtreg/$test_case.$$
+rm -rf $output_dir
+
+lava-test-case $test_case --shell \
+ jtreg \
+ -J${java_vm} \
+ -vmoption:${java_vm} \
+ -jdk:"${product_home}" \
+ -w:$output_dir/JTwork \
+ -r:$output_dir/JTreport \
+ "$@"
+
+exit_code=$?
+
+shopt -s globstar
+shopt -s nullglob
+
+# By pushd'ing we make the attached filenames in the LAVA dashboard
+# much smaller.
+
+if [ -d $output_dir/JTreport/text ]; then
+ pushd $output_dir/JTreport/text
+ for i in *.txt; do
+ if [ $i = "summary.txt" ]; then
+ grep 'Failed\.' $i > failed.txt
+ lava-test-case-attach $test_case failed.txt
+ grep 'Passed\.' $i > success.txt
+ lava-test-case-attach $test_case success.txt
+ sed -i '/Not run\./d' $i
+ fi
+ lava-test-case-attach $test_case $i
done
popd
-else
- lava-test-case $test_to_run \
- --shell \
- make -C $test_dir PRODUCT_HOME=$PRODUCT_HOME JTREG=$JTREG JT_HOME=$JT_HOME ALT_OUTPUTDIR=$t $test_to_run
-
- exit_code=$?
-
- shopt -s nullglob
-
- for i in $to/${test_to_run}*/*.txt; do
- name=$(uniq_pathname $i)
- cp $i $name
- if [ -s $name ]; then
- lava-test-case-attach $test_to_run $name
- fi
- done
-
- for i in $to/${test_to_run}*/JTwork/scratch/hs*.log; do
- lava-test-case-attach $test_to_run $i text/plain
- done
-
- for i in $to/${test_to_run}*/ARCHIVE_BUNDLE.zip; do
- zip --quiet -d $i 'JTwork/classes/*'
- name=$(uniq_pathname $i)
- cp $i $name
- if [ -s $name ]; then
- lava-test-case-attach $test_to_run $name
- fi
- done
+fi
- for i in $to/${test_to_run}*/Stats.txt; do
- cat $i
+if [ -d $output_dir/JTwork/scratch ]; then
+ pushd $output_dir/JTwork/scratch
+ for i in hs*.log; do
+ lava-test-case-attach $test_case $i text/plain
done
+ popd
fi
-rm -rf $t
+rm -rf $output_dir
exit $exit_code