@@ -9,11 +9,15 @@ TEST="$1"
TESTBASE="$(basename "$TEST")"
TESTDIR="$(dirname "$TEST")"
+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"
@@ -43,6 +47,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"
@@ -51,13 +59,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
@@ -296,15 +296,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
@@ -346,7 +337,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"
@@ -410,7 +404,6 @@ print_test_result() {
}
for testfile in "${TESTS[@]}" ; do
- read taint < /proc/sys/kernel/tainted
kernel_cleanup
# We also create and export a test-specific temporary directory.
@@ -424,7 +417,6 @@ for testfile in "${TESTS[@]}" ; do
print_test_result "$NFT_TEST_TESTTMPDIR" "$testfile" "$rc_got"
- check_taint
check_kmemleak
done
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> --- tests/shell/helpers/test-wrapper.sh | 18 +++++++++++++++--- tests/shell/run-tests.sh | 16 ++++------------ 2 files changed, 19 insertions(+), 15 deletions(-)