summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2023-09-06 13:52:15 +0200
committerFlorian Westphal <fw@strlen.de>2023-09-07 19:35:20 +0200
commit86ccd72e589105b5277cf81f9e8dc1e208d25f45 (patch)
tree1259ebcf3658c1bee7911da7943d2f3855c06da7
parentce4403c185c7c7b15fc044964305cff94f77396e (diff)
tests/shell: move taint check to "test-wrapper.sh"
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>
-rwxr-xr-xtests/shell/helpers/test-wrapper.sh18
-rwxr-xr-xtests/shell/run-tests.sh16
2 files changed, 19 insertions, 15 deletions
diff --git a/tests/shell/helpers/test-wrapper.sh b/tests/shell/helpers/test-wrapper.sh
index bdbe2c37..fee55e5f 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 f52df85b..92c63e35 100755
--- a/tests/shell/run-tests.sh
+++ b/tests/shell/run-tests.sh
@@ -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