1*7a7741afSMartin Matuska#!/usr/bin/env bash 2*7a7741afSMartin Matuska 3*7a7741afSMartin Matuska###################################################################### 4*7a7741afSMartin Matuska# 6) load openzfs module and run the tests 5*7a7741afSMartin Matuska# 6*7a7741afSMartin Matuska# called on runner: qemu-6-tests.sh 7*7a7741afSMartin Matuska# called on qemu-vm: qemu-6-tests.sh $OS $2/$3 8*7a7741afSMartin Matuska###################################################################### 9*7a7741afSMartin Matuska 10*7a7741afSMartin Matuskaset -eu 11*7a7741afSMartin Matuska 12*7a7741afSMartin Matuskafunction prefix() { 13*7a7741afSMartin Matuska ID="$1" 14*7a7741afSMartin Matuska LINE="$2" 15*7a7741afSMartin Matuska CURRENT=$(date +%s) 16*7a7741afSMartin Matuska TSSTART=$(cat /tmp/tsstart) 17*7a7741afSMartin Matuska DIFF=$((CURRENT-TSSTART)) 18*7a7741afSMartin Matuska H=$((DIFF/3600)) 19*7a7741afSMartin Matuska DIFF=$((DIFF-(H*3600))) 20*7a7741afSMartin Matuska M=$((DIFF/60)) 21*7a7741afSMartin Matuska S=$((DIFF-(M*60))) 22*7a7741afSMartin Matuska 23*7a7741afSMartin Matuska CTR=$(cat /tmp/ctr) 24*7a7741afSMartin Matuska echo $LINE| grep -q "^Test[: ]" && CTR=$((CTR+1)) && echo $CTR > /tmp/ctr 25*7a7741afSMartin Matuska 26*7a7741afSMartin Matuska BASE="$HOME/work/zfs/zfs" 27*7a7741afSMartin Matuska COLOR="$BASE/scripts/zfs-tests-color.sh" 28*7a7741afSMartin Matuska CLINE=$(echo $LINE| grep "^Test[ :]" | sed -e 's|/usr/local|/usr|g' \ 29*7a7741afSMartin Matuska | sed -e 's| /usr/share/zfs/zfs-tests/tests/| |g' | $COLOR) 30*7a7741afSMartin Matuska if [ -z "$CLINE" ]; then 31*7a7741afSMartin Matuska printf "vm${ID}: %s\n" "$LINE" 32*7a7741afSMartin Matuska else 33*7a7741afSMartin Matuska # [vm2: 00:15:54 256] Test: functional/checksum/setup (run as root) [00:00] [PASS] 34*7a7741afSMartin Matuska printf "[vm${ID}: %02d:%02d:%02d %4d] %s\n" \ 35*7a7741afSMartin Matuska "$H" "$M" "$S" "$CTR" "$CLINE" 36*7a7741afSMartin Matuska fi 37*7a7741afSMartin Matuska} 38*7a7741afSMartin Matuska 39*7a7741afSMartin Matuska# called directly on the runner 40*7a7741afSMartin Matuskaif [ -z ${1:-} ]; then 41*7a7741afSMartin Matuska cd "/var/tmp" 42*7a7741afSMartin Matuska source env.txt 43*7a7741afSMartin Matuska SSH=$(which ssh) 44*7a7741afSMartin Matuska TESTS='$HOME/zfs/.github/workflows/scripts/qemu-6-tests.sh' 45*7a7741afSMartin Matuska echo 0 > /tmp/ctr 46*7a7741afSMartin Matuska date "+%s" > /tmp/tsstart 47*7a7741afSMartin Matuska 48*7a7741afSMartin Matuska for i in $(seq 1 $VMs); do 49*7a7741afSMartin Matuska IP="192.168.122.1$i" 50*7a7741afSMartin Matuska daemonize -c /var/tmp -p vm${i}.pid -o vm${i}log.txt -- \ 51*7a7741afSMartin Matuska $SSH zfs@$IP $TESTS $OS $i $VMs $CI_TYPE 52*7a7741afSMartin Matuska # handly line by line and add info prefix 53*7a7741afSMartin Matuska stdbuf -oL tail -fq vm${i}log.txt \ 54*7a7741afSMartin Matuska | while read -r line; do prefix "$i" "$line"; done & 55*7a7741afSMartin Matuska echo $! > vm${i}log.pid 56*7a7741afSMartin Matuska # don't mix up the initial --- Configuration --- part 57*7a7741afSMartin Matuska sleep 0.13 58*7a7741afSMartin Matuska done 59*7a7741afSMartin Matuska 60*7a7741afSMartin Matuska # wait for all vm's to finish 61*7a7741afSMartin Matuska for i in $(seq 1 $VMs); do 62*7a7741afSMartin Matuska tail --pid=$(cat vm${i}.pid) -f /dev/null 63*7a7741afSMartin Matuska pid=$(cat vm${i}log.pid) 64*7a7741afSMartin Matuska rm -f vm${i}log.pid 65*7a7741afSMartin Matuska kill $pid 66*7a7741afSMartin Matuska done 67*7a7741afSMartin Matuska 68*7a7741afSMartin Matuska exit 0 69*7a7741afSMartin Matuskafi 70*7a7741afSMartin Matuska 71*7a7741afSMartin Matuska# this part runs inside qemu vm 72*7a7741afSMartin Matuskaexport PATH="$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin:/usr/local/bin" 73*7a7741afSMartin Matuskacase "$1" in 74*7a7741afSMartin Matuska freebsd*) 75*7a7741afSMartin Matuska sudo kldstat -n zfs 2>/dev/null && sudo kldunload zfs 76*7a7741afSMartin Matuska sudo -E ./zfs/scripts/zfs.sh 77*7a7741afSMartin Matuska TDIR="/usr/local/share/zfs" 78*7a7741afSMartin Matuska ;; 79*7a7741afSMartin Matuska *) 80*7a7741afSMartin Matuska # use xfs @ /var/tmp for all distros 81*7a7741afSMartin Matuska sudo mv -f /var/tmp/*.txt /tmp 82*7a7741afSMartin Matuska sudo mkfs.xfs -fq /dev/vdb 83*7a7741afSMartin Matuska sudo mount -o noatime /dev/vdb /var/tmp 84*7a7741afSMartin Matuska sudo chmod 1777 /var/tmp 85*7a7741afSMartin Matuska sudo mv -f /tmp/*.txt /var/tmp 86*7a7741afSMartin Matuska sudo -E modprobe zfs 87*7a7741afSMartin Matuska TDIR="/usr/share/zfs" 88*7a7741afSMartin Matuska ;; 89*7a7741afSMartin Matuskaesac 90*7a7741afSMartin Matuska 91*7a7741afSMartin Matuska# run functional testings and save exitcode 92*7a7741afSMartin Matuskacd /var/tmp 93*7a7741afSMartin MatuskaTAGS=$2/$3 94*7a7741afSMartin Matuskaif [ "$4" == "quick" ]; then 95*7a7741afSMartin Matuska export RUNFILES="sanity.run" 96*7a7741afSMartin Matuskafi 97*7a7741afSMartin Matuskasudo dmesg -c > dmesg-prerun.txt 98*7a7741afSMartin Matuskamount > mount.txt 99*7a7741afSMartin Matuskadf -h > df-prerun.txt 100*7a7741afSMartin Matuska$TDIR/zfs-tests.sh -vK -s 3GB -T $TAGS 101*7a7741afSMartin MatuskaRV=$? 102*7a7741afSMartin Matuskadf -h > df-postrun.txt 103*7a7741afSMartin Matuskaecho $RV > tests-exitcode.txt 104*7a7741afSMartin Matuskasync 105*7a7741afSMartin Matuskaexit 0 106