- job: name: jdkX-jtreg-test project-type: matrix defaults: global description: | * Runs the jtreg tests. properties: - authorization: linaro: - job-read openjdk-members: - job-read - job-extended-read - job-build - job-cancel - job-workspace - build-discarder: days-to-keep: 30 num-to-keep: 10 artifact-num-to-keep: 5 parameters: - string: name: YEAR default: 'default' - string: name: DAY_OF_YEAR default: 'default' disabled: true node: j12-qrep-01 display-name: 'OpenJDK JDK - Run jtreg tests' axes: - axis: type: user-defined name: BUILD_TYPE values: - release - axis: type: user-defined name: JTREG_CATEGORY values: - hotspot - langtools - jdk - axis: type: slave name: label values: - j12-qrep-01 execution-strategy: sequential: true wrappers: - xvfb: auto-display-name: true additional-options: '-p unix' debug: true - workspace-cleanup: dirmatch: false - timestamps - matrix-tie-parent: node: j12-qrep-01 builders: - shell: | #!/bin/bash echo "DISPLAY=${DISPLAY}" set -exu DEPS=$HOME/workspace/jdkX-get-deps source $DEPS/build-date.sh export JDK_VERSION=X IMAGE_DIR=${WORKSPACE}/jdkX-${BUILD_TYPE} PERSIST=$HOME/srv/openjdkX JCSTRESS=$DEPS/jcstress.jar tar xf $DEPS/jdkX.tar.gz tar xf ~/workspace/jdkX-build-image/BUILD_TYPE/${BUILD_TYPE}/label/${NODE_NAME}/out/jdkX-${BUILD_TYPE}.tar.gz tar xf $DEPS/jtreg-build-4.2.0-SNAPSHOT.tar.xz tar xf ~/workspace/jdkX-build-image/BUILD_TYPE/${BUILD_TYPE}/label/${NODE_NAME}/out/jdkX-${BUILD_TYPE}-support.tar.gz # All the output directories and general frobbing # output is to match the existing layout as expected # by the cron-based publish and reporting scripts. # XXX There's probably a better way. YEAR=XXX__YEAR__XXX DAY_OF_YEAR=YYY__DAY_OF_YEAR__YYY basedir=cron_output mkdir -p ${basedir}/{src,builds,reports} src_dir=${basedir}/src/${YEAR}/${DAY_OF_YEAR} work_dir=${basedir}/builds/${BUILD_TYPE}/${YEAR}/${DAY_OF_YEAR}/JTwork-${JTREG_CATEGORY} report_dir=${basedir}/reports/${BUILD_TYPE}/${JTREG_CATEGORY}/$(uname -m)/${YEAR}/${DAY_OF_YEAR}/JTreport mkdir -p out ${src_dir} ${work_dir} ${report_dir} mv jdkX/* ${src_dir} blacklist=${WORKSPACE}/excludes.txt # Add jtreg directory level for hotspot only. jdk_problem_list=${src_dir}/test/${JTREG_CATEGORY} if [ $JTREG_CATEGORY = "hotspot" ]; then jdk_problem_list=${jdk_problem_list}/jtreg/ProblemList.txt else jdk_problem_list=${jdk_problem_list}/ProblemList.txt fi if [ -e $jdk_problem_list ]; then cat $jdk_problem_list > ${blacklist} fi aarch64_exclude_file=${src_dir}/test/exclude_aarch64.txt if [ -e ${aarch64_exclude_file} ]; then cat ${aarch64_exclude_file} >> ${blacklist} fi touch ${blacklist} echo "Blacklist" echo "=========" cat ${blacklist} echo "---------" export JAVA_HOME=${WORKSPACE}/jdkX-${BUILD_TYPE} export PATH=$JAVA_HOME/bin:${PATH} # For hotspot and jdk we pass a -nativepath: option to jtreg. # This enables the tests needing native libraries to run. NATIVEPATH=${WORKSPACE}/jdkX-${BUILD_TYPE}-support/support/test/${JTREG_CATEGORY}/jtreg/native/lib if [ $JTREG_CATEGORY = "langtools" ]; then # The nativepath option we pass must be a valid directory, or # not at all.` NATIVE_OPT= else # Test executables are expected to be in same directory as libraries mv $NATIVEPATH/../bin/* $NATIVEPATH NATIVE_OPT=-nativepath:$NATIVEPATH fi PATH=${WORKSPACE}/jtreg/bin:${PATH} which java java -version # Ignore error in jtreg final result. set +e # hotspot splits its tests into gtest jtreg tests. We just do jtreg. if [ $JTREG_CATEGORY == "hotspot" ]; then TEST_SUBDIR=test/${JTREG_CATEGORY}/jtreg:hotspot_all_no_apps else TEST_SUBDIR=test/${JTREG_CATEGORY} fi java -jar jtreg/lib/jtreg.jar \ -dir:${src_dir} \ -vmoption:-Djdk.test.lib.artifacts.jcstress-tests-all=$JCSTRESS \ -vmoption:-Xmx2G \ -testjdk:${IMAGE_DIR} \ -exclude:${blacklist} \ -conc:20 \ -r:${report_dir} \ -w:${work_dir} \ $NATIVE_OPT \ -timeout:8 \ -a -agentvm -ignore:quiet -v1 ${TEST_SUBDIR}| cat -n # Kill leftover jstatd processes. killall -9 jstatd set -e # We don't care for the .class files. find ${work_dir} -name \*.class -exec rm {} \; # Match the exact output of the cron-based scripts. dest=$PERSIST/openjdk-jtreg-nightly-tests sed_expr=$(echo s!${WORKSPACE}/${basedir}!$dest!g) find ${work_dir} -type f -exec perl -p -i -e "$sed_expr" {} \; find ${report_dir} -type f -exec perl -p -i -e "$sed_expr" {} \; mkdir -p out tar -C ${basedir} --show-transformed-names -acvf out/jtreg-results-${JTREG_CATEGORY}-${BUILD_TYPE}.tar.gz builds reports publishers: - archive: artifacts: 'out/jtreg-results-${JTREG_CATEGORY}-${BUILD_TYPE}.tar.gz'