1*7a7741afSMartin Matuska#!/usr/bin/env bash 2*7a7741afSMartin Matuska 3*7a7741afSMartin Matuska###################################################################### 4*7a7741afSMartin Matuska# 7) prepare output of the results 5*7a7741afSMartin Matuska# - this script pre-creates all needed logfiles for later summary 6*7a7741afSMartin Matuska###################################################################### 7*7a7741afSMartin Matuska 8*7a7741afSMartin Matuskaset -eu 9*7a7741afSMartin Matuska 10*7a7741afSMartin Matuska# read our defined variables 11*7a7741afSMartin Matuskacd /var/tmp 12*7a7741afSMartin Matuskasource env.txt 13*7a7741afSMartin Matuska 14*7a7741afSMartin Matuskamkdir -p $RESPATH 15*7a7741afSMartin Matuska 16*7a7741afSMartin Matuska# check if building the module has failed 17*7a7741afSMartin Matuskaif [ -z ${VMs:-} ]; then 18*7a7741afSMartin Matuska cd $RESPATH 19*7a7741afSMartin Matuska echo ":exclamation: ZFS module didn't build successfully :exclamation:" \ 20*7a7741afSMartin Matuska | tee summary.txt | tee /tmp/summary.txt 21*7a7741afSMartin Matuska cp /var/tmp/*.txt . 22*7a7741afSMartin Matuska tar cf /tmp/qemu-$OS.tar -C $RESPATH -h . || true 23*7a7741afSMartin Matuska exit 0 24*7a7741afSMartin Matuskafi 25*7a7741afSMartin Matuska 26*7a7741afSMartin Matuska# build was okay 27*7a7741afSMartin MatuskaBASE="$HOME/work/zfs/zfs" 28*7a7741afSMartin MatuskaMERGE="$BASE/.github/workflows/scripts/merge_summary.awk" 29*7a7741afSMartin Matuska 30*7a7741afSMartin Matuska# catch result files of testings (vm's should be there) 31*7a7741afSMartin Matuskafor i in $(seq 1 $VMs); do 32*7a7741afSMartin Matuska rsync -arL zfs@192.168.122.1$i:$RESPATH/current $RESPATH/vm$i || true 33*7a7741afSMartin Matuska scp zfs@192.168.122.1$i:"/var/tmp/*.txt" $RESPATH/vm$i || true 34*7a7741afSMartin Matuskadone 35*7a7741afSMartin Matuskacp -f /var/tmp/*.txt $RESPATH || true 36*7a7741afSMartin Matuskacd $RESPATH 37*7a7741afSMartin Matuska 38*7a7741afSMartin Matuska# prepare result files for summary 39*7a7741afSMartin Matuskafor i in $(seq 1 $VMs); do 40*7a7741afSMartin Matuska file="vm$i/build-stderr.txt" 41*7a7741afSMartin Matuska test -s $file && mv -f $file build-stderr.txt 42*7a7741afSMartin Matuska 43*7a7741afSMartin Matuska file="vm$i/build-exitcode.txt" 44*7a7741afSMartin Matuska test -s $file && mv -f $file build-exitcode.txt 45*7a7741afSMartin Matuska 46*7a7741afSMartin Matuska file="vm$i/uname.txt" 47*7a7741afSMartin Matuska test -s $file && mv -f $file uname.txt 48*7a7741afSMartin Matuska 49*7a7741afSMartin Matuska file="vm$i/tests-exitcode.txt" 50*7a7741afSMartin Matuska if [ ! -s $file ]; then 51*7a7741afSMartin Matuska # XXX - add some tests for kernel panic's here 52*7a7741afSMartin Matuska # tail -n 80 vm$i/console.txt | grep XYZ 53*7a7741afSMartin Matuska echo 1 > $file 54*7a7741afSMartin Matuska fi 55*7a7741afSMartin Matuska rv=$(cat vm$i/tests-exitcode.txt) 56*7a7741afSMartin Matuska test $rv != 0 && touch /tmp/have_failed_tests 57*7a7741afSMartin Matuska 58*7a7741afSMartin Matuska file="vm$i/current/log" 59*7a7741afSMartin Matuska if [ -s $file ]; then 60*7a7741afSMartin Matuska cat $file >> log 61*7a7741afSMartin Matuska awk '/\[FAIL\]|\[KILLED\]/{ show=1; print; next; }; \ 62*7a7741afSMartin Matuska /\[SKIP\]|\[PASS\]/{ show=0; } show' \ 63*7a7741afSMartin Matuska $file > /tmp/vm${i}dbg.txt 64*7a7741afSMartin Matuska fi 65*7a7741afSMartin Matuska 66*7a7741afSMartin Matuska file="vm${i}log.txt" 67*7a7741afSMartin Matuska fileC="/tmp/vm${i}log.txt" 68*7a7741afSMartin Matuska if [ -s $file ]; then 69*7a7741afSMartin Matuska cat $file >> summary 70*7a7741afSMartin Matuska cat $file | $BASE/scripts/zfs-tests-color.sh > $fileC 71*7a7741afSMartin Matuska fi 72*7a7741afSMartin Matuskadone 73*7a7741afSMartin Matuska 74*7a7741afSMartin Matuska# create summary of tests 75*7a7741afSMartin Matuskaif [ -s summary ]; then 76*7a7741afSMartin Matuska $MERGE summary | grep -v '^/' > summary.txt 77*7a7741afSMartin Matuska $MERGE summary | $BASE/scripts/zfs-tests-color.sh > /tmp/summary.txt 78*7a7741afSMartin Matuska rm -f summary 79*7a7741afSMartin Matuskaelse 80*7a7741afSMartin Matuska touch summary.txt /tmp/summary.txt 81*7a7741afSMartin Matuskafi 82*7a7741afSMartin Matuska 83*7a7741afSMartin Matuska# create file for debugging 84*7a7741afSMartin Matuskaif [ -s log ]; then 85*7a7741afSMartin Matuska awk '/\[FAIL\]|\[KILLED\]/{ show=1; print; next; }; \ 86*7a7741afSMartin Matuska /\[SKIP\]|\[PASS\]/{ show=0; } show' \ 87*7a7741afSMartin Matuska log > summary-failure-logs.txt 88*7a7741afSMartin Matuska rm -f log 89*7a7741afSMartin Matuskaelse 90*7a7741afSMartin Matuska touch summary-failure-logs.txt 91*7a7741afSMartin Matuskafi 92*7a7741afSMartin Matuska 93*7a7741afSMartin Matuska# create debug overview for failed tests 94*7a7741afSMartin Matuskacat summary.txt \ 95*7a7741afSMartin Matuska | awk '/\(expected PASS\)/{ if ($1!="SKIP") print $2; next; } show' \ 96*7a7741afSMartin Matuska | while read t; do 97*7a7741afSMartin Matuska cat summary-failure-logs.txt \ 98*7a7741afSMartin Matuska | awk '$0~/Test[: ]/{ show=0; } $0~v{ show=1; } show' v="$t" \ 99*7a7741afSMartin Matuska > /tmp/fail.txt 100*7a7741afSMartin Matuska SIZE=$(stat --printf="%s" /tmp/fail.txt) 101*7a7741afSMartin Matuska SIZE=$((SIZE/1024)) 102*7a7741afSMartin Matuska # Test Summary: 103*7a7741afSMartin Matuska echo "##[group]$t ($SIZE KiB)" >> /tmp/failed.txt 104*7a7741afSMartin Matuska cat /tmp/fail.txt | $BASE/scripts/zfs-tests-color.sh >> /tmp/failed.txt 105*7a7741afSMartin Matuska echo "##[endgroup]" >> /tmp/failed.txt 106*7a7741afSMartin Matuska # Job Summary: 107*7a7741afSMartin Matuska echo -e "\n<details>\n<summary>$t ($SIZE KiB)</summary><pre>" >> failed.txt 108*7a7741afSMartin Matuska cat /tmp/fail.txt >> failed.txt 109*7a7741afSMartin Matuska echo "</pre></details>" >> failed.txt 110*7a7741afSMartin Matuskadone 111*7a7741afSMartin Matuska 112*7a7741afSMartin Matuskaif [ -e /tmp/have_failed_tests ]; then 113*7a7741afSMartin Matuska echo ":warning: Some tests failed!" >> failed.txt 114*7a7741afSMartin Matuskaelse 115*7a7741afSMartin Matuska echo ":thumbsup: All tests passed." >> failed.txt 116*7a7741afSMartin Matuskafi 117*7a7741afSMartin Matuska 118*7a7741afSMartin Matuskaif [ ! -s uname.txt ]; then 119*7a7741afSMartin Matuska echo ":interrobang: Panic - where is my uname.txt?" > uname.txt 120*7a7741afSMartin Matuskafi 121*7a7741afSMartin Matuska 122*7a7741afSMartin Matuska# artifact ready now 123*7a7741afSMartin Matuskatar cf /tmp/qemu-$OS.tar -C $RESPATH -h . || true 124