We will run tests in parallel. That means, we have multiple tests data and results in fly. That becomes simpler, if we move more result data to the test-wrapper and out of "run-tests.sh". Signed-off-by: Thomas Haller <thaller@xxxxxxxxxx> --- tests/shell/helpers/test-wrapper.sh | 18 +++++++++++++++--- tests/shell/run-tests.sh | 16 ++++------------ 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/tests/shell/helpers/test-wrapper.sh b/tests/shell/helpers/test-wrapper.sh index bdbe2c370c6b..1390985c7f32 100755 --- a/tests/shell/helpers/test-wrapper.sh +++ b/tests/shell/helpers/test-wrapper.sh @@ -11,11 +11,15 @@ TESTDIR="$(dirname "$TEST")" printf '%s\n' "$TEST" > "$NFT_TEST_TESTTMPDIR/name" +read tainted_before < /proc/sys/kernel/tainted + rc_test=0 "$TEST" &> "$NFT_TEST_TESTTMPDIR/testout.log" || rc_test=$? $NFT list ruleset > "$NFT_TEST_TESTTMPDIR/ruleset-after" +read tainted_after < /proc/sys/kernel/tainted + DUMPPATH="$TESTDIR/dumps" DUMPFILE="$DUMPPATH/$TESTBASE.nft" @@ -45,6 +49,10 @@ if [ "$rc_test" -ne 77 -a -f "$DUMPFILE" ] ; then fi fi +if [ "$tainted_before" != "$tainted_after" ]; then + echo "$tainted_after" > "$NFT_TEST_TESTTMPDIR/rc-failed-tainted" +fi + rc_exit="$rc_test" if [ -n "$rc_dump" ] && [ "$rc_dump" -ne 0 ] ; then echo "$DUMPFILE" > "$NFT_TEST_TESTTMPDIR/rc-failed-dump" @@ -53,13 +61,17 @@ if [ -n "$rc_dump" ] && [ "$rc_dump" -ne 0 ] ; then # Special exit code to indicate dump diff. rc_exit=124 fi -elif [ "$rc_test" -eq 0 ] ; then - echo "$rc_test" > "$NFT_TEST_TESTTMPDIR/rc-ok" elif [ "$rc_test" -eq 77 ] ; then echo "$rc_test" > "$NFT_TEST_TESTTMPDIR/rc-skipped" +elif [ "$rc_test" -eq 0 -a "$tainted_before" = "$tainted_after" ] ; then + echo "$rc_test" > "$NFT_TEST_TESTTMPDIR/rc-ok" else echo "$rc_test" > "$NFT_TEST_TESTTMPDIR/rc-failed" - if [ "$rc_test" -eq 124 ] ; then + if [ "$rc_test" -eq 0 -a "$tainted_before" != "$tainted_after" ] ; then + # Special exit code to indicate tainted. + rc_exit=123 + elif [ "$rc_test" -eq 124 -o "$rc_test" -eq 123 ] ; then + # These exit codes are reserved rc_exit=125 fi fi diff --git a/tests/shell/run-tests.sh b/tests/shell/run-tests.sh index f88e244f9625..d9ec22f11830 100755 --- a/tests/shell/run-tests.sh +++ b/tests/shell/run-tests.sh @@ -356,15 +356,6 @@ echo "" ok=0 skipped=0 failed=0 -taint=0 - -check_taint() -{ - read taint_now < /proc/sys/kernel/tainted - if [ $taint -ne $taint_now ] ; then - msg_warn "[FAILED] kernel is tainted: $taint -> $taint_now" - fi -} kmem_runs=0 kmemleak_found=0 @@ -406,7 +397,10 @@ check_kmemleak() fi } -check_taint +read kernel_tainted < /proc/sys/kernel/tainted +if [ "$kernel_tainted" -ne 0 ] ; then + msg_warn "[FAILED] kernel is tainted" +fi print_test_header() { local msglevel="$1" @@ -471,7 +465,6 @@ print_test_result() { TESTIDX=0 for testfile in "${TESTS[@]}" ; do - read taint < /proc/sys/kernel/tainted kernel_cleanup ((TESTIDX++)) @@ -489,7 +482,6 @@ for testfile in "${TESTS[@]}" ; do print_test_result "$NFT_TEST_TESTTMPDIR" "$testfile" "$rc_got" - check_taint check_kmemleak done -- 2.41.0