From 0b1e8abd4a6dbce54bcc5d0467e58966e41e7eb8 Mon Sep 17 00:00:00 2001 From: Dave Chinner Date: Fri, 15 Mar 2013 12:28:05 +0000 Subject: [PATCH] xfstests: Reintroduce configurable test expunging. It is definitely handy to be able to disabdle certain tests (e.g. tests that are known to hang or crash the test machine on certain kernels), so re-introducing the capability of avoiding certain tests just by placing them in a file is useful. Introduce a command line option to specify the expunged file name. The file will exist in each tests/* sub-directory so that only the testname is required, and can be managed independently. The use of a command line parameter allows multiple expunge files to exist simultaneously in the one xfstests tree which simplifies management of a source repository used for multiple versions of a distro. Typical usage: $ cat tests/generic/3.0-stable-avoid 280 $ sudo ./check -X 3.0-stable-avoid generic/280 FSTYP -- xfs (debug) PLATFORM -- Linux/x86_64 test-1 3.0.39-dgc+ MKFS_OPTIONS -- -f -bsize=4096 /dev/vdb MOUNT_OPTIONS -- /dev/vdb /mnt/scratch generic/280 [expunged] Passed all 0 tests $ Eventually we should be able to automate setting up expunged files based on distro release or kernel version through this infrastructure. Signed-off-by: Dave Chinner Reviewed-by: Phil White Signed-off-by: Rich Johnston --- check | 59 ++++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 44 insertions(+), 15 deletions(-) diff --git a/check b/check index cc426db0b..17bc004dc 100755 --- a/check +++ b/check @@ -34,6 +34,7 @@ have_test_arg=false randomize=false here=`pwd` FSTYP=xfs +xfile="" SUPPORTED_TESTS="[0-9][0-9][0-9] [0-9][0-9][0-9][0-9]" SRC_GROUPS="generic shared" @@ -72,6 +73,7 @@ check options testlist options -g group[,group...] include tests from these groups -x group[,group...] exclude tests from these groups + -X file exclude individual tests [testlist] include tests matching names in testlist ' exit 0 @@ -110,6 +112,30 @@ get_all_tests() done } +# takes the list of tests to run in $tmp.list, and removes the tests passed to +# the function from that list. +trim_test_list() +{ + test_list="$*" + + rm -f $tmp.grep + numsed=0 + for t in $test_list + do + if [ $numsed -gt 100 ]; then + grep -v -f $tmp.grep <$tmp.list >$tmp.tmp + mv $tmp.tmp $tmp.list + numsed=0 + rm -f $tmp.grep + fi + echo "^$t\$" >>$tmp.grep + numsed=`expr $numsed + 1` + done + grep -v -f $tmp.grep <$tmp.list >$tmp.tmp + mv $tmp.tmp $tmp.list +} + + _wallclock() { date "+%H %M %S" | $AWK_PROG '{ print $1*3600 + $2*60 + $3 }' @@ -124,7 +150,7 @@ _timestamp() # start the initialisation work now _setenvironment -rm -f $tmp.list $tmp.tmp $tmp.grep $here/$iam.out +rm -f $tmp.list $tmp.tmp $tmp.grep $here/$iam.out $tmp.xlist # Autodetect fs type based on what's on $TEST_DEV if [ "$HOSTOS" == "Linux" ]; then @@ -177,21 +203,16 @@ while [ $# -gt 0 ]; do exit 1 fi - rm -f $tmp.grep - numsed=0 - for t in $group_list - do - if [ $numsed -gt 100 ]; then - grep -v -f $tmp.grep <$tmp.list >$tmp.tmp - mv $tmp.tmp $tmp.list - numsed=0 - rm -f $tmp.grep - fi - echo "^$t\$" >>$tmp.grep - numsed=`expr $numsed + 1` + trim_test_list $group_list + ;; + + -X) xfile=$2; shift ; + for d in $SRC_GROUPS $FSTYP; do + [ -f $SRC_DIR/$d/$xfile ] || continue + for f in `cat $SRC_DIR/$d/$xfile`; do + echo $d/$f >> $tmp.xlist + done done - grep -v -f $tmp.grep <$tmp.list >$tmp.tmp - mv $tmp.tmp $tmp.list ;; -l) diff="diff" ;; @@ -413,6 +434,14 @@ do # rm -f $seqres.out.bad + # check if we really should run it + if [ -s $tmp.xlist ]; then + if grep $seqnum $tmp.xlist > /dev/null 2>&1 ; then + echo " [expunged]" + continue + fi + fi + # slashes now in names, sed barfs on them so use grep lasttime=`grep -w ^$seq check.time | awk '// {print $2}'` if [ "X$lasttime" != X ]; then -- 2.51.0