mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
Merge pull request #58783 from cblecker/verify-junit
Automatic merge from submit-queue (batch tested with PRs 58783, 58800, 58846). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Produce junit results for verify job **What this PR does / why we need it**: Junit results may make the verify job clearer, and give us better insights into timings **Release note**: ```release-note NONE ```
This commit is contained in:
commit
f4bab0b1bd
@ -123,7 +123,7 @@ verify:
|
|||||||
@echo "$$VERIFY_HELP_INFO"
|
@echo "$$VERIFY_HELP_INFO"
|
||||||
else
|
else
|
||||||
verify: verify_generated_files
|
verify: verify_generated_files
|
||||||
KUBE_VERIFY_GIT_BRANCH=$(BRANCH) hack/make-rules/verify.sh -v
|
KUBE_VERIFY_GIT_BRANCH=$(BRANCH) hack/make-rules/verify.sh
|
||||||
endif
|
endif
|
||||||
|
|
||||||
define QUICK_VERIFY_HELP_INFO
|
define QUICK_VERIFY_HELP_INFO
|
||||||
|
@ -31,6 +31,8 @@ retry() {
|
|||||||
|
|
||||||
export PATH=${GOPATH}/bin:${PWD}/third_party/etcd:/usr/local/go/bin:${PATH}
|
export PATH=${GOPATH}/bin:${PWD}/third_party/etcd:/usr/local/go/bin:${PATH}
|
||||||
|
|
||||||
|
# Produce a JUnit-style XML test report
|
||||||
|
export KUBE_JUNIT_REPORT_DIR=${WORKSPACE}/artifacts
|
||||||
# Set artifacts directory
|
# Set artifacts directory
|
||||||
export ARTIFACTS_DIR=${WORKSPACE}/artifacts
|
export ARTIFACTS_DIR=${WORKSPACE}/artifacts
|
||||||
|
|
||||||
|
@ -21,6 +21,9 @@ set -o pipefail
|
|||||||
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../..
|
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../..
|
||||||
source "${KUBE_ROOT}/hack/lib/util.sh"
|
source "${KUBE_ROOT}/hack/lib/util.sh"
|
||||||
|
|
||||||
|
# include shell2junit library
|
||||||
|
source "${KUBE_ROOT}/third_party/forked/shell2junit/sh2ju.sh"
|
||||||
|
|
||||||
# Excluded check patterns are always skipped.
|
# Excluded check patterns are always skipped.
|
||||||
EXCLUDED_PATTERNS=(
|
EXCLUDED_PATTERNS=(
|
||||||
"verify-all.sh" # this script calls the make rule and would cause a loop
|
"verify-all.sh" # this script calls the make rule and would cause a loop
|
||||||
@ -69,11 +72,19 @@ function is-quick {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function run-cmd {
|
function run-cmd {
|
||||||
|
local filename="${2##*/verify-}"
|
||||||
|
local testname="${filename%%.*}"
|
||||||
|
local output="${KUBE_JUNIT_REPORT_DIR:-/tmp/junit-results}"
|
||||||
|
local tr
|
||||||
|
|
||||||
if ${SILENT}; then
|
if ${SILENT}; then
|
||||||
"$@" &> /dev/null
|
juLog -output="${output}" -class="verify" -name="${testname}" "$@" &> /dev/null
|
||||||
|
tr=$?
|
||||||
else
|
else
|
||||||
"$@"
|
juLog -output="${output}" -class="verify" -name="${testname}" "$@"
|
||||||
|
tr=$?
|
||||||
fi
|
fi
|
||||||
|
return ${tr}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Collect Failed tests in this Array , initalize it to nil
|
# Collect Failed tests in this Array , initalize it to nil
|
||||||
@ -118,30 +129,15 @@ function run-checks {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
SILENT=true
|
SILENT=${SILENT:-false}
|
||||||
QUICK=false
|
QUICK=${QUICK:-false}
|
||||||
|
|
||||||
while getopts ":vQ" opt; do
|
|
||||||
case ${opt} in
|
|
||||||
v)
|
|
||||||
SILENT=false
|
|
||||||
;;
|
|
||||||
Q)
|
|
||||||
QUICK=true
|
|
||||||
;;
|
|
||||||
\?)
|
|
||||||
echo "Invalid flag: -${OPTARG}" >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
if ${SILENT} ; then
|
if ${SILENT} ; then
|
||||||
echo "Running in silent mode, run with -v if you want to see script logs."
|
echo "Running in silent mode, run with SILENT=false if you want to see script logs."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ${QUICK} ; then
|
if ${QUICK} ; then
|
||||||
echo "Running in quick mode (-Q flag). Only fast checks will run."
|
echo "Running in quick mode (QUICK=true). Only fast checks will run."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ret=0
|
ret=0
|
||||||
@ -149,7 +145,7 @@ run-checks "${KUBE_ROOT}/hack/verify-*.sh" bash
|
|||||||
run-checks "${KUBE_ROOT}/hack/verify-*.py" python
|
run-checks "${KUBE_ROOT}/hack/verify-*.py" python
|
||||||
|
|
||||||
if [[ ${ret} -eq 1 ]]; then
|
if [[ ${ret} -eq 1 ]]; then
|
||||||
print-failed-tests
|
print-failed-tests
|
||||||
fi
|
fi
|
||||||
exit ${ret}
|
exit ${ret}
|
||||||
|
|
||||||
|
35
third_party/forked/shell2junit/sh2ju.sh
vendored
35
third_party/forked/shell2junit/sh2ju.sh
vendored
@ -32,6 +32,15 @@ juDIR=`pwd`/results
|
|||||||
# The name of the suite is calculated based in your script name
|
# The name of the suite is calculated based in your script name
|
||||||
suite=""
|
suite=""
|
||||||
|
|
||||||
|
if LANG=C sed --help 2>&1 | grep -q GNU; then
|
||||||
|
SED="sed"
|
||||||
|
elif which gsed &>/dev/null; then
|
||||||
|
SED="gsed"
|
||||||
|
else
|
||||||
|
echo "Failed to find GNU sed as sed or gsed. If you are on Mac: brew install gnu-sed." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# A wrapper for the eval method witch allows catching seg-faults and use tee
|
# A wrapper for the eval method witch allows catching seg-faults and use tee
|
||||||
errfile=/tmp/evErr.$$.log
|
errfile=/tmp/evErr.$$.log
|
||||||
function eVal() {
|
function eVal() {
|
||||||
@ -57,11 +66,11 @@ function juLog() {
|
|||||||
ya=""; icase=""
|
ya=""; icase=""
|
||||||
while [ -z "$ya" ]; do
|
while [ -z "$ya" ]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-name=*) name=`echo "$1" | sed -e 's/-name=//'`; shift;;
|
-name=*) name=`echo "$1" | ${SED} -e 's/-name=//'`; shift;;
|
||||||
-class=*) class=`echo "$1" | sed -e 's/-class=//'`; shift;;
|
-class=*) class=`echo "$1" | ${SED} -e 's/-class=//'`; shift;;
|
||||||
-ierror=*) ereg=`echo "$1" | sed -e 's/-ierror=//'`; icase="-i"; shift;;
|
-ierror=*) ereg=`echo "$1" | ${SED} -e 's/-ierror=//'`; icase="-i"; shift;;
|
||||||
-error=*) ereg=`echo "$1" | sed -e 's/-error=//'`; shift;;
|
-error=*) ereg=`echo "$1" | ${SED} -e 's/-error=//'`; shift;;
|
||||||
-output=*) juDIR=`echo "$1" | sed -e 's/-output=//'`; shift;;
|
-output=*) juDIR=`echo "$1" | ${SED} -e 's/-output=//'`; shift;;
|
||||||
*) ya=1;;
|
*) ya=1;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@ -83,7 +92,7 @@ function juLog() {
|
|||||||
# calculate command to eval
|
# calculate command to eval
|
||||||
[ -z "$1" ] && return
|
[ -z "$1" ] && return
|
||||||
cmd="$1"; shift
|
cmd="$1"; shift
|
||||||
while [ -n "$1" ]
|
while [ -n "${1:-}" ]
|
||||||
do
|
do
|
||||||
cmd="$cmd \"$1\""
|
cmd="$cmd \"$1\""
|
||||||
shift
|
shift
|
||||||
@ -108,8 +117,8 @@ function juLog() {
|
|||||||
|
|
||||||
# set the appropriate error, based in the exit code and the regex
|
# set the appropriate error, based in the exit code and the regex
|
||||||
[ $evErr != 0 ] && err=1 || err=0
|
[ $evErr != 0 ] && err=1 || err=0
|
||||||
out=`cat $outf | sed -e 's/^\([^+]\)/| \1/g'`
|
out=`cat $outf | ${SED} -e 's/^\([^+]\)/| \1/g'`
|
||||||
if [ $err = 0 -a -n "$ereg" ]; then
|
if [ $err = 0 -a -n "${ereg:-}" ]; then
|
||||||
H=`echo "$out" | egrep $icase "$ereg"`
|
H=`echo "$out" | egrep $icase "$ereg"`
|
||||||
[ -n "$H" ] && err=1
|
[ -n "$H" ] && err=1
|
||||||
fi
|
fi
|
||||||
@ -148,14 +157,14 @@ $errMsg
|
|||||||
|
|
||||||
if [[ -e "$juDIR/junit_$suite.xml" ]]; then
|
if [[ -e "$juDIR/junit_$suite.xml" ]]; then
|
||||||
# file exists. first update the failures count
|
# file exists. first update the failures count
|
||||||
failCount=`sed -n "s/.*testsuite.*failures=\"\([0-9]*\)\".*/\1/p" "$juDIR/junit_$suite.xml"`
|
failCount=`${SED} -n "s/.*testsuite.*failures=\"\([0-9]*\)\".*/\1/p" "$juDIR/junit_$suite.xml"`
|
||||||
errors=$(($failCount+$errors))
|
errors=$(($failCount+$errors))
|
||||||
sed -i "0,/failures=\"$failCount\"/ s/failures=\"$failCount\"/failures=\"$errors\"/" "$juDIR/junit_$suite.xml"
|
${SED} -i "0,/failures=\"$failCount\"/ s/failures=\"$failCount\"/failures=\"$errors\"/" "$juDIR/junit_$suite.xml"
|
||||||
sed -i "0,/errors=\"$failCount\"/ s/errors=\"$failCount\"/errors=\"$errors\"/" "$juDIR/junit_$suite.xml"
|
${SED} -i "0,/errors=\"$failCount\"/ s/errors=\"$failCount\"/errors=\"$errors\"/" "$juDIR/junit_$suite.xml"
|
||||||
|
|
||||||
# file exists. Need to append to it. If we remove the testsuite end tag, we can just add it in after.
|
# file exists. Need to append to it. If we remove the testsuite end tag, we can just add it in after.
|
||||||
sed -i "s^</testsuite>^^g" $juDIR/junit_$suite.xml ## remove testSuite so we can add it later
|
${SED} -i "s^</testsuite>^^g" $juDIR/junit_$suite.xml ## remove testSuite so we can add it later
|
||||||
sed -i "s^</testsuites>^^g" $juDIR/junit_$suite.xml
|
${SED} -i "s^</testsuites>^^g" $juDIR/junit_$suite.xml
|
||||||
cat <<EOF >> "$juDIR/junit_$suite.xml"
|
cat <<EOF >> "$juDIR/junit_$suite.xml"
|
||||||
$content
|
$content
|
||||||
</testsuite>
|
</testsuite>
|
||||||
|
Loading…
Reference in New Issue
Block a user