diff options
Diffstat (limited to '.gitlab-ci/deqp-runner.sh')
-rwxr-xr-x | .gitlab-ci/deqp-runner.sh | 81 |
1 files changed, 72 insertions, 9 deletions
diff --git a/.gitlab-ci/deqp-runner.sh b/.gitlab-ci/deqp-runner.sh index 58aa7759b7a..989a222967e 100755 --- a/.gitlab-ci/deqp-runner.sh +++ b/.gitlab-ci/deqp-runner.sh @@ -57,15 +57,56 @@ fi set +e -vulkan-cts-runner \ - --deqp /deqp/modules/$DEQP_VER/deqp-$DEQP_VER \ - --output $RESULTS/cts-runner-results.txt \ - --caselist /tmp/case-list.txt \ - --exclude-list $ARTIFACTS/$DEQP_SKIPS \ - $XFAIL \ - --job ${DEQP_PARALLEL:-1} \ - -- \ - "${DEQP_OPTIONS[@]}" +run_cts() { + caselist=$1 + output=$2 + deqp-runner \ + --deqp /deqp/modules/$DEQP_VER/deqp-$DEQP_VER \ + --output $output \ + --caselist $caselist \ + --exclude-list $ARTIFACTS/$DEQP_SKIPS \ + $XFAIL \ + --job ${DEQP_PARALLEL:-1} \ + --allow-flakes true \ + -- \ + "${DEQP_OPTIONS[@]}" +} + +report_flakes() { + if [ -z "$FLAKES_CHANNEL" ]; then + return 0 + fi + flakes=$1 + bot="$CI_RUNNER_DESCRIPTION-$CI_PIPELINE_ID" + channel="$FLAKES_CHANNEL" + ( + echo NICK $bot + echo USER $bot unused unused :Gitlab CI Notifier + sleep 10 + echo "JOIN $channel" + sleep 1 + desc="Flakes detected in job: $CI_JOB_URL on $CI_RUNNER_DESCRIPTION" + if [ -n "CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" ]; then + desc="$desc on branch $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME ($CI_MERGE_REQUEST_TITLE)" + fi + echo "PRIVMSG $channel :$desc" + for flake in `cat $flakes`; do + echo "PRIVMSG $channel :$flake" + done + echo "PRIVMSG $channel :See $CI_JOB_URL/artifacts/browse/results/" + echo "QUIT" + ) | nc irc.freenode.net 6667 > /dev/null + +} + +# wrapper to supress +x to avoid spamming the log +quiet() { + set +x + "$@" + set -x +} + +run_cts /tmp/case-list.txt $RESULTS/cts-runner-results.txt DEQP_EXITCODE=$? if [ $DEQP_EXITCODE -ne 0 ]; then @@ -78,6 +119,28 @@ if [ $DEQP_EXITCODE -ne 0 ]; then grep -v ",ExpectedFail" > \ $RESULTS/cts-runner-unexpected-results.txt head -n 50 $RESULTS/cts-runner-unexpected-results.txt + + count=`cat $RESULTS/cts-runner-unexpected-results.txt | wc -l` + + # Re-run fails to detect flakes. But use a small threshold, if + # something was fundamentally broken, we don't want to re-run + # the entire caselist +else + cat $RESULTS/cts-runner-results.txt | \ + grep ",Flake" > \ + $RESULTS/cts-runner-flakes.txt + + count=`cat $RESULTS/cts-runner-flakes.txt | wc -l` + if [ $count -gt 0 ]; then + echo "Some flakes found (see cts-runner-flakes.txt in artifacts for full results):" + head -n 50 $RESULTS/cts-runner-flakes.txt + + # Report the flakes to IRC channel for monitoring (if configured): + quiet report_flakes $RESULTS/cts-runner-flakes.txt + else + # no flakes, so clean-up: + rm $RESULTS/cts-runner-flakes.txt + fi fi exit $DEQP_EXITCODE |