This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "MPICH primary repository". The branch, master has been updated via fe6dd619711825de9513d72fc9903ab4ef01905e (commit) from 1e6c4d8e0f3b38ba3d9a9b6eff7602c6960f67cb (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://git.mpich.org/mpich.git/commitdiff/fe6dd619711825de9513d72fc9903ab4ef... commit fe6dd619711825de9513d72fc9903ab4ef01905e Author: Yanfei Guo <[email protected]> Date: Sat Sep 5 20:36:31 2015 -0500 Add scripts for setting XFAIL XFAIL is set in maint/jenkins/xfail.conf. It allows an XFAIL to be applied based on various conditions including jobname, compiler, jenkins_configure, netmod, and SLURM queue. When Jenkins uses maint/jenkins/test-worker.sh to build project, it will execute maint/jenkins/set-xfail.sh with the jobname, compiler, configure options, netmod, and queue right before executing ./configure”. maint/jenkins/set-xfail.sh will read the xfail.conf file and apply the XFAIL based on the conditions set in the xfail.conf. All applied XFAILs will be summarized in apply-xfail.sh. xfail-apply.sh is added to gitignore to prevent from accidentally adding the xfail summary to the source. Signed-off-by: Ken Raffenetti <[email protected]> diff --git a/.gitignore b/.gitignore index bb70b76..9f0e903 100644 --- a/.gitignore +++ b/.gitignore @@ -105,6 +105,7 @@ summary.xml summary.junit.xml summary.tap tags +apply-xfail.sh # the hooks dir shouldn't be accidentally committed /maint/hooks diff --git a/maint/jenkins/set-xfail.sh b/maint/jenkins/set-xfail.sh new file mode 100755 index 0000000..918cfa0 --- /dev/null +++ b/maint/jenkins/set-xfail.sh @@ -0,0 +1,102 @@ +#!/bin/zsh + +jobname="" +compiler="" +jenkins_configure="" +queue="" +netmod="" + +XFAIL_CONF="maint/jenkins/xfail.conf" + +##################################################################### +## Initialization +##################################################################### + +while getopts ":f:j:c:o:q:m:" opt; do + case "$opt" in + j) + jobname=$OPTARG ;; + c) + compiler=$OPTARG ;; + o) + jenkins_configure=$OPTARG ;; + q) + queue=$OPTARG ;; + m) + netmod=$OPTARG ;; + f) + XFAIL_CONF=$OPTARG ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + exit 1 + esac +done + +##################################################################### +## Main ( +##################################################################### + +if test ! -f "$XFAIL_CONF" ; then + echo "Cannot find $XFAIL_CONF. No XFAIL will be applied" + exit 0 +fi + +XFAILCond() { + local job="$1" + local comp="$2" + local option="$3" + local nmod="$4" + local q="$5" + + local state=0 + + if [[ ! "$job" == "*" ]]; then + # clean up jobname and do substring match + if [[ ! "${jobname%%,*}" == *$job* ]]; then state=1; fi + fi + + if [[ ! "$comp" == "*" ]]; then + if [[ ! "$compiler" == "$comp" ]]; then state=1; fi + fi + + if [[ ! "$option" == "*" ]]; then + if [[ ! "$jenkins_configure" == "$option" ]]; then state=1; fi + fi + + if [[ ! "$nmod" == "*" ]]; then + if [[ ! "$netmod" == "$nmod" ]]; then state=1; fi + fi + + if [[ ! "$q" == "*" ]]; then + if [[ ! "$queue" == "$q" ]]; then state=1; fi + fi + + echo "$state" +} + +SCRIPT="apply-xfail.sh" +if [[ -f $SCRIPT ]]; then + rm $SCRIPT +fi + +while read -r line; do + #clean leading whitespaces + line=$(echo "$line" | sed "s/^ *//g") + line=$(echo "$line" | sed "s/ *$//g") + echo $line + # skip comment line + if test -x "$line" -o "${line:1}" = "#" ; then + continue + fi + + arr=( $(echo $line) ) + if [[ "0" == $(XFAILCond "${arr[1]}" "${arr[2]}" "${arr[3]}" "${arr[4]}" "${arr[5]}") ]]; then + echo "${arr[@]:5}" >> $SCRIPT + fi +done < "$XFAIL_CONF" + +if [[ -f $XFAIL_CONF ]]; then + source $SCRIPT +fi + +exit 0 diff --git a/maint/jenkins/test-worker.sh b/maint/jenkins/test-worker.sh index 7f94495..bcb9edb 100755 --- a/maint/jenkins/test-worker.sh +++ b/maint/jenkins/test-worker.sh @@ -79,6 +79,7 @@ CollectResults() { # TODO: copy saved test binaries (for failed cases) find . \ \( -name "filtered-make.txt" -o \ + -name "apply-xfail.sh" -o \ -name "autogen.log" -o \ -name "config.log" -o \ -name "c.txt" -o \ @@ -418,6 +419,10 @@ if test "$BUILD_MODE" = "per-commit" ; then ./autogen.sh 2>&1 | tee autogen.log fi +if [[ -x maint/jenkins/set-xfail.sh ]]; then + ./maint/jenkins/set-xfail.sh -j $JOB_NAME -c $compiler -o $jenkins_configure -q $queue -m $_netmod +fi + ./configure --prefix="$TMP_SRC/_inst" $(SetNetmod $netmod) $(SetConfigOpt $jenkins_configure) \ --disable-perftest \ 2>&1 | tee c.txt diff --git a/maint/jenkins/xfail.conf b/maint/jenkins/xfail.conf new file mode 100644 index 0000000..62836e5 --- /dev/null +++ b/maint/jenkins/xfail.conf @@ -0,0 +1,26 @@ +# Contitional XFAIL settings +# +# Syntax (similar to a cron file): +# [jobname] [compiler] [jenkins_configure] [netmod] [queue] [sed of XFAIL] +# Note that the [jobname] allows partial matches (see examples). Other +# conditions only allows exact matches. +# The actual allowed combinations are depending on the Jenkins job. For +# example, +# mxm * * tcp * sed -i "..." +# will have no effect since none of the mxm jobs has tcp netmod in the +# configuration. +# +# Examples: +# mxm gnu debug * * sed -i "..." +# This will apply the set the XFAIL when the job is "mpich-master-mxm" or +# "mpich-review-mxm", the compiler is "gnu", and the jenkins_configure is +# "debug". +# +# master-ubuntu * * * ubuntu32 sed -i "..." +# This will apply the set the XFAIL when the job is "mpich-master-ubuntu" and +# the running queue is "ubuntu32". +# +# For each build, all applied XFAILS will be summaried in +# ${SOURCE}/apply-xfail.sh +# +# master-portals * * portals4 * sed -i "s+\(^alltoall .*\)+\1 xfail=ticket0+g" test/mpi/threads/pt2pt/testlist ----------------------------------------------------------------------- Summary of changes: .gitignore | 1 + maint/jenkins/set-xfail.sh | 102 ++++++++++++++++++++++++++++++++++++++++++ maint/jenkins/test-worker.sh | 5 ++ maint/jenkins/xfail.conf | 26 +++++++++++ 4 files changed, 134 insertions(+), 0 deletions(-) create mode 100755 maint/jenkins/set-xfail.sh create mode 100644 maint/jenkins/xfail.conf hooks/post-receive -- MPICH primary repository