From 47e5d7d2bb174c91c3e4a63ff0a206148a5eaf1b Mon Sep 17 00:00:00 2001 From: Eryu Guan Date: Wed, 21 Jan 2015 16:19:33 +1100 Subject: [PATCH] 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 Reviewed-by: Dave Chinner Signed-off-by: Dave Chinner --- check | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/check b/check index 3d42a8ba..0830e0c3 100755 --- a/check +++ b/check @@ -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 -- 2.39.5