]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
tests/shell: move taint check to "test-wrapper.sh"
authorThomas Haller <thaller@redhat.com>
Wed, 6 Sep 2023 11:52:15 +0000 (13:52 +0200)
committerFlorian Westphal <fw@strlen.de>
Thu, 7 Sep 2023 17:35:20 +0000 (19:35 +0200)
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@redhat.com>
Signed-off-by: Florian Westphal <fw@strlen.de>
tests/shell/helpers/test-wrapper.sh
tests/shell/run-tests.sh

index bdbe2c370c6b47874c57950e87a7d66d7aad52ff..fee55e5f9df5ac81950bfaac8acef93f6b052e8d 100755 (executable)
@@ -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
index f52df85b0e4394f532dc43a7100d51ca9e7408ec..92c63e354b96c2ff920ab70231b2b54f54cf4107 100755 (executable)
@@ -351,15 +351,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
@@ -401,7 +392,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"
@@ -463,7 +457,6 @@ print_test_result() {
 
 TESTIDX=0
 for testfile in "${TESTS[@]}" ; do
-       read taint < /proc/sys/kernel/tainted
        kernel_cleanup
 
        ((TESTIDX++))
@@ -481,7 +474,6 @@ for testfile in "${TESTS[@]}" ; do
 
        print_test_result "$NFT_TEST_TESTTMPDIR" "$testfile" "$rc_got"
 
-       check_taint
        check_kmemleak
 done