check: prepare test report generator infrastructure
authorDmitry Monakhov <dmonakhov@openvz.org>
Fri, 3 Mar 2017 08:26:15 +0000 (12:26 +0400)
committerEryu Guan <eguan@redhat.com>
Tue, 7 Mar 2017 11:53:12 +0000 (19:53 +0800)
Save testcase data which later may be used by report generators
- Save failure reason to $err_msg variable
- Save number of notrun tests to $n_notrun counter, similar to
  $n_try,$n_bad

Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
check
common/btrfs
common/rc
common/xfs

diff --git a/check b/check
index 66a349a6a0b5f1449d9a0aaeb73b61011cdae1e2..568a95bdb44bcbc7d4fba4720b00ecf19a1bfcb1 100755 (executable)
--- a/check
+++ b/check
@@ -28,6 +28,7 @@ try=""
 n_bad=0
 sum_bad=0
 bad=""
+n_notrun=0
 notrun=""
 interrupt=true
 diff="diff -u"
@@ -37,6 +38,7 @@ randomize=false
 export here=`pwd`
 xfile=""
 brief_test_summary=false
+err_msg=""
 
 DUMP_OUTPUT=false
 
@@ -368,6 +370,7 @@ _wipe_counters()
 {
        n_try="0"
        n_bad="0"
+       n_notrun="0"
        unset try notrun bad
 }
 
@@ -596,6 +599,7 @@ for section in $HOST_OPTIONS_SECTIONS; do
        for seq in $list
        do
            err=false
+           err_msg=""
            if [ ! -f $seq ]; then
                # Try to get full name in case the user supplied only seq id
                # and the test has a name. A bit of hassle to find really
@@ -629,14 +633,17 @@ for section in $HOST_OPTIONS_SECTIONS; do
 
            echo -n "$seqnum"
 
-               if $showme; then
-                       echo
-                       continue
-               fi
+           if $showme; then
+               echo
+               start=0
+               stop=0
+               n_notrun=`expr $n_notrun + 1`
+               continue
+           fi
 
-               if [ ! -f $seq ]; then
-                       echo " - no such test?"
-               else
+           if [ ! -f $seq ]; then
+               echo " - no such test?"
+           else
                # really going to try and run this one
                #
                rm -f $seqres.out.bad
@@ -684,7 +691,8 @@ for section in $HOST_OPTIONS_SECTIONS; do
 
                if [ -f core ]
                then
-                   echo -n " [dumped core]"
+                   err_msg="[dumped core]"
+                   echo -n " $err_msg"
                    mv core $RESULT_BASE/$seqnum.core
                    err=true
                fi
@@ -695,15 +703,17 @@ for section in $HOST_OPTIONS_SECTIONS; do
                    $timestamp && echo " [not run]" && echo -n "        $seqnum -- "
                    cat $seqres.notrun
                    notrun="$notrun $seqnum"
+                   n_notrun=`expr $n_notrun + 1`
                else
                    if [ $sts -ne 0 ]
                    then
-                       echo -n " [failed, exit status $sts]"
+                       err_msg="[failed, exit status $sts]"
+                       echo -n " $err_msg"
                        err=true
                    fi
                    if [ ! -f $seq.out ]
                    then
-                       echo " - no qualified output"
+                       _dump_err "no qualified output"
                        err=true
                    else
 
@@ -733,6 +743,7 @@ for section in $HOST_OPTIONS_SECTIONS; do
                                                " to see the entire diff)"
                                fi; } | \
                                sed -e 's/^\(.\)/    \1/'
+                           err_msg="output mismatch (see $diff $seq.out $seqres.out.bad)"
                            err=true
                        fi
                    fi
index b342644cf1e655f7fdd9dd515a746c055c0ed1bc..fd762ef27d1319dcc40f76bf709674f144c8afb9 100644 (file)
@@ -105,9 +105,7 @@ _check_btrfs_filesystem()
        if [ -f ${RESULT_DIR}/require_scratch.require_qgroup_report ]; then
                $BTRFS_UTIL_PROG check $device --qgroup-report > $tmp.qgroup_report 2>&1
                if grep -qE "Counts for qgroup.*are different" $tmp.qgroup_report ; then
