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
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