aboutsummaryrefslogtreecommitdiffstats
path: root/.gitlab-ci
diff options
context:
space:
mode:
authorRob Clark <[email protected]>2019-11-17 11:57:26 -0800
committerRob Clark <[email protected]>2019-11-22 13:48:29 -0800
commit415d565d96278d81255bf85eefdb2553e15e15c6 (patch)
tree3f14967cf0439f4fadd786fadf7faf4880283bdc /.gitlab-ci
parent8af7551a9efaa4490f92b45439a64224ff51e3a6 (diff)
gitlab-ci/deqp: generate xml results for fails/flakes
Extract .qpa for the individual unexpected results and flakes, and translate to xml, preserved with the artifacts. This allows easy browsing of the test logs for fails/flakes, for easier debugging. The # of logs to preserve is capped at 50 to avoid saving 100s of megabytes of logs in case someone pushes a change that breaks everything. Signed-off-by: Rob Clark <[email protected]> Acked-by: Eric Engestrom <[email protected]>
Diffstat (limited to '.gitlab-ci')
-rwxr-xr-x.gitlab-ci/deqp-runner.sh40
1 files changed, 40 insertions, 0 deletions
diff --git a/.gitlab-ci/deqp-runner.sh b/.gitlab-ci/deqp-runner.sh
index b651570cf1c..044ff5981ad 100755
--- a/.gitlab-ci/deqp-runner.sh
+++ b/.gitlab-ci/deqp-runner.sh
@@ -99,6 +99,43 @@ report_flakes() {
}
+extract_xml_result() {
+ testcase=$1
+ shift 1
+ qpas=$*
+ start="#beginTestCaseResult $testcase"
+ for qpa in $qpas; do
+ while IFS= read -r line; do
+ if [ "$line" = "$start" ]; then
+ dst="$testcase.qpa"
+ echo "#beginSession" > $dst
+ echo $line >> $dst
+ while IFS= read -r line; do
+ if [ "$line" = "#endTestCaseResult" ]; then
+ echo $line >> $dst
+ echo "#endSession" >> $dst
+ /deqp/executor/testlog-to-xml $dst "$RESULTS/$testcase.xml"
+ # copy the stylesheets here so they only end up in artifacts
+ # if we have one or more result xml in artifacts
+ cp /deqp/testlog.{css,xsl} "$RESULTS/"
+ return 0
+ fi
+ echo $line >> $dst
+ done
+ return 1
+ fi
+ done < $qpa
+ done
+}
+
+extract_xml_results() {
+ qpas=$*
+ while IFS= read -r testcase; do
+ testcase=${testcase%,*}
+ extract_xml_result $testcase $qpas
+ done
+}
+
# wrapper to supress +x to avoid spamming the log
quiet() {
set +x
@@ -120,6 +157,9 @@ if [ $DEQP_EXITCODE -ne 0 ]; then
$RESULTS/cts-runner-unexpected-results.txt
head -n 50 $RESULTS/cts-runner-unexpected-results.txt
+ # Save the logs for up to the first 50 unexpected results:
+ head -n 50 $RESULTS/cts-runner-unexpected-results.txt | quiet extract_xml_results /tmp/*.qpa
+
count=`cat $RESULTS/cts-runner-unexpected-results.txt | wc -l`
# Re-run fails to detect flakes. But use a small threshold, if