-                       echo "_check_btrfs_filesystem: filesystem on $device has wrong qgroup numbers (see $seqres.full)"
-                       echo "_check_btrfs_filesystem: filesystem on $device has wrong qgroup numbers" \
-                               >> $seqres.full
+                       _log_err "_check_btrfs_filesystem: filesystem on $device has wrong qgroup numbers"
                        echo "*** qgroup_report.$FSTYP output ***"      >>$seqres.full
                        cat $tmp.qgroup_report                          >>$seqres.full
                        echo "*** qgroup_report.$FSTYP output ***"      >>$seqres.full
@@ -117,9 +115,7 @@ _check_btrfs_filesystem()
 
        $BTRFS_UTIL_PROG check $device >$tmp.fsck 2>&1
        if [ $? -ne 0 ]; then
-               echo "_check_btrfs_filesystem: filesystem on $device is inconsistent (see $seqres.full)"
-
-               echo "_check_btrfs_filesystem: filesystem on $device is inconsistent" >>$seqres.full
+               _log_err "_check_btrfs_filesystem: filesystem on $device is inconsistent"
                echo "*** fsck.$FSTYP output ***"       >>$seqres.full
                cat $tmp.fsck                           >>$seqres.full
                echo "*** end fsck.$FSTYP output"       >>$seqres.full
index 109325df714895d9c8c999d811a376d0f469f2f8..cbe1522d43f31970da26d2ab6d3f523a6521602a 100644 (file)
--- a/common/rc
+++ b/common/rc
@@ -115,6 +115,25 @@ then
     fi
 fi
 
+_dump_err()
+{
+    err_msg="$*"
+    echo "$err_msg"
+}
+
+_dump_err2()
+{
+    err_msg="$*"
+    >2& echo "$err_msg"
+}
+
+_log_err()
+{
+    err_msg="$*"
+    echo "$err_msg" | tee -a $seqres.full
+    echo "(see $seqres.full for details)"
+}
+
 # make sure we have a standard umask
 umask 022
 
@@ -1121,7 +1140,9 @@ _repair_scratch_fs()
                _scratch_xfs_repair "$@" 2>&1
                res=$?
        fi
-       test $res -ne 0 && >&2 echo "xfs_repair failed, err=$res"
+       if [ $res -ne 0 ]; then
+               _dump_err2 "xfs_repair failed, err=$res"
+       fi
        return $res
         ;;
     *)
@@ -1133,7 +1154,7 @@ _repair_scratch_fs()
                res=0
                ;;
        *)
-               >&2 echo "fsck.$FSTYP failed, err=$res"
+               _dump_err2 "fsck.$FSTYP failed, err=$res"
                ;;
        esac
        return $res
@@ -2276,7 +2297,7 @@ _mount_or_remount_rw()
                        _overlay_mount $device $mountpoint
                fi
                if [ $? -ne 0 ]; then
-                       echo "!!! failed to remount $device on $mountpoint"
+                       _dump_err "!!! failed to remount $device on $mountpoint"
                        return 0 # ok=0
                fi
        else
@@ -2310,9 +2331,7 @@ _check_generic_filesystem()
     fsck -t $FSTYP $FSCK_OPTIONS $device >$tmp.fsck 2>&1
     if [ $? -ne 0 ]
     then
-        echo "_check_generic_filesystem: filesystem on $device is inconsistent (see $seqres.full)"
-
-        echo "_check_generic filesystem: filesystem on $device is inconsistent" >>$seqres.full
+       _log_err "_check_generic_filesystem: filesystem on $device is inconsistent"
         echo "*** fsck.$FSTYP output ***"      >>$seqres.full
         cat $tmp.fsck                          >>$seqres.full
         echo "*** end fsck.$FSTYP output"      >>$seqres.full
@@ -3191,7 +3210,7 @@ _check_dmesg()
             -e "general protection fault:" \
             $seqres.dmesg
        if [ $? -eq 0 ]; then
-               echo "_check_dmesg: something found in dmesg (see $seqres.dmesg)"
+               _dump_err "_check_dmesg: something found in dmesg (see $seqres.dmesg)"
                return 1
        else
                rm -f $seqres.dmesg
index 4bd8465bd318971012f446e10bb53bc307a665e7..0f0825bc62dd07826748558d6db9e5709e12049a 100644 (file)
@@ -333,7 +333,7 @@ _check_xfs_filesystem()
                if [ -n "$TEST_XFS_SCRUB" ] && [ -x "$XFS_SCRUB_PROG" ]; then
                        "$XFS_SCRUB_PROG" $scrubflag -vd $device >>$seqres.full
                        if [ $? -ne 0 ]; then
-                               echo "filesystem on $device failed scrub (see $seqres.full)"
+                               _log_err "filesystem on $device failed scrub"
                                ok=0
                        fi
                fi
@@ -344,9 +344,7 @@ _check_xfs_filesystem()
        $XFS_LOGPRINT_PROG -t $extra_log_options $device 2>&1 \
                | tee $tmp.logprint | grep -q "<CLEAN>"
        if [ $? -ne 0 -a "$HOSTOS" = "Linux" ]; then
-               echo "_check_xfs_filesystem: filesystem on $device has dirty log (see $seqres.full)"
-
-               echo "_check_xfs_filesystem: filesystem on $device has dirty log"   >>$seqres.full
+               _log_err "_check_xfs_filesystem: filesystem on $device has dirty log"
                echo "*** xfs_logprint -t output ***"   >>$seqres.full
                cat $tmp.logprint                       >>$seqres.full
                echo "*** end xfs_logprint output"      >>$seqres.full
@@ -362,9 +360,7 @@ _check_xfs_filesystem()
                        _fix_malloc >$tmp.fs_check
        fi
        if [ -s $tmp.fs_check ]; then
-               echo "_check_xfs_filesystem: filesystem on $device is inconsistent (c) (see $seqres.full)"
-
-               echo "_check_xfs_filesystem: filesystem on $device is inconsistent" >>$seqres.full
+               _log_err "_check_xfs_filesystem: filesystem on $device is inconsistent (c)"
                echo "*** xfs_check output ***"         >>$seqres.full
                cat $tmp.fs_check                       >>$seqres.full
                echo "*** end xfs_check output"         >>$seqres.full
@@ -374,9 +370,7 @@ _check_xfs_filesystem()
 
        $XFS_REPAIR_PROG -n $extra_options $extra_log_options $extra_rt_options $device >$tmp.repair 2>&1
        if [ $? -ne 0 ]; then
-               echo "_check_xfs_filesystem: filesystem on $device is inconsistent (r) (see $seqres.full)"
-
-               echo "_check_xfs_filesystem: filesystem on $device is inconsistent" >>$seqres.full
+               _log_err "_check_xfs_filesystem: filesystem on $device is inconsistent (r)"
                echo "*** xfs_repair -n output ***"     >>$seqres.full
                cat $tmp.repair | _fix_malloc           >>$seqres.full
                echo "*** end xfs_repair output"        >>$seqres.full
@@ -389,9 +383,7 @@ _check_xfs_filesystem()
        if [ -n "$TEST_XFS_REPAIR_REBUILD" ]; then
                $XFS_REPAIR_PROG $extra_options $extra_log_options $extra_rt_options $device >$tmp.repair 2>&1
                if [ $? -ne 0 ]; then
-                       echo "_check_xfs_filesystem: filesystem on $device is inconsistent (rebuild) (see $seqres.full)"
-
-                       echo "_check_xfs_filesystem: filesystem on $device is inconsistent (rebuild)" >>$seqres.full
+                       _log_err "_check_xfs_filesystem: filesystem on $device is inconsistent (rebuild)"
                        echo "*** xfs_repair output ***"        >>$seqres.full
                        cat $tmp.repair | _fix_malloc           >>$seqres.full
                        echo "*** end xfs_repair output"        >>$seqres.full
@@ -402,9 +394,7 @@ _check_xfs_filesystem()
 
                $XFS_REPAIR_PROG -n $extra_options $extra_log_options $extra_rt_options $device >$tmp.repair 2>&1
                if [ $? -ne 0 ]; then
-                       echo "_check_xfs_filesystem: filesystem on $device is inconsistent (rebuild-reverify) (see $seqres.full)"
-
-                       echo "_check_xfs_filesystem: filesystem on $device is inconsistent (rebuild-reverify)" >>$seqres.full
+                       _log_err "_check_xfs_filesystem: filesystem on $device is inconsistent (rebuild-reverify)"
                        echo "*** xfs_repair -n output ***"     >>$seqres.full
                        cat $tmp.repair | _fix_malloc           >>$seqres.full
                        echo "*** end xfs_repair output"        >>$seqres.full