xfile=""
brief_test_summary=false
err_msg=""
-
+do_report=false
DUMP_OUTPUT=false
# start the initialisation work now
# by default don't output timestamps
timestamp=${TIMESTAMP:=false}
-rm -f $tmp.list $tmp.tmp $tmp.grep $here/$iam.out $tmp.xlist
+rm -f $tmp.list $tmp.tmp $tmp.grep $here/$iam.out $tmp.xlist $tmp.report.*
SRC_GROUPS="generic shared"
export SRC_DIR="tests"
check options
-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
-r randomize test order
-d dump test output to stdout
-b brief test summary
+ -R fmt[,fmt] generate report in formats specified. Supported format: [xunit]
--large-fs optimise scratch device for large filesystems
-s section run only specified section from config file
-S section exclude the specified section from the config file
done
grep -v -f $tmp.grep <$tmp.list >$tmp.tmp
mv $tmp.tmp $tmp.list
+ rm -f $tmp.grep
}
# 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
-\? | -h | --help) usage ;;
-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//,/ }"
-T) timestamp=true ;;
-d) DUMP_OUTPUT=true ;;
-b) brief_test_summary=true;;
-
+ -R) report_fmt=$2 ; shift ;
+ REPORT_LIST="$REPORT_LIST ${report_fmt//,/ }"
+ do_report=true
+ ;;
--large-fs) export LARGE_SCRATCH_DEV=yes ;;
--extra-space=*) export SCRATCH_DEV_EMPTY_SPACE=${r#*=} ;;
check="$RESULT_BASE/check"
if $showme; then
- :
+ if $needwrap; then
+ if $do_report; then
+ _make_section_report
+ fi
+ needwrap=false
+ fi
elif $needwrap; then
if [ -f $check.time -a -f $tmp.time ]; then
cat $check.time $tmp.time \
echo "Passed all $n_try tests" >>$tmp.summary
fi
echo "" >>$tmp.summary
+ if $do_report; then
+ _make_section_report
+ fi
needwrap=false
fi
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
echo "SECTION -- $section"
fi
+ sect_start=`_wallclock`
if $RECREATE_TEST_DEV || [ "$OLD_FSTYP" != "$FSTYP" ]; then
echo "RECREATING -- $FSTYP on $TEST_DEV"
_test_unmount 2> /dev/null
group=`dirname $seq`
if $OPTIONS_HAVE_SECTIONS; then
export RESULT_DIR=`echo $group | sed -e "s;$SRC_DIR;${RESULT_BASE}/$section;"`
- seqres="$RESULT_BASE/$section/$seqnum"
+ REPORT_DIR="$RESULT_BASE/$section"
else
export RESULT_DIR=`echo $group | sed -e "s;$SRC_DIR;$RESULT_BASE;"`
- seqres="$RESULT_BASE/$seqnum"
+ REPORT_DIR="$RESULT_BASE"
fi
+ seqres="$REPORT_DIR/$seqnum"
mkdir -p $RESULT_DIR
echo -n "$seqnum"
if $showme; then
+ _expunge_test $seqnum
+ if [ $? -eq 1 ]; then
+ continue
+ fi
echo
start=0
stop=0
n_notrun=`expr $n_notrun + 1`
+ if $do_report; then
+ _make_testcase_report "list"
+ fi
continue
fi
-
+ tc_status="pass"
if [ ! -f $seq ]; then
echo " - no such test?"
else
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
cat $seqres.notrun
notrun="$notrun $seqnum"
n_notrun=`expr $n_notrun + 1`
+ tc_status="notrun"
else
if [ $sts -ne 0 ]
then
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
+ _make_testcase_report "$tc_status"
fi
-
seq="after_$seqnum"
done
+ sect_stop=`_wallclock`
interrupt=false
_wrapup
interrupt=true
done
interrupt=false
-status=`expr $sum_bad`
+status=`expr $sum_bad != 0`
exit