export here=`pwd`
xfile=""
brief_test_summary=false
-err_msg=""
+_err_msg=""
do_report=false
DUMP_OUTPUT=false
-nfs test NFS
-glusterfs test GlusterFS
-cifs test CIFS
+ -9p test 9p
-overlay test overlay
+ -pvfs2 test PVFS2
-tmpfs test TMPFS
+ -ubifs test ubifs
-l line mode diff
-udiff show unified diff (default)
-n show me, do not run tests
group argument is either a name of a tests group to collect from all
the test dirs (e.g. quick) or a name of a tests group to collect from
a specific tests dir in the form of <test dir>/<group name> (e.g. xfs/quick).
+If you want to run all the tests in the test suite, use "-g all" to specify all
+groups.
exclude_file argument refers to a name of a file inside each test directory.
for every test dir where this file is found, the listed test names are
done
grep -v -f $tmp.grep <$tmp.list >$tmp.tmp
mv $tmp.tmp $tmp.list
+ rm -f $tmp.grep
}
fi
# Specified groups to include
- for group in $GROUP_LIST; do
- list=$(get_group_list $group)
- if [ -z "$list" ]; then
- echo "Group \"$group\" is empty or not defined?"
- exit 1
- fi
+ # Note that the CLI processing adds a leading space to the first group
+ # parameter, so we have to catch that here checking for "all"
+ if ! $have_test_arg && [ "$GROUP_LIST" == " all" ]; then
+ # no test numbers, do everything
+ get_all_tests
+ else
+ for group in $GROUP_LIST; do
+ list=$(get_group_list $group)
+ if [ -z "$list" ]; then
+ echo "Group \"$group\" is empty or not defined?"
+ exit 1
+ fi
- for t in $list; do
- grep -s "^$t\$" $tmp.list >/dev/null || \
+ for t in $list; do
+ grep -s "^$t\$" $tmp.list >/dev/null || \
echo "$t" >>$tmp.list
+ done
done
- done
-
- if ! $have_test_arg && [ -z "$GROUP_LIST" ]; then
- # no test numbers, do everything
- get_all_tests
fi
# Specified groups to exclude
# sort the list of tests into numeric order
list=`sort -n $tmp.list | uniq`
- rm -f $tmp.list $tmp.tmp $tmp.grep
+ rm -f $tmp.list
if $randomize
then
-nfs) FSTYP=nfs ;;
-glusterfs) FSTYP=glusterfs ;;
-cifs) FSTYP=cifs ;;
+ -9p) FSTYP=9p ;;
-overlay) FSTYP=overlay; export OVERLAY=true ;;
+ -pvfs2) FSTYP=pvfs2 ;;
-tmpfs) FSTYP=tmpfs ;;
+ -ubifs) FSTYP=ubifs ;;
-g) group=$2 ; shift ;
GROUP_LIST="$GROUP_LIST ${group//,/ }"
shift
done
+elif [ -z "$GROUP_LIST" ]; then
+ # default group list is the auto group. If any other group or test is
+ # specified, we use that instead.
+ GROUP_LIST="auto"
fi
# we need common/rc
fi
}
+_expunge_test()
+{
+ local TEST_ID="$1"
+ if [ -s $tmp.xlist ]; then
+ if grep -q $TEST_ID $tmp.xlist; then
+ echo " [expunged]"
+ return 1
+ fi
+ fi
+ return 0
+}
+
+_init_kmemleak
_prepare_test_list
if $OPTIONS_HAVE_SECTIONS; then
for seq in $list
do
err=false
- err_msg=""
+ _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
echo -n "$seqnum"
if $showme; then
+ _expunge_test $seqnum
+ if [ $? -eq 1 ]; then
+ continue
+ fi
echo
start=0
stop=0
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
+ _expunge_test $seqnum
+ if [ $? -eq 1 ]; then
+ continue
fi
# slashes now in names, sed barfs on them so use grep
touch ${RESULT_DIR}/check_dmesg
fi
if [ "$DUMP_OUTPUT" = true ]; then
- ./$seq 2>&1 | tee $tmp.rawout
+ ./$seq 2>&1 | tee $tmp.out
# Because $? would get tee's return code
sts=${PIPESTATUS[0]}
else
- ./$seq >$tmp.rawout 2>&1
+ ./$seq >$tmp.out 2>&1
sts=$?
fi
$timestamp && _timestamp
stop=`_wallclock`
- _fix_malloc <$tmp.rawout >$tmp.out
- rm -f $tmp.rawout
-
if [ -f core ]
then
- err_msg="[dumped core]"
- echo -n " $err_msg"
+ _err_msg="[dumped core]"
+ echo -n " $_err_msg"
mv core $RESULT_BASE/$seqnum.core
err=true
fi
else
if [ $sts -ne 0 ]
then
- err_msg="[failed, exit status $sts]"
- echo -n " $err_msg"
+ _err_msg="[failed, exit status $sts]"
+ echo -n " $_err_msg"
err=true
fi
if [ ! -f $seq.out ]
" to see the entire diff)"
fi; } | \
sed -e 's/^\(.\)/ \1/'
- err_msg="output mismatch (see $diff $seq.out $seqres.out.bad)"
+ _err_msg="output mismatch (see $diff $seq.out $seqres.out.bad)"
err=true
fi
fi
n_try=`expr $n_try + 1`
_check_filesystems
_check_dmesg || err=true
+ _check_kmemleak || err=true
fi
fi
then
bad="$bad $seqnum"
n_bad=`expr $n_bad + 1`
- quick=false
tc_status="fail"
fi
if $do_report; then
done
interrupt=false
-status=`expr $sum_bad`
+status=`expr $sum_bad != 0`
exit