- job: name: jdk8-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 - 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: false node: aarch64-06 display-name: 'OpenJDK 8 - Run jtreg tests' axes: - axis: type: user-defined name: JVM_VARIANT values: - server - client - 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: - aarch64-06 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: aarch64-06 builders: - copyartifact: project: jtreg-build filter: 'jtreg-build-4.2.0-SNAPSHOT.tar.xz' target: incoming flatten: true # copyartifact is slow and the file is local # copy instead of going back and forth between master <-> slave # - copyartifact: # project: jdk8-build-image # filter: 'out/jdk8u-${JVM_VARIANT}-${BUILD_TYPE}.tar.gz' # target: incoming # flatten: true - copyartifact: project: jdk8-update-src-tree filter: 'out/jdk8u.tar.gz, out/build-date.sh' target: incoming flatten: true - shell: | #!/bin/bash echo "DISPLAY=${DISPLAY}" set -exu source incoming/build-date.sh export JDK_VERSION=8u # client variant uses server with -XX:TieredStopAtLevel=1 # zero is a third possible value. REAL_VARIANT=${JVM_VARIANT/client/server} IMAGE_DIR=${WORKSPACE}/jdk8u-${REAL_VARIANT}-${BUILD_TYPE} PERSIST=$HOME/srv/openjdk8u # Only set =1 for debugging. use_subcategories=0 if [ ${use_subcategories} -eq 1 ]; then case ${JTREG_CATEGORY} in langtools) JTREG_SUBCATEGORIES=tools/javap/typeAnnotations ;; jdk) JTREG_SUBCATEGORIES=jdk/net/Sockets ;; hotspot) JTREG_SUBCATEGORIES=runtime/CommandLine ;; esac fi : ${JTREG_SUBCATEGORIES:=.} tar xf incoming/jdk8u.tar.gz tar xf ~/workspace/jdk8-build-image/BUILD_TYPE/${BUILD_TYPE}/JVM_VARIANT/${REAL_VARIANT}/label/${NODE_NAME}/out/jdk8u-${REAL_VARIANT}-${BUILD_TYPE}.tar.gz tar xf incoming/jtreg-build-4.2.0-SNAPSHOT.tar.xz # 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/${JVM_VARIANT}-${BUILD_TYPE}/${YEAR}/${DAY_OF_YEAR}/JTwork-${JTREG_CATEGORY} report_dir=${basedir}/reports/${JVM_VARIANT}-${BUILD_TYPE}/${JTREG_CATEGORY}/$(uname -m)/${YEAR}/${DAY_OF_YEAR}/JTreport mkdir -p out ${src_dir} ${work_dir} ${report_dir} mv jdk8u/* ${src_dir} blacklist=${WORKSPACE}/excludes.txt jdk_problem_list=${src_dir}/${JTREG_CATEGORY}/test/ProblemList.txt 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}/jdk8u-${REAL_VARIANT}-${BUILD_TYPE} export PATH=$JAVA_HOME/bin:${PATH} PATH=${WORKSPACE}/jtreg/bin:${PATH} which java java -version # Ignore error in jtreg final result. set +e if [ $JVM_VARIANT = "server" ]; then java -jar jtreg/lib/jtreg.jar \ -dir:${src_dir}/${JTREG_CATEGORY}/test \ -testjdk:${IMAGE_DIR} \ -exclude:${blacklist} \ -conc:auto \ -r:${report_dir} \ -w:${work_dir} \ -timeout:2 \ -a -othervm -ignore:quiet -v1 ${JTREG_SUBCATEGORIES} | cat -n else java -jar jtreg/lib/jtreg.jar \ -dir:${src_dir}/${JTREG_CATEGORY}/test \ -vmoption:-XX:+TieredCompilation \ -vmoption:-XX:TieredStopAtLevel=1 \ -testjdk:${IMAGE_DIR} \ -exclude:${blacklist} \ -conc:auto \ -r:${report_dir} \ -w:${work_dir} \ -timeout:2 \ -a -othervm -ignore:quiet -v1 ${JTREG_SUBCATEGORIES} | cat -n fi 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}-${JVM_VARIANT}-${BUILD_TYPE}.tar.gz builds reports publishers: - archive: artifacts: 'out/jtreg-results-${JTREG_CATEGORY}-${JVM_VARIANT}-${BUILD_TYPE}.tar.gz'