From 6761d784a2d6190f1b3681b3e478ac5bd7dbbd2a Mon Sep 17 00:00:00 2001 From: Alexander Yastrebov Date: Thu, 11 Jan 2024 13:40:21 +0100 Subject: [PATCH] test_all.sh: configure fork test timeout Example output: ``` $ ./test_all.sh 2>/dev/null PASS abfrmblr PASS AbstractKamen PASS ags313 PASS alesj PASS algirdasrascius PASS anandmattikopp PASS arjenvaneerde FAIL armandino TIME artpar PASS artsiomkorzun PASS asun PASS baseline PASS berry120 PASS bjhara PASS charlibot PASS coolmineman PASS couragelee PASS criccomini PASS davecom PASS davery22 PASS ddimtirov PASS deemkeen PASS ebarlas PASS entangled90 FAIL fatroom PASS felix19350 PASS filiphr PASS flippingbits PASS fragmede PASS gabrielreid PASS gamlerhart PASS gnmathur PASS hchiorean FAIL hundredwatt PASS imrafaelmerino PASS isolgpus PASS itaske PASS iziamos PASS japplis PASS jgrateron PASS jotschi PASS kevinmcmurtrie PASS kgeri PASS khmarbaise PASS kuduwa-keshavram PASS kumarsaurav123 FAIL lawrey PASS maeda6uiui PASS MeanderingProgrammer PASS merykitty FAIL moysesb PASS mudit-saxena PASS obourgain PASS padreati PASS palmr PASS pedestrianlove PASS phd3 PASS raipc PASS rby PASS richardstartin FAIL roman-r-m PASS royvanrijn PASS rprabhu PASS santanu PASS seijikun PASS semotpan PASS spullara PASS thomaswue PASS truelive FAIL twobiers PASS Ujjwalbharti PASS yavuztas PASS yehwankim23 FAIL yemreinci PASS zerninv ``` --- test_all.sh | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/test_all.sh b/test_all.sh index eff975d..0f86c50 100755 --- a/test_all.sh +++ b/test_all.sh @@ -33,14 +33,47 @@ if [ "$INPUT" = "-h" ] || [ "$#" -gt 1 ]; then exit 1 fi +if [ -t 1 ]; then + GREEN='\033[0;32m' + RED='\033[0;31m' + RESET='\033[0m' +else + GREEN="" + RED="" + RESET="" +fi + +WITH_TIMEOUT="" +if [ -x "$(command -v timeout)" ]; then + WITH_TIMEOUT="timeout -s KILL 5s" +elif [ -x "$(command -v gtimeout)" ]; then # MacOS from `brew install coreutils` + WITH_TIMEOUT="gtimeout -s KILL 5s" +else + echo "$0: timeout command not available, tests may run indefinitely long." 1>&2 +fi + for impl in $(ls calculate_average_*.sh | sort); do noext="${impl%%.sh}" fork=${noext##calculate_average_} - if output=$(./test.sh "$fork" "$INPUT" 2>&1); then - echo "PASS $fork" + # ./test.sh calls ./prepare_$fork.sh e.g. to build native image + # which may take some time. + # Here we run it upfront, assuming that prepare result is cached + # to avoid timeout due to long preparation. + if [ -f "./prepare_$fork.sh" ]; then + if ! output=$("./prepare_$fork.sh" 2>&1); then + echo "$output" 1>&2 + echo "FAIL $fork" + continue + fi + fi + + if output=$($WITH_TIMEOUT ./test.sh "$fork" "$INPUT" 2>&1); then + echo -e "${GREEN}PASS${RESET} $fork" + elif [ $? -eq 137 ]; then + echo -e "${RED}TIME${RESET} $fork" else - echo "FAIL $fork" echo "$output" 1>&2 + echo -e "${RED}FAIL${RESET} $fork" fi done