diff options
23 files changed, 2113 insertions, 1 deletions
diff --git a/jdk10-update-src-tree.yaml b/jdk10-update-src-tree.yaml index fbf9dc3e7e..2a55f1fc0e 100644 --- a/jdk10-update-src-tree.yaml +++ b/jdk10-update-src-tree.yaml @@ -33,7 +33,8 @@ scm: - jdk10 triggers: - - pollscm: 'H 2 */2 * *' +# Disabled. Repo is not going to change. +# - pollscm: 'H 2 */2 * *' wrappers: - timestamps builders: diff --git a/jdkX-build-and-test.yaml b/jdkX-build-and-test.yaml new file mode 100644 index 0000000000..5c8fae0d63 --- /dev/null +++ b/jdkX-build-and-test.yaml @@ -0,0 +1,120 @@ +- job: + name: jdkX-build-and-test + project-type: multijob + defaults: global + description: | + * This jobs builds the jdk images and runs tests and benchmarks against the built images.<br> + * <b>Note:</b> this job is usually triggered by a source change (ie. the "jdkX-update-src-tree" job).<br> + If it is run manually it will use the source tarball from the last successful build of that job.<br> + * If this jobs runs to completion the results are published to http://openjdk.linaro.org/. + properties: + - authorization: + anonymous: + - job-read + - job-extended-read + openjdk-members: + - 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: master + display-name: 'OpenJDK JDK - Build jdk images and run tests/benchmarks' + wrappers: + - workspace-cleanup: + dirmatch: false + - timestamps + builders: + - multijob: + name: 'Build jdk images' + condition: SUCCESSFUL + projects: + - name: jdkX-build-image + current-parameters: true + kill-phase-on: FAILURE +# FIXME - set SPECjbb2015 benchmark continuation condition from SUCCESSFUL to ALWAYS +# Exception in thread "main" java.util.ServiceConfigurationError: +# org.spec.jbb.core.comm.connectivity.ConnectivityProvider: +# Provider org.spec.jbb.core.comm.connectivity.GrizzlyNioProvider could not be instantiated +# Caused by: java.lang.IllegalStateException: java.lang.RuntimeException: java.lang.NullPointerException + - multijob: + name: 'SPECjbb2015 benchmark' + condition: ALWAYS + projects: + - name: jdkX-specjbb2015-benchmark + current-parameters: true + restrict-matrix-project: 'JVM_VARIANT == "server"' + kill-phase-on: FAILURE + - multijob: + name: '1GB Terasort benchmark' + condition: SUCCESSFUL + projects: + - name: jdkX-terasort-benchmark + current-parameters: true + kill-phase-on: NEVER + - multijob: + name: 'JTREG tests' + condition: SUCCESSFUL + projects: + - name: jdkX-jtreg-test + current-parameters: true + predefined-parameters: 'XJTREG_SUBCATEGORIES=tools/javap/typeAnnotations' + kill-phase-on: NEVER + - multijob: + name: 'jcstress' + condition: COMPLETED + projects: + - name: jdkX-jcstress-test + current-parameters: true + restrict-matrix-project: 'JVM_VARIANT == "server"' + kill-phase-on: FAILURE + - multijob: + name: 'Publish results to openjdk.linaro.org' + condition: SUCCESSFUL + projects: + - name: jdkX-publish-and-report + current-parameters: true + kill-phase-on: FAILURE + - copyartifact: + project: jdkX-update-src-tree + filter: 'out/*' + target: out + flatten: true + - copyartifact: + project: jdkX-build-image + filter: 'out/**/*' + target: out + flatten: true + - copyartifact: + project: jdkX-specjbb2015-benchmark + filter: 'out/**/*' + target: out + flatten: true + - copyartifact: + project: jdkX-terasort-benchmark + filter: 'out/**/*' + target: out + flatten: true + - copyartifact: + project: jdkX-jtreg-test + filter: 'out/**/*' + target: out + flatten: true + stable: true + - copyartifact: + project: jdkX-jcstress-test + filter: 'out/**/*' + target: out + flatten: true + publishers: + - archive: + artifacts: 'out/**/*' diff --git a/jdkX-build-image.yaml b/jdkX-build-image.yaml new file mode 100644 index 0000000000..12530643be --- /dev/null +++ b/jdkX-build-image.yaml @@ -0,0 +1,136 @@ +- job: + name: jdkX-build-image + project-type: matrix + defaults: global + description: | + * Configures and builds jdkX (ie, bin/java, bin/javac, et al) for various configurations.<br> + * The source tarball is copied from the jdkX-update-src-tree job.<br> + * <b>Note:</b> we are no longer building -fastdebug variants as there is not enough time to test the images. + properties: + - authorization: + anonymous: + - job-read + - job-extended-read + openjdk-members: + - job-build + - job-cancel + - build-discarder: + days-to-keep: 30 + num-to-keep: 10 + artifact-num-to-keep: 5 + parameters: + - string: + name: JDK_URL + default: 'http://openjdk.linaro.org/releases/jdk9-server-release-1708.tar.xz' + disabled: false + node: aarch64-06 + display-name: 'OpenJDK JDK - Configure and build OpenJDK JDK' + axes: + - axis: + type: user-defined + name: JVM_VARIANT + values: + - server +# - zero + - axis: + type: user-defined + name: BUILD_TYPE + values: + - release + - axis: + type: slave + name: label + values: + - aarch64-06 + execution-strategy: + sequential: true + wrappers: + - workspace-cleanup: + dirmatch: false + - timestamps + - matrix-tie-parent: + node: aarch64-06 + builders: + - copyartifact: + project: jdkX-update-src-tree + filter: 'out/jdkX.tar.gz' + target: incoming + flatten: true +# - copyartifact: +# project: archive-primordial-jdkX +# filter: 'out/primordial-jdkX.tar.gz' +# target: incoming +# flatten: true + - shell: | + #!/bin/bash + + set -exu + + #export CCACHE_DIR=~/.ccache-${JVM_VARIANT}-${BUILD_TYPE} + #ccache -M 1G + #ccache -s + + ccache_build_opts=--disable-ccache + + rm -rf jdk* primordial-jdk* build* + + wget --progress=dot -e dotbytes=2M ${JDK_URL} + tar -Jxf jdk*.tar.xz + + cd jdk*/lib/security/ + rm -f cacerts + ln -s /etc/ssl/certs/java/cacerts + + cd ${WORKSPACE}/jdk* + export JAVA_HOME=${PWD} + + export PATH=${JAVA_HOME}/bin:${PATH} + + cd ${WORKSPACE} + + # Extract sources from upstream job + tar xf incoming/jdkX.tar.gz + + shopt -s nullglob + + # Extract boot jdk + # Not used. tar xf incoming/primordial-jdkX.tar.gz + + # Configure and build + mkdir -p build-stage1 build-stage2 + + two_stage_build=0 + + which java + java -version + + if [ $two_stage_build = 1 ]; then + pushd build-stage1 + sh ../jdkX/configure --with-jvm-variants=${JVM_VARIANT} --with-debug-level=${BUILD_TYPE} --with-boot-jdk=${WORKSPACE}/primordial-jdkX ${ccache_build_opts} + make images build-test-hotspot-jtreg-native build-test-jdk-jtreg-native + popd + + pushd build-stage2 + sh ../jdkX/configure --with-jvm-variants=${JVM_VARIANT} --with-debug-level=${BUILD_TYPE} --with-boot-jdk=${WORKSPACE}/build-stage1/images/jdk ${ccache_build_opts} + make images build-test-hotspot-jtreg-native build-test-jdk-jtreg-native + popd + else + pushd build-stage2 + sh ../jdkX/configure --with-jvm-variants=${JVM_VARIANT} --with-debug-level=${BUILD_TYPE} ${ccache_build_opts} + make images build-test-hotspot-jtreg-native build-test-jdk-jtreg-native + popd + fi + + # Archive the result + rm -rf out + mkdir out + artifact_name=jdkX-${JVM_VARIANT}-${BUILD_TYPE} + tar -C build-stage2/images/jdk --exclude=\*.diz --transform="s!^./!$artifact_name/!" -acf out/${artifact_name}.tar.gz . + + # Archive test support files. + tar -C build-stage2/ --exclude=hotspot/jtreg/native/support/\* --transform="s!^support/!${artifact_name}-support/support/!" -acf out/${artifact_name}-support.tar.gz support/test + publishers: + - archive: + artifacts: 'out/*.tar.gz' + - email: + recipients: 'stuart.monteith@linaro.org fathi.boudra@linaro.org' diff --git a/jdkX-build-release.yaml b/jdkX-build-release.yaml new file mode 100644 index 0000000000..383e997efc --- /dev/null +++ b/jdkX-build-release.yaml @@ -0,0 +1,153 @@ +- job: + name: jdkX-build-release + project-type: matrix + defaults: global + description: | + * Configures and builds jdkX for release. Run after the source has passed tests. + * Tags build with Linaro-YYMM as per normal release procedure. + * The source tarball is copied from the jdkX-update-src-tree job.<br> + properties: + - authorization: + anonymous: + - job-read + - job-extended-read + openjdk-members: + - job-build + - job-cancel + - build-discarder: + days-to-keep: 30 + num-to-keep: 10 + artifact-num-to-keep: 5 + parameters: + - string: + name: JDK_URL + default: 'http://openjdk.linaro.org/releases/jdk9-server-release-1708.tar.xz' + disabled: false + node: aarch64-06 + display-name: 'OpenJDK JDK - Configure and build OpenJDK JDK Release' + axes: + - axis: + type: user-defined + name: JVM_VARIANT + values: + - server + - axis: + type: user-defined + name: BUILD_TYPE + values: + - release + - axis: + type: slave + name: label + values: + - aarch64-06 + execution-strategy: + sequential: true + wrappers: + - workspace-cleanup: + dirmatch: false + - timestamps + - matrix-tie-parent: + node: aarch64-06 + builders: + - copyartifact: + project: jdkX-update-src-tree + filter: 'out/jdkX.tar.gz' + target: incoming + flatten: true +# - copyartifact: +# project: archive-primordial-jdkX +# filter: 'out/primordial-jdkX.tar.gz' +# target: incoming +# flatten: true + - shell: | + #!/bin/bash + + set -exu + + #export CCACHE_DIR=~/.ccache-${JVM_VARIANT}-${BUILD_TYPE} + #ccache -M 1G + #ccache -s + export JVM_VARIANT=server + + # Generate files names dependent on year/month. + RELEASE=$(date +%y%m) + JDKDIR=jdkX-${JVM_VARIANT}-${BUILD_TYPE}-${RELEASE} + JDK_SRCDIR=jdkX-src-${RELEASE} + + ccache_build_opts=--disable-ccache + + rm -rf jdk* primordial-jdk* build* + + # Download, setup JDK9 for building. + wget --progress=dot -e dotbytes=2M ${JDK_URL} + tar -Jxf jdk*.tar.xz + + cd jdk*/lib/security/ + rm -f cacerts + ln -s /etc/ssl/certs/java/cacerts + + cd ${WORKSPACE}/jdk* + export JAVA_HOME=${PWD} + + export PATH=${JAVA_HOME}/bin:${PATH} + + cd ${WORKSPACE} + + # Setup archive directory + mkdir out + + # Extract sources from upstream job + tar xaf incoming/jdkX.tar.gz + + mv jdkX $JDK_SRCDIR + # Tar up the source before sullying it with a build. + tar --exclude=.hg\* -acf out/jdkX-src-${RELEASE}.tar.xz $JDK_SRCDIR + + mv $JDK_SRCDIR $JDKDIR + shopt -s nullglob + + # Configure and build + mkdir -p build-stage1 build-stage2 + + two_stage_build=0 + + which java + java -version + + if [ $two_stage_build = 1 ]; then + pushd build-stage1 + sh ../$JDKDIR/configure --with-jvm-variants=${JVM_VARIANT} --with-debug-level=${BUILD_TYPE} --with-boot-jdk=${WORKSPACE}/primordial-jdkX ${ccache_build_opts} + make images + popd + + pushd build-stage2 + sh ../$JDKDIR/configure --with-jvm-variants=${JVM_VARIANT} \ + --with-debug-level=${BUILD_TYPE} \ + --with-boot-jdk=${WORKSPACE}/build-stage1/images/jdk \ + ${ccache_build_opts} \ + --with-version-opt="Linaro-$RELEASE" \ + --with-version-pre="release" + make images + popd + else + pushd build-stage2 + sh ../$JDKDIR/configure --with-jvm-variants=${JVM_VARIANT} \ + --with-debug-level=${BUILD_TYPE} \ + ${ccache_build_opts} \ + --with-version-opt="Linaro-$RELEASE" \ + --with-version-pre="release" + make images + popd + fi + + # Archive the result + artifact_name=jdkX-${JVM_VARIANT}-${BUILD_TYPE}-${RELEASE} + + # This is different from ordinary builds. + tar -C build-stage2/images --exclude=\*.diz --transform="s!^jdk!$artifact_name!" -acf out/${artifact_name}.tar.xz jdk + publishers: + - archive: + artifacts: 'out/*.tar.xz' + - email: + recipients: 'stuart.monteith@linaro.org fathi.boudra@linaro.org' diff --git a/jdkX-email-results.yaml b/jdkX-email-results.yaml new file mode 100644 index 0000000000..6a75b047a7 --- /dev/null +++ b/jdkX-email-results.yaml @@ -0,0 +1,37 @@ +- job: + name: jdkX-email-results + project-type: freestyle + defaults: global + description: | + * Sends the report.txt file to the aarch64-port-dev mailing list.<br> + * The text report is copied from the jdkX-generate-text-report job. + properties: + - authorization: + anonymous: + - job-read + - job-extended-read + openjdk-members: + - job-build + - job-cancel + - build-discarder: + days-to-keep: 30 + num-to-keep: 10 + artifact-num-to-keep: 5 + disabled: false + node: master + display-name: 'OpenJDK JDK - Send e-mail report' + + wrappers: + - timestamps + builders: + - copyartifact: + project: jdkX-generate-email-report + filter: 'report.txt' + publishers: + - email-ext: + recipients: 'stuart.monteith@linaro.org, fathi.boudra@linaro.org, aarch64-port-dev@openjdk.java.net' + subject: 'JTREG, JCStress, SPECjbb2015 and Hadoop/Terasort results for OpenJDK X on AArch64' + content-type: text + body: | + ${FILE,path="report.txt"} + success: true diff --git a/jdkX-generate-email-report.yaml b/jdkX-generate-email-report.yaml new file mode 100644 index 0000000000..c76e10b366 --- /dev/null +++ b/jdkX-generate-email-report.yaml @@ -0,0 +1,74 @@ +- job: + name: jdkX-generate-email-report + project-type: freestyle + defaults: global + description: | + This job aggregates the results from various jobs:<br> + <br> + * jcstress<br> + * jtreg<br> + * terasort<br> + * specjbb<br> + <br> + in text form suitable for the aarch64-port-dev mailing list. + properties: + - authorization: + anonymous: + - job-read + - job-extended-read + openjdk-members: + - job-build + - job-cancel + - build-discarder: + days-to-keep: 30 + num-to-keep: 10 + artifact-num-to-keep: 5 + parameters: + - string: + name: ZERO_BASELINE + default: '14115' + - string: + name: SERVER_MAX_JOPS_BASELINE + default: '4090' + - string: + name: SERVER_CRITICAL_JOPS_BASELINE + default: '1015' + disabled: false + node: aarch64-06 + display-name: 'OpenJDK JDK - Generate e-mail report' + wrappers: + - timestamps +# Replaced by parameters +# - inject: +# properties-file: '${HOME}/performance-baseline.properties' + builders: + - copyartifact: + project: jtreg-build + filter: 'jtreg-build-4.2.0-SNAPSHOT.tar.xz' + target: incoming + flatten: true + - shell: | + #!/bin/bash + + tar xf incoming/jtreg-build-4.2.0-SNAPSHOT.tar.xz + PATH=${WORKSPACE}/jtreg/bin:${PATH} + PERSIST=$HOME/srv/openjdkX + export SPECJBB_PRODUCT_HOME=$PERSIST/SPECjbb2015 + export JDK_VERSION=X + which jtdiff + + TOP_DIR=${PERSIST}/openjdk-jtreg-nightly-tests ${PERSIST}/openjdk-test-scripts/openjdk-test-summary release > ${WORKSPACE}/report.txt + echo "" >> ${WORKSPACE}/report.txt + + TOP_DIR=${PERSIST} ${PERSIST}/specjbb-test-scripts/specjbb-report >> ${WORKSPACE}/report.txt + echo "" >> ${WORKSPACE}/report.txt + + BENCHMARK_RESULTS_DIR=$PERSIST/hadoop-terasort-benchmark-results ${PERSIST}/hadoop-test-scripts/benchmark-terasort-report >> ${WORKSPACE}/report.txt + echo "" >> ${WORKSPACE}/report.txt + + TOP_DIR=${PERSIST} ${PERSIST}/jcstress-test-scripts/jcstress-report --url http://openjdk.linaro.org/jdk${JDK_VERSION}/ >> ${WORKSPACE}/report.txt + publishers: + - archive: + artifacts: 'report.txt' + - email: + recipients: 'fathi.boudra@linaro.org' diff --git a/jdkX-jcstress-test-persist-results.yaml b/jdkX-jcstress-test-persist-results.yaml new file mode 100644 index 0000000000..27260f0b20 --- /dev/null +++ b/jdkX-jcstress-test-persist-results.yaml @@ -0,0 +1,97 @@ +- job: + name: jdkX-jcstress-test-persist-results + project-type: matrix + defaults: global + description: | + * Writes results to:<br> + * /work/openjdk-testing/jcstress-nightly-runs<br> + * /work/openjdk-testing/jcstress-results + properties: + - authorization: + linaro: + - job-read + openjdk-members: + - 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 JDK - Write jcstress tests results' + axes: + - axis: + type: user-defined + name: JVM_VARIANT + values: + - server +# - client + - axis: + type: user-defined + name: BUILD_TYPE + values: + - release + - axis: + type: slave + name: label + values: + - aarch64-06 + execution-strategy: +# combination-filter: | +# JVM_VARIANT=="server" + sequential: true + wrappers: + - workspace-cleanup: + dirmatch: false + - timestamps + - matrix-tie-parent: + node: aarch64-06 + builders: + - copyartifact: + project: jdkX-update-src-tree + filter: 'out/build-date.sh' + target: incoming + flatten: true + - copyartifact: + project: jdkX-jcstress-test + filter: 'out/jcstress-results-${JVM_VARIANT}-${BUILD_TYPE}.tar.gz' + target: incoming + flatten: true + - shell: | + #!/bin/bash + + set -exu + + PERSIST=$HOME/srv/openjdkX + + : ${YEAR:=$(date +%Y)} + : ${DAY_OF_YEAR:=$(date +%j)} + + JCSTRESS_RUN_DIR=$PERSIST/jcstress-nightly-runs + JCSTRESS_RESULTS_DIR=$PERSIST/jcstress-results + RESULTS_CSV=${JCSTRESS_RESULTS_DIR}/results.csv + + mkdir -p $JCSTRESS_RESULTS_DIR + + # Tolerate missing results.csv file. + if [ ! -f $RESULTS_CSV ]; then + touch $RESULTS_CSV + fi + + mkdir -p ${JCSTRESS_RESULTS_DIR} ${JCSTRESS_RUN_DIR}/${YEAR}/${DAY_OF_YEAR} + tar -C ${JCSTRESS_RUN_DIR}/${YEAR}/${DAY_OF_YEAR} --strip-components=1 -xzf incoming/BUILD_TYPE=${BUILD_TYPE},JVM_VARIANT=${JVM_VARIANT},label=${label}/jcstress-results-${JVM_VARIANT}-${BUILD_TYPE}.tar.gz + numeric_date=$(date +'%s' --date=$(date +'%Y-%m-%d')) + echo "Previous Results" + cat ${RESULTS_CSV} + echo "${numeric_date},${JCSTRESS_RUN_DIR}/${YEAR}/${DAY_OF_YEAR},success" >> ${RESULTS_CSV} + sort --unique --field-separator=',' --numeric-sort -o ${RESULTS_CSV} ${RESULTS_CSV} + diff --git a/jdkX-jcstress-test-publish-results.yaml b/jdkX-jcstress-test-publish-results.yaml new file mode 100644 index 0000000000..21cb3c010e --- /dev/null +++ b/jdkX-jcstress-test-publish-results.yaml @@ -0,0 +1,54 @@ +- job: + name: jdkX-jcstress-test-publish-results + project-type: freestyle + defaults: global + description: | + * Reports are published to http://openjdk.linaro.org/jcstress-nightly-runs/ + properties: + - authorization: + anonymous: + - job-read + - job-extended-read + openjdk-members: + - job-build + - job-cancel + - build-discarder: + days-to-keep: 30 + num-to-keep: 10 + artifact-num-to-keep: 5 + parameters: + - string: + name: PUBLISH_DEST + default: '' + - string: + name: PUBLISH_HOST + default: '' + disabled: false + node: aarch64-06 + display-name: 'OpenJDK X - Publish jcstress report' + wrappers: + - timestamps + - ssh-agent-credentials: + # openjdk-testing user id + users: + - '744cffb4-9ce1-4856-b103-9fdda06dad36' + builders: + - shell: | + #!/bin/bash + + + PERSIST=$HOME/srv/openjdkX + SCRIPT_DIR=$PERSIST/jcstress-test-scripts + export JDK_VERSION=X + + if [ -d $SCRIPT_DIR ]; then + (cd $SCRIPT_DIR; git pull) + else + git clone https://git.linaro.org/leg/openjdk/jcstress-test-scripts.git $SCRIPT_DIR + fi + export TOP_DIR=$PERSIST + + $SCRIPT_DIR/jcstress-publish $PUBLISH_DEST + publishers: + - email: + recipients: 'fathi.boudra@linaro.org' diff --git a/jdkX-jcstress-test.yaml b/jdkX-jcstress-test.yaml new file mode 100644 index 0000000000..1035e87394 --- /dev/null +++ b/jdkX-jcstress-test.yaml @@ -0,0 +1,112 @@ +- job: + name: jdkX-jcstress-test + project-type: matrix + defaults: global + description: | + This job runs the http://openjdk.java.net/projects/code-tools/jcstress/ tests.<br> + <b>Note:</b> this test currently takes around <b>10 hours</b> to complete<br> + This project currently runs the "server" variant only due to the amount of time both tests would take to complete. + properties: + - authorization: + linaro: + - job-read + openjdk-members: + - job-extended-read + - job-build + - job-cancel + - build-discarder: + days-to-keep: 30 + num-to-keep: 10 + artifact-num-to-keep: 5 + disabled: false + node: aarch64-06 + display-name: 'OpenJDK X - Run jcstress tests' + parameters: + - string: + name: JCSTRESS_MODE + default: 'quick' + axes: + - axis: + type: user-defined + name: JVM_VARIANT + values: + - server + - client + - axis: + type: user-defined + name: BUILD_TYPE + values: + - release + - axis: + type: slave + name: label + values: + - aarch64-06 + execution-strategy: + sequential: true + wrappers: + - workspace-cleanup: + dirmatch: false + - timestamps + - matrix-tie-parent: + node: aarch64-06 + - timeout: + timeout: 900 + builders: + - copyartifact: + project: jcstress-build + filter: 'tests-custom/target/jcstress.jar, tests-all/target/jcstress.jar' + target: incoming + flatten: false +# copyartifact is slow and the file is local +# copy instead of going back and forth between master <-> slave +# - copyartifact: +# project: jdkX-build-image +# filter: 'out/jdkX-${JVM_VARIANT}-${BUILD_TYPE}.tar.gz' +# target: incoming +# flatten: true + - shell: | + #!/bin/bash + + set -eu + + TEST_TYPE=all + + # client variant uses server with -XX:TieredStopAtLevel=1 + # zero is a third possible value. + REAL_VARIANT=${JVM_VARIANT/client/server} + + JCSTRESS_JAR=${WORKSPACE}/incoming/tests-${TEST_TYPE}/target/jcstress.jar + rm -rf jdkX* + tar xf ~/workspace/jdkX-build-image/BUILD_TYPE/${BUILD_TYPE}/JVM_VARIANT/${REAL_VARIANT}/label/${NODE_NAME}/out/jdkX-${REAL_VARIANT}-${BUILD_TYPE}.tar.gz + export JAVA_HOME=${WORKSPACE}/jdkX-${REAL_VARIANT}-${BUILD_TYPE} + export PATH=${JAVA_HOME}/bin:${PATH} + which java + java -version + + # XXX Don't fail the job if jcstress itself fails. + set +e + java -jar ${JCSTRESS_JAR} -m ${JCSTRESS_MODE} + + test_result=$? + set -e + + rm -rf out + mkdir out + + out_dirname=jcstress-results-${JVM_VARIANT}-${BUILD_TYPE} + + rm -rf ${out_dirname} + mkdir -p ${out_dirname} + cp jcstress-results*.bin.gz ${out_dirname} + cp -a results ${out_dirname} + + tar czvf out/${out_dirname}.tar.gz ${out_dirname} + publishers: + - archive: + artifacts: 'out/jcstress-results-*.tar.gz' + - html-publisher: + name: 'HTML Report' + dir: 'results' + files: 'index.html' + keep-all: true diff --git a/jdkX-jtreg-test-persist-results.yaml b/jdkX-jtreg-test-persist-results.yaml new file mode 100644 index 0000000000..90e3819a4e --- /dev/null +++ b/jdkX-jtreg-test-persist-results.yaml @@ -0,0 +1,120 @@ +- job: + name: jdkX-jtreg-test-persist-results + project-type: matrix + defaults: global + description: | + * Writes the results to $HOME/srv/openjdkX/openjdk-jtreg-nightly-tests. + properties: + - authorization: + linaro: + - job-read + openjdk-members: + - 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: false + node: aarch64-06 + display-name: 'OpenJDK X - Write jtreg tests results' + 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: + - jdk + - hotspot + - langtools + - axis: + type: slave + name: label + values: + - aarch64-06 + execution-strategy: + sequential: true + wrappers: + - workspace-cleanup: + dirmatch: false + - timestamps + - matrix-tie-parent: + node: aarch64-06 + builders: + - copyartifact: + project: jdkX-jtreg-test + filter: 'out/jtreg-results-${JTREG_CATEGORY}-${JVM_VARIANT}-${BUILD_TYPE}.tar.gz' + target: incoming + flatten: true + - copyartifact: + project: jdkX-build-image + filter: 'out/jdkX-server-${BUILD_TYPE}.tar.gz' + target: incoming + flatten: true + - shell: | + #!/bin/bash + + set -exu + + tree -f . + + PERSIST=$HOME/srv/openjdkX + export JDK_VERSION=X + + result_tarball=${WORKSPACE}/incoming/BUILD_TYPE=${BUILD_TYPE},JTREG_CATEGORY=${JTREG_CATEGORY},JVM_VARIANT=${JVM_VARIANT},label=${label}/jtreg-results-${JTREG_CATEGORY}-${JVM_VARIANT}-${BUILD_TYPE}.tar.gz + + image_tarball=${WORKSPACE}/incoming/BUILD_TYPE=${BUILD_TYPE},JVM_VARIANT=server,label=${label}/jdkX-server-${BUILD_TYPE}.tar.gz + + : ${YEAR:=$(date +%Y)} + : ${DAY_OF_YEAR:=$(date +%j)} + + basedir=$PERSIST/openjdk-jtreg-nightly-tests + 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 + image_dir=${basedir}/builds/${JVM_VARIANT}-${BUILD_TYPE},label=${label}/${YEAR}/${DAY_OF_YEAR}/images/jdk + + rm -rf ${image_dir} + mkdir -p ${image_dir} + + tar -C ${basedir} \ + --transform="s/YYY__DAY_OF_YEAR__YYY/$DAY_OF_YEAR/;s/XXX__YEAR__XXX/$YEAR/" \ + --show-transformed-names \ + --overwrite \ + -xvf ${result_tarball} + + tar -C ${image_dir} \ + --strip-components=1 \ + --show-transformed-names \ + --overwrite \ + -xvf ${image_tarball} + + # Change location. + # Match the exact output of the cron-based scripts. + sed_expr1=$(echo s!XXX__YEAR__XXX!$YEAR!g) + sed_expr2=$(echo s!YYY__DAY_OF_YEAR__YYY!$DAY_OF_YEAR!g) + + find ${work_dir} -type f -exec perl -p -i -e "$sed_expr1" {} \; + find ${work_dir} -type f -exec perl -p -i -e "$sed_expr2" {} \; + + find ${report_dir} -type f -exec perl -p -i -e "$sed_expr1" {} \; + find ${report_dir} -type f -exec perl -p -i -e "$sed_expr2" {} \; diff --git a/jdkX-jtreg-test-publish-results.yaml b/jdkX-jtreg-test-publish-results.yaml new file mode 100644 index 0000000000..204d5c9283 --- /dev/null +++ b/jdkX-jtreg-test-publish-results.yaml @@ -0,0 +1,71 @@ +- job: + name: jdkX-jtreg-test-publish-results + project-type: freestyle + defaults: global + description: | + * Results are published to http://openjdk.linaro.org/jdkX/openjdk-jtreg-nightly-tests/ + properties: + - authorization: + anonymous: + - job-read + - job-extended-read + openjdk-members: + - job-build + - job-cancel + - build-discarder: + days-to-keep: 30 + num-to-keep: 10 + artifact-num-to-keep: 5 + parameters: + - string: + name: PUBLISH_DEST + default: '' + - string: + name: PUBLISH_HOST + default: '' + - string: + name: YEAR + default: 'default' + - string: + name: DAY_OF_YEAR + default: 'default' + disabled: false + node: aarch64-06 + display-name: 'OpenJDK X - Publish jtreg results' + wrappers: + - timestamps + - ssh-agent-credentials: + users: + - '744cffb4-9ce1-4856-b103-9fdda06dad36' + builders: + - copyartifact: + project: jtreg-build + filter: 'jtreg-build-4.2.0-SNAPSHOT.tar.xz' + flatten: true + - shell: | + #!/bin/bash + + set -ex + + PERSIST=$HOME/srv/openjdkX + SCRIPT_DIR=$PERSIST/openjdk-test-scripts + export JDK_VERSION=X + + (unset PRIVATE_KEY; env | sort >$WORKSPACE/env.out) + tree -fd -L 5 $PERSIST | xz >$WORKSPACE/tree.out.xz + + if [ -d $SCRIPT_DIR ]; then + (cd $SCRIPT_DIR; git pull) + else + git clone https://git.linaro.org/leg/openjdk/openjdk-test-scripts.git $SCRIPT_DIR + fi + + tar xf jtreg-build-4.2.0-SNAPSHOT.tar.xz + export PATH=${WORKSPACE}/jtreg/bin:$PATH + which jtdiff + TOP_DIR=$PERSIST/openjdk-jtreg-nightly-tests bash -x $SCRIPT_DIR/publish $PUBLISH_DEST $NODE_NAME + publishers: + - archive: + artifacts: 'tree.out.xz, env.out' + - email: + recipients: 'fathi.boudra@linaro.org stuart.monteith@linaro.org' diff --git a/jdkX-jtreg-test.yaml b/jdkX-jtreg-test.yaml new file mode 100644 index 0000000000..7bc8eead68 --- /dev/null +++ b/jdkX-jtreg-test.yaml @@ -0,0 +1,254 @@ +- 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 + - 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 X - 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: jdkX-build-image +# filter: 'out/jdkX-${JVM_VARIANT}-${BUILD_TYPE}.tar.gz' +# target: incoming +# flatten: true + - copyartifact: + project: jdkX-update-src-tree + filter: 'out/jdkX.tar.gz, out/build-date.sh' + target: incoming + flatten: true + - copyartifact: + project: jcstress-build + filter: 'tests-all/target/jcstress.jar' + target: incoming + flatten: true + - shell: | + #!/bin/bash + + echo "DISPLAY=${DISPLAY}" + + set -exu + + source incoming/build-date.sh + + export JDK_VERSION=X + # client variant uses server with -XX:TieredStopAtLevel=1 + # zero is a third possible value. + REAL_VARIANT=${JVM_VARIANT/client/server} + IMAGE_DIR=${WORKSPACE}/jdkX-${REAL_VARIANT}-${BUILD_TYPE} + PERSIST=$HOME/srv/openjdkX + + JCSTRESS=$PWD/incoming/jcstress.jar + + # 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/jdkX.tar.gz + tar xf ~/workspace/jdkX-build-image/BUILD_TYPE/${BUILD_TYPE}/JVM_VARIANT/${REAL_VARIANT}/label/${NODE_NAME}/out/jdkX-${REAL_VARIANT}-${BUILD_TYPE}.tar.gz + tar xf incoming/jtreg-build-4.2.0-SNAPSHOT.tar.xz + tar xf ~/workspace/jdkX-build-image/BUILD_TYPE/${BUILD_TYPE}/JVM_VARIANT/${REAL_VARIANT}/label/${NODE_NAME}/out/jdkX-${REAL_VARIANT}-${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/${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 jdkX/* ${src_dir} + + # Move the applications tests to exclude them from execution. + # JCStress adds days to the execution time. + mv ${src_dir}/test/hotspot/jtreg/applications ${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}/jdkX-${REAL_VARIANT}-${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-${REAL_VARIANT}-${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=${JTREG_CATEGORY}/jtreg + else + TEST_SUBDIR=${JTREG_CATEGORY} + fi + + if [ $JVM_VARIANT = "server" ]; then + java -jar jtreg/lib/jtreg.jar \ + -dir:${src_dir}/test/${TEST_SUBDIR} \ + -vmoption:-Djdk.test.lib.artifacts.jcstress-tests-all=$JCSTRESS \ + -vmoption:-XX:-TieredCompilation \ + -testjdk:${IMAGE_DIR} \ + -exclude:${blacklist} \ + -conc:auto \ + -r:${report_dir} \ + -w:${work_dir} \ + $NATIVE_OPT \ + -timeout:8 \ + -a -agentvm -ignore:quiet -v1 ${JTREG_SUBCATEGORIES} | cat -n + else + java -jar jtreg/lib/jtreg.jar \ + -dir:${src_dir}/test/${TEST_SUBDIR} \ + -vmoption:-Djdk.test.lib.artifacts.jcstress-tests-all=$JCSTRESS \ + -vmoption:-XX:+TieredCompilation \ + -vmoption:-XX:TieredStopAtLevel=1 \ + -testjdk:${IMAGE_DIR} \ + -exclude:${blacklist} \ + -conc:auto \ + -r:${report_dir} \ + -w:${work_dir} \ + $NATIVE_OPT \ + -timeout:8 \ + -a -agentvm -ignore:quiet -v1 ${JTREG_SUBCATEGORIES} | cat -n + fi + + # Move the applications tests back, for neatness. + mv ${src_dir}/applications ${src_dir}/test/hotspot/jtreg + + # 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}-${JVM_VARIANT}-${BUILD_TYPE}.tar.gz builds reports + publishers: + - archive: + artifacts: 'out/jtreg-results-${JTREG_CATEGORY}-${JVM_VARIANT}-${BUILD_TYPE}.tar.gz' diff --git a/jdkX-persist-all-results.yaml b/jdkX-persist-all-results.yaml new file mode 100644 index 0000000000..482c0be64c --- /dev/null +++ b/jdkX-persist-all-results.yaml @@ -0,0 +1,51 @@ +- job: + name: jdkX-persist-all-results + project-type: freestyle + defaults: global + description: | + * This job persist all results. + properties: + - authorization: + anonymous: + - job-read + - job-extended-read + openjdk-members: + - 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: master + display-name: 'OpenJDK X - Persist all results' + wrappers: + - timestamps + builders: + - trigger-builds: + - project: jdkX-jtreg-test-persist-results + block: true + current-parameters: true + - trigger-builds: + - project: jdkX-specjbb2015-benchmark-persist-results + block: true + current-parameters: true + - trigger-builds: + - project: jdkX-terasort-benchmark-persist-results + block: true + current-parameters: true + - trigger-builds: + - project: jdkX-jcstress-test-persist-results + block: true + current-parameters: true + - trigger-builds: + - project: jdkX-update-src-tree-persist + block: true + current-parameters: true diff --git a/jdkX-publish-all-results.yaml b/jdkX-publish-all-results.yaml new file mode 100644 index 0000000000..b787dc87ec --- /dev/null +++ b/jdkX-publish-all-results.yaml @@ -0,0 +1,56 @@ +- job: + name: jdkX-publish-all-results + project-type: freestyle + defaults: global + description: | + * Convenience job to invoke all the scripts that sync the results to openjdk.linaro.org. + properties: + - authorization: + anonymous: + - job-read + - job-extended-read + openjdk-members: + - job-build + - job-cancel + - build-discarder: + days-to-keep: 30 + num-to-keep: 10 + artifact-num-to-keep: 5 + disabled: false + node: master + display-name: 'OpenJDK X - Invoke all the scripts to sync results to openjdk.linaro.org' + parameters: + - string: + name: PUBLISH_DEST + default: '/home/openjdk-testing/jdkX' + - string: + name: PUBLISH_HOST + default: 'stuart.monteith@people.linaro.org' + - string: + name: YEAR + default: 'default' + - string: + name: DAY_OF_YEAR + default: 'default' + wrappers: + - timestamps + builders: + - trigger-builds: + - project: jdkX-jtreg-test-publish-results + block: true + current-parameters: true + - trigger-builds: + - project: jdkX-specjbb2015-benchmark-publish-results + block: true + current-parameters: true + - trigger-builds: + - project: jdkX-terasort-benchmark-publish-results + block: true + current-parameters: true + - trigger-builds: + - project: jdkX-jcstress-test-publish-results + block: true + current-parameters: true + publishers: + - email: + recipients: 'fathi.boudra@linaro.org stuart.monteith@linaro.org' diff --git a/jdkX-publish-and-report.yaml b/jdkX-publish-and-report.yaml new file mode 100644 index 0000000000..bb45ead2c2 --- /dev/null +++ b/jdkX-publish-and-report.yaml @@ -0,0 +1,63 @@ +- job: + name: jdkX-publish-and-report + project-type: multijob + defaults: global + description: | + * This job publishes results and send e-mail reports. + logrotate: + numToKeep: 10 + properties: + - authorization: + anonymous: + - job-read + - job-extended-read + openjdk-members: + - job-build + - job-cancel + parameters: + - string: + name: DAYS + default: '15' + - string: + name: YEAR + default: 'default' + - string: + name: DAY_OF_YEAR + default: 'default' + disabled: false + node: master + display-name: 'OpenJDK X - Publish results and send reports' + wrappers: + - timestamps +# Replaced by parameters +# - inject: +# properties-content: 'DAYS=15' + builders: + - multijob: + name: 'Persist results' + condition: SUCCESSFUL + projects: + - name: jdkX-persist-all-results + current-parameters: true + kill-phase-on: FAILURE + - multijob: + name: 'Publish results to openjdk.linaro.org' + condition: SUCCESSFUL + projects: + - name: jdkX-publish-all-results + current-parameters: true + kill-phase-on: FAILURE + - multijob: + name: 'Generate e-mail report' + condition: SUCCESSFUL + projects: + - name: jdkX-generate-email-report + current-parameters: true + kill-phase-on: FAILURE + - multijob: + name: 'E-mail results' + condition: SUCCESSFUL + projects: + - name: jdkX-email-results + current-parameters: true + kill-phase-on: FAILURE diff --git a/jdkX-specjbb2015-benchmark-persist-results.yaml b/jdkX-specjbb2015-benchmark-persist-results.yaml new file mode 100644 index 0000000000..bcff5f07d6 --- /dev/null +++ b/jdkX-specjbb2015-benchmark-persist-results.yaml @@ -0,0 +1,87 @@ +- job: + name: jdkX-specjbb2015-benchmark-persist-results + project-type: matrix + defaults: global + description: | + * Writes the results to $HOME/srv/openjdkX/SPECjbb2015-nightly-runs.<br> + * This job has the client axis <b>disabled</b> until there is enough build/test time available.<br> + * If the client axis is enabled the heap size for the VM will need to be adjusted using -Xmxm + properties: + - authorization: + linaro: + - job-read + openjdk-members: + - job-build + - job-cancel + - build-discarder: + days-to-keep: 30 + num-to-keep: 10 + artifact-num-to-keep: 5 + disabled: false + node: aarch64-06 + display-name: 'OpenJDK X - Write SPECjbb2015 results' + axes: + - axis: + type: user-defined + name: JVM_VARIANT + values: + - server +# - client + - axis: + type: user-defined + name: BUILD_TYPE + values: + - release + - axis: + type: slave + name: label + values: + - aarch64-06 + execution-strategy: +# combination-filter: | +# JVM_VARIANT=="server" + sequential: true + wrappers: + - workspace-cleanup: + dirmatch: false + - timestamps + - matrix-tie-parent: + node: aarch64-06 + builders: + - copyartifact: + project: jdkX-specjbb2015-benchmark + filter: 'out/specjbb*.gz' + target: incoming + flatten: true + - shell: | + #!/bin/bash + + tree -f . + + PERSIST=$HOME/srv/openjdkX + TOP_DIR=$PERSIST + export SPECJBB_PRODUCT_HOME=$PERSIST/SPECjbb2015 + mkdir -p $TOP_DIR + + SCRIPT_DIR=$PERSIST/specjbb-test-scripts + if [ -d $SCRIPT_DIR ]; then + (cd $SCRIPT_DIR; git pull) + else + git clone https://git.linaro.org/leg/openjdk/specjbb-test-scripts.git $SCRIPT_DIR + fi + + source $SCRIPT_DIR/common.sh + + # Ensure nightly results dir exists. + mkdir -p $SPECJBB_EXPANDED_RESULTS_DIR + + echo "Previous Results" + cat ${RESULTS_CSV} + set -eux + result_tarball=${WORKSPACE}/incoming/BUILD_TYPE=${BUILD_TYPE},JVM_VARIANT=${JVM_VARIANT},label=${label}/specjbb-result-${JVM_VARIANT}-${BUILD_TYPE}.tar.gz + [ -e $result_tarball ] || exit 1 + tar -C ${SPECJBB_EXPANDED_RESULTS_DIR} -xf $result_tarball + cp incoming/BUILD_TYPE=${BUILD_TYPE},JVM_VARIANT=${JVM_VARIANT},label=${label}/*.data.gz ${SPECJBB_EXPANDED_RESULTS_DIR} + pushd ${SPECJBB_EXPANDED_RESULTS_DIR} + echo "Updating ${RESULTS_CSV}" + $SCRIPT_DIR/update-results-csv -- --verbose --output=${RESULTS_CSV} diff --git a/jdkX-specjbb2015-benchmark-publish-results.yaml b/jdkX-specjbb2015-benchmark-publish-results.yaml new file mode 100644 index 0000000000..eff31abab5 --- /dev/null +++ b/jdkX-specjbb2015-benchmark-publish-results.yaml @@ -0,0 +1,59 @@ +- job: + name: jdkX-specjbb2015-benchmark-publish-results + project-type: freestyle + defaults: global + description: | + * Reports are published to http://openjdk.linaro.org/jdkX/SPECjbb2015-results/ + properties: + - authorization: + anonymous: + - job-read + - job-extended-read + openjdk-members: + - job-build + - job-cancel + - build-discarder: + days-to-keep: 30 + num-to-keep: 10 + artifact-num-to-keep: 5 + parameters: + - string: + name: ZERO_BASELINE + default: '14115' + - string: + name: SERVER_MAX_JOPS_BASELINE + default: '4090' + - string: + name: SERVER_CRITICAL_JOPS_BASELINE + default: '1015' + - string: + name: PUBLISH_DEST + default: '' + - string: + name: PUBLISH_HOST + default: '' + disabled: false + node: aarch64-06 + display-name: 'OpenJDK X - Publish SPECjbb2015 benchmark results' + wrappers: + - timestamps + - ssh-agent-credentials: + # openjdk-testing user id + users: + - '744cffb4-9ce1-4856-b103-9fdda06dad36' +# Replaced by parameters +# - inject: +# properties-file: '${HOME}/performance-baseline.properties' + builders: + - shell: | + #!/bin/bash + + set -exu + PERSIST=$HOME/srv/openjdkX + export TOP_DIR=$PERSIST + export SPECJBB_PRODUCT_HOME=$PERSIST/SPECjbb2015 + + $PERSIST/specjbb-test-scripts/specjbb-publish $PUBLISH_DEST + publishers: + - email: + recipients: 'fathi.boudra@linaro.org stuart.monteith@linaro.org' diff --git a/jdkX-specjbb2015-benchmark.yaml b/jdkX-specjbb2015-benchmark.yaml new file mode 100644 index 0000000000..1916cf1b24 --- /dev/null +++ b/jdkX-specjbb2015-benchmark.yaml @@ -0,0 +1,127 @@ +- job: + name: jdkX-specjbb2015-benchmark + project-type: matrix + defaults: global + description: | + * Runs the specjbb2015 benchmark in composite mode (i.e., single VM, single node). + properties: + - authorization: + linaro: + - job-read + openjdk-members: + - job-build + - job-cancel + - build-discarder: + days-to-keep: 30 + num-to-keep: 10 + artifact-num-to-keep: 5 + disabled: false + node: aarch64-06 + display-name: 'OpenJDK X - Run SPECjbb2015 benchmark' + axes: + - axis: + type: user-defined + name: JVM_VARIANT + values: + - server + - client + - axis: + type: user-defined + name: BUILD_TYPE + values: + - release + - axis: + type: slave + name: label + values: + - aarch64-06 + execution-strategy: + sequential: true + wrappers: + - workspace-cleanup: + dirmatch: false + - timestamps + - matrix-tie-parent: + node: aarch64-06 + builders: +# copyartifact is slow and the file is local +# copy instead of going back and forth between master <-> slave +# - copyartifact: +# project: jdkX-build-image +# filter: 'out/jdkX-${JVM_VARIANT}-${BUILD_TYPE}.tar.gz' +# target: incoming +# flatten: true + - copyartifact: + project: archive-specjbb2015-product-tarball + filter: 'out/SPECjbb2015.tgz' + target: incoming + flatten: true + - shell: | + #!/bin/bash + + set -exu + # + # client variant uses server with -XX:TieredStopAtLevel=1 + # zero is a third possible value. + REAL_VARIANT=${JVM_VARIANT/client/server} + + ## Extract jdk + tar xf ~/workspace/jdkX-build-image/BUILD_TYPE/${BUILD_TYPE}/JVM_VARIANT/${REAL_VARIANT}/label/${NODE_NAME}/out/jdkX-${REAL_VARIANT}-${BUILD_TYPE}.tar.gz + export JAVA_HOME=${WORKSPACE}/jdkX-${REAL_VARIANT}-${BUILD_TYPE} + export PATH=$JAVA_HOME/bin:$PATH + which java + java -version + + ## Extract specjbb2015 product + tar xf incoming/SPECjbb2015.tgz + + ## Run test + + SPECJBB_PRODUCT_HOME=SPECjbb2015 + + # This commented-out invocation is a quick test that + # takes about 10 minutes to complete - which can be + # useful when debugging. + + #(cd $SPECJBB_PRODUCT_HOME; \ + # time java \ + # -Dspecjbb.controller.rtcurve.duration.min=500 \ + # -Dspecjbb.controller.rtcurve.duration.max=1500 \ + # -Dspecjbb.controller.type=PRESET \ + # -Dspecjbb.controller.preset.ir=4000 \ + # -Dspecjbb.controller.preset.duration=100 \ + # -jar specjbb2015.jar -m composite) + + if [ $JVM_VARIANT = "server" ]; then + (cd $SPECJBB_PRODUCT_HOME; java --add-modules java.se.ee -XX:+UseLargePages -XX:-UseBiasedLocking -Xmx12g -Xms12g -XX:+UseParallelOldGC -jar specjbb2015.jar -m composite) + else + (cd $SPECJBB_PRODUCT_HOME; java --add-modules java.se.ee -XX:TieredStopAtLevel=1 -XX:+UseLargePages -XX:-UseBiasedLocking -Xmx12g -Xms12g -XX:+UseParallelOldGC -jar specjbb2015.jar -m composite) + fi + + mkdir -p out + + datafile=$(basename $(echo $SPECJBB_PRODUCT_HOME/specjbb*.data.gz) | sed "s/\(specjbb2015\)/\1-${JVM_VARIANT}-${BUILD_TYPE}/") + + cp $SPECJBB_PRODUCT_HOME/specjbb*.data.gz out/$datafile + + java -jar $SPECJBB_PRODUCT_HOME/specjbb2015.jar \ + -m REPORTER \ + -raw $SPECJBB_PRODUCT_HOME/config/template-M.raw \ + -p $SPECJBB_PRODUCT_HOME/config/specjbb2015.props \ + -s $SPECJBB_PRODUCT_HOME/specjbb2015-C-*.data.gz \ + -l 1 + + tar -acf out/specjbb-result-${JVM_VARIANT}-${BUILD_TYPE}.tar.gz result + + rm -rf html + mkdir html + cp -a result/**/report-00001/* html + cp html/*0001.html html/index.html + publishers: + - archive: + artifacts: 'out/*.gz' + - html-publisher: + name: 'HTML Report' + dir: 'html' + files: 'index.html' + keep-all: true diff --git a/jdkX-terasort-benchmark-persist-results.yaml b/jdkX-terasort-benchmark-persist-results.yaml new file mode 100644 index 0000000000..7811e5d4b6 --- /dev/null +++ b/jdkX-terasort-benchmark-persist-results.yaml @@ -0,0 +1,85 @@ +- job: + name: jdkX-terasort-benchmark-persist-results + project-type: matrix + defaults: global + description: | + * Writes results to /work/openjdk-testing/hadoop-terasort-benchmark-results. + properties: + - authorization: + linaro: + - job-read + openjdk-members: + - job-extended-read + - job-build + - job-cancel + - build-discarder: + days-to-keep: 30 + num-to-keep: 10 + artifact-num-to-keep: 5 + disabled: false + node: aarch64-06 + display-name: 'OpenJDK X - Write terasort results' + axes: + - axis: + type: user-defined + name: JVM_VARIANT + values: + - server + - client + - axis: + type: user-defined + name: BUILD_TYPE + values: + - release + - axis: + type: slave + name: label + values: + - aarch64-06 + execution-strategy: + sequential: true + wrappers: + - workspace-cleanup: + dirmatch: false + - timestamps + - matrix-tie-parent: + node: aarch64-06 + builders: + - copyartifact: + project: jdkX-terasort-benchmark + filter: 'out/terasort-results-${JVM_VARIANT}-${BUILD_TYPE}.csv' + target: incoming + flatten: true + - shell: | + #!/bin/bash + + set -exu + + PERSIST=$HOME/srv/openjdkX + export BENCHMARK_RESULTS_DIR=$PERSIST/hadoop-terasort-benchmark-results + new_results=incoming/BUILD_TYPE=${BUILD_TYPE},JVM_VARIANT=${JVM_VARIANT},label=${label}/*.csv + prev_results=$BENCHMARK_RESULTS_DIR/results.csv + + # Ensure persistent directory exists. + mkdir -p $BENCHMARK_RESULTS_DIR + + # Tolerate missing results.csv file. + if [ ! -f $prev_results ]; then + touch $prev_results + fi + + SCRIPT_DIR=$PERSIST/hadoop-test-scripts + if [ -d $SCRIPT_DIR ]; then + (cd $SCRIPT_DIR; git pull) + else + git clone https://git.linaro.org/leg/openjdk/hadoop-test-scripts.git $SCRIPT_DIR + fi + + echo "Previous Results" + echo "----------------" + cat ${prev_results} + echo + + cat ${new_results} >> ${prev_results} + + $SCRIPT_DIR/update-results-db diff --git a/jdkX-terasort-benchmark-publish-results.yaml b/jdkX-terasort-benchmark-publish-results.yaml new file mode 100644 index 0000000000..8ef4ecdf59 --- /dev/null +++ b/jdkX-terasort-benchmark-publish-results.yaml @@ -0,0 +1,67 @@ +- job: + name: jdkX-terasort-benchmark-publish-results + project-type: freestyle + defaults: global + description: | + * Results are published to http://openjdk.linaro.org/hadoop-terasort-benchmark-results/ + properties: + - authorization: + anonymous: + - job-read + - job-extended-read + openjdk-members: + - job-build + - job-cancel + - build-discarder: + days-to-keep: 30 + num-to-keep: 10 + artifact-num-to-keep: 5 + parameters: + - string: + name: ZERO_BASELINE + default: '14115' + - string: + name: SERVER_MAX_JOPS_BASELINE + default: '3275' + - string: + name: SERVER_CRITICAL_JOPS_BASELINE + default: '854' + - string: + name: PUBLISH_DEST + default: '' + - string: + name: PUBLISH_HOST + default: '' + disabled: false + node: aarch64-06 + display-name: 'OpenJDK X - Publish terasort benchmark results' + wrappers: + - workspace-cleanup: + dirmatch: false + - ssh-agent-credentials: + # openjdk-testing user id + users: + - '744cffb4-9ce1-4856-b103-9fdda06dad36' + - timestamps +# Replaced by parameters +# - inject: +# properties-file: '${HOME}/performance-baseline.properties' + builders: + - shell: | + #!/bin/bash + PERSIST=$HOME/srv/openjdkX + export JDK_VERSION=X + + export BENCHMARK_RESULTS_DIR=$PERSIST/hadoop-terasort-benchmark-results + SCRIPT_DIR=$PERSIST/hadoop-test-scripts + + if [ -d $SCRIPT_DIR ]; then + (cd $SCRIPT_DIR; git pull) + else + git clone https://git.linaro.org/leg/openjdk/hadoop-test-scripts.git $SCRIPT_DIR + fi + + $SCRIPT_DIR/benchmark-terasort-publish $PUBLISH_DEST + publishers: + - email: + recipients: 'fathi.boudra@linaro.org stuart.monteith@linaro.org' diff --git a/jdkX-terasort-benchmark.yaml b/jdkX-terasort-benchmark.yaml new file mode 100644 index 0000000000..68ba886306 --- /dev/null +++ b/jdkX-terasort-benchmark.yaml @@ -0,0 +1,140 @@ +- job: + name: jdkX-terasort-benchmark + project-type: matrix + defaults: global + description: | + * Runs the terasort benchmark. + properties: + - authorization: + linaro: + - job-read + openjdk-members: + - job-extended-read + - job-build + - job-cancel + - build-discarder: + days-to-keep: 30 + num-to-keep: 10 + artifact-num-to-keep: 5 + disabled: false + node: aarch64-06 + display-name: 'OpenJDK X - Run terasort benchmark' + axes: + - axis: + type: user-defined + name: JVM_VARIANT + values: + - server + - client + - axis: + type: user-defined + name: BUILD_TYPE + values: + - release + - axis: + type: slave + name: label + values: + - aarch64-06 + execution-strategy: + sequential: true + wrappers: + - workspace-cleanup: + dirmatch: false + - timestamps + - matrix-tie-parent: + node: aarch64-06 + builders: +# copyartifact is slow and the file is local +# copy instead of going back and forth between master <-> slave +# - copyartifact: +# project: jdkX-build-image +# filter: 'out/jdkX-${JVM_VARIANT}-${BUILD_TYPE}.tar.gz' +# target: incoming +# flatten: true + - copyartifact: + project: openjdk8-hadoop-LCA14 + filter: 'out/openjdk8-hadoop-LCA14.tar.gz' + target: incoming + flatten: true + - shell: | + #!/bin/bash + + set -exu + + NGIGABYTES=1 + + # client variant uses server with -XX:TieredStopAtLevel=1 + # zero is a third possible value. + REAL_VARIANT=${JVM_VARIANT/client/server} + + ## Extract jdk + rm -rf jdkX* + tar xf ~/workspace/jdkX-build-image/BUILD_TYPE/${BUILD_TYPE}/JVM_VARIANT/${REAL_VARIANT}/label/${NODE_NAME}/out/jdkX-${REAL_VARIANT}-${BUILD_TYPE}.tar.gz + + export JAVA_HOME=${WORKSPACE}/jdkX-${REAL_VARIANT}-${BUILD_TYPE} + export PATH=${JAVA_HOME}/bin:$PATH + + ## Extract Hadoop pre-builts + rm -rf openjdk8-hadooop-LCA14 + tar xf incoming/openjdk8-hadoop-LCA14.tar.gz + + ## Benchmark + # FIXME + #(cd incoming; wget --progress=dot -e dotbytes=10M http://openjdk-apm1/openjdk8-build-artefacts/${NGIGABYTES}GB.tar.gz; tar xf ${NGIGABYTES}GB.tar.gz) + (cd incoming; tar xf ~/srv/hadoop-terasort-reference-files/${NGIGABYTES}GB.tar.gz) + + TERAGEN_BASELINE_DIR=${WORKSPACE}/incoming + HADOOP_DIR=${WORKSPACE}/openjdk8-hadoop-LCA14 + + rm -rf out + mkdir out + + sed -i '/^export JAVA_HOME=/d' ${HADOOP_DIR}/conf/hadoop-env.sh + echo "export JAVA_HOME=$JAVA_HOME" >> ${HADOOP_DIR}/conf/hadoop-env.sh + sed -i 's|/work/${user.name}/hadoop-tmp|${user.home}/hadoop/tmp|' ${HADOOP_DIR}/conf/core-site.xml + + source ${HADOOP_DIR}/env.sh + + which hadoop + which java + which hdfs + java -version + + stop-dfs.sh + stop-yarn.sh + + rm -rf ${HOME}/hadoop + mkdir -p ${HOME}/hadoop/tmp + hdfs namenode -format -force + start-dfs.sh + start-yarn.sh + + # Need time for the datanodes to materialise. + sleep 30 + jps + + hadoop fs -mkdir -p /user/$USER + hadoop fs -copyFromLocal $TERAGEN_BASELINE_DIR/${NGIGABYTES}GB /user/$USER + + trap "stop-dfs.sh; stop-yarn.sh" EXIT + + # Use only C1 compiler for client runs. + if [ $JVM_VARIANT = "client" ]; then + VARIANT_OPT=-XX:TieredStopAtLevel=1 + else + VARIANT_OPT=-Dharmless.property + fi + + elapsed_time_file=$(mktemp /tmp/benchmark-terasort-XXXXXX.$$) + HADOOP_OPTS=${VARIANT_OPT} /usr/bin/time -o $elapsed_time_file -f "%e" terasort ${NGIGABYTES}GB ${NGIGABYTES}GB-sorted + + hadoop fs -rm -R ${NGIGABYTES}GB-sorted + sed -i 's/\..*//' $elapsed_time_file + elapsed_time=$(cat $elapsed_time_file) + date_as_epoch=$(date --date="$(date +'%Y-%m-%d')" +%s) + echo "$date_as_epoch,$JVM_VARIANT,$NGIGABYTES,$elapsed_time" > out/terasort-results-${JVM_VARIANT}-${BUILD_TYPE}.csv + rm -rf incoming/${NGIGABYTES}* + publishers: + - archive: + artifacts: 'out/terasort-results-*.csv' diff --git a/jdkX-update-src-tree-persist.yaml b/jdkX-update-src-tree-persist.yaml new file mode 100644 index 0000000000..ba7c6c67cd --- /dev/null +++ b/jdkX-update-src-tree-persist.yaml @@ -0,0 +1,56 @@ +- job: + name: jdkX-update-src-tree-persist + project-type: freestyle + defaults: global + description: | + This jobs writes the current jdkX src tree to /work/openjdk-testing/jdkX/openjdk-jtreg-nightly-tests/...<br> + It is used to report failure/errors against the jtreg results. + properties: + - authorization: + anonymous: + - job-read + - job-extended-read + openjdk-members: + - 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 X - Write jdkX source tree' + wrappers: + - workspace-cleanup: + dirmatch: false + - timestamps + builders: + - copyartifact: + project: jdkX-update-src-tree + filter: 'out/*' + target: incoming + flatten: true + - shell: | + #!/bin/bash + + set -exu + + : ${YEAR:=$(date +%Y)} + : ${DAY_OF_YEAR:=$(date +%j)} + PERSIST=$HOME/srv/openjdkX + + TOP_DIR=$PERSIST/openjdk-jtreg-nightly-tests + src_dir=$TOP_DIR/src/$YEAR/$DAY_OF_YEAR + mkdir -p $src_dir + echo "Extracting tarball to $src_dir" + tar -C $src_dir --strip-components=1 -xf $WORKSPACE/incoming/jdkX.tar.gz + + # Copy bill-of-materials to persistent area for email report. + cp incoming/BOM $TOP_DIR diff --git a/jdkX-update-src-tree.yaml b/jdkX-update-src-tree.yaml new file mode 100644 index 0000000000..357f531a93 --- /dev/null +++ b/jdkX-update-src-tree.yaml @@ -0,0 +1,92 @@ +- scm: + name: jdkX + scm: + - hg: + url: http://hg.openjdk.java.net/jdk/hs + clean: true + subdir: jdkX +- job: + name: jdkX-update-src-tree + project-type: freestyle + defaults: global + description: | + This job polls upstream Mercurial servers for changes and,<br> + if there are any, triggers "jdkX-build-and-test".<br> + Note: this job archives the src which is later required by the jtreg<br> + report and publish job. The build-date.sh artefact contains shell<br> + variables for the day and day-of-year the source was archived. + properties: + - authorization: + anonymous: + - job-read + - job-extended-read + openjdk-members: + - job-build + - job-cancel + - build-discarder: + days-to-keep: 30 + num-to-keep: 10 + artifact-num-to-keep: 5 + disabled: false + node: aarch64-06 + display-name: 'OpenJDK X - Update jdkX source tree' + scm: + - jdkX + triggers: + - pollscm: 'H 2 */2 * *' + wrappers: + - timestamps + builders: + - shell: | + #!/bin/bash + + set -eu + + rm -rf out + mkdir out + + pushd jdkX + #find . -name BOM -exec rm {} \; + #commit_id=$(hg identify | awk '{print $1}') + #echo "jdkX-${commit_id}" | tee -a BOM + + #for i in corba jaxp jaxws langtools jdk hotspot nashorn; do + # pushd $i + # commit_id=$(hg identify | awk '{print $1}') + # dir=$(basename $PWD) + # echo "${dir}-${commit_id}" | tee -a ../BOM + # popd + #done + + ## Pull out subdirectory HG versions + echo BOM for $(hg paths default) > BOM + echo -e Subdir\\tHash\\t\\tTag\\tTag hash >> BOM + echo -e .\\t$(hg head --template '{node|short}\t' tip; hg tags --template="{tag}\t{node|short}\n" | grep -ve '^tip' | head -n1) >>BOM + + cp BOM $WORKSPACE/out + + popd + + : ${YEAR:=$(date +%Y)} + : ${DAY_OF_YEAR:=$(date +%j)} + + : ${YEAR_YESTERDAY:=$YEAR} + : ${DAY_OF_YEAR_YESTERDAY:=$((10#$DAY_OF_YEAR - 1))} + + echo "YEAR=${YEAR}" >dates.prop + echo "DAY_OF_YEAR=${DAY_OF_YEAR}" >>dates.prop + + echo "export YEAR=${YEAR}" > out/build-date.sh + echo "export DAY_OF_YEAR=${DAY_OF_YEAR}" >> out/build-date.sh + + tar --exclude=.hg -acf out/jdkX.tar.gz jdkX + publishers: + - archive: + artifacts: 'out/jdkX.tar.gz, out/build-date.sh, out/BOM' + - fingerprint: + files: 'out/*' + record-artifacts: true + - trigger-parameterized-builds: + - project: jdkX-build-and-test + condition: SUCCESS + property-file: dates.prop |