check: check dmesg log after each test

Check kernel BUG, WARNING etc. in dmesg log after each test and fail the
test if something is found. dmesg log can be found at result dir.

This check now depends on the logging of running tests in dmesg, so this
check can be done without clearing dmesg buffer nor dumping all dmesg to
a file, which can potentially eat all free space on testing host.

Signed-off-by: Eryu Guan <eguan@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
Eryu Guan
2015-01-21 16:19:33 +11:00
committed by Dave Chinner
parent 39cbe0484c
commit 47e5d7d2bb
+29
View File
@@ -397,6 +397,32 @@ _check_filesystems()
fi
}
_check_dmesg()
{
if [ ! -f ${RESULT_DIR}/check_dmesg ]; then
return
fi
rm -f ${RESULT_DIR}/check_dmesg
# search the dmesg log of last run of $seqnum for possible failures
# use sed \cregexpc address type, since $seqnum contains "/"
dmesg | tac | sed -ne "0,\#run fstests $seqnum at $date_time#p" | \
tac >$seqres.dmesg
grep -q -e "kernel BUG at" \
-e "WARNING:" \
-e "BUG:" \
-e "Oops:" \
-e "possible recursive locking detected" \
$seqres.dmesg
if [ $? -eq 0 ]; then
echo "_check_dmesg: something found in dmesg (see $seqres.dmesg)"
err=true
else
rm -f $seqres.dmesg
fi
}
_prepare_test_list
if $OPTIONS_HAVE_SECTIONS; then
@@ -564,6 +590,8 @@ for section in $HOST_OPTIONS_SECTIONS; do
if [ -w /dev/kmsg ]; then
date_time=`date +"%F %T"`
echo "run fstests $seqnum at $date_time" > /dev/kmsg
# _check_dmesg depends on this log in dmesg
touch ${RESULT_DIR}/check_dmesg
fi
./$seq >$tmp.rawout 2>&1
sts=$?
@@ -630,6 +658,7 @@ for section in $HOST_OPTIONS_SECTIONS; do
try="$try $seqnum"
n_try=`expr $n_try + 1`
_check_filesystems
_check_dmesg
fi
fi