aboutsummaryrefslogtreecommitdiffstats
path: root/check
diff options
context:
space:
mode:
authorDmitry Monakhov <dmonakhov@openvz.org>2017-03-03 12:26:16 +0400
committerEryu Guan <eguan@redhat.com>2017-03-07 19:53:31 +0800
commitf9fde7db2fa504aecbe379a535fa1a394d3f1b32 (patch)
tree5906a4549f9f3ec4abd14d7d7a1ac85b1bbdfe64 /check
parente11c5199183e7c7debde7684b79e8afc5c65c396 (diff)
downloadxfstests-dev-f9fde7db2fa504aecbe379a535fa1a394d3f1b32.tar.gz
report: Add xunit format report generator
xunit[1]/junit[2] are well known report formats for tests frameworks which supported by most of test CI frameworks(such as Jenkins [3], Bamboo [4], Avocado [5]) Basically this is just xml document which can be easily parsed later by external tools. EXAMPLE: <?xml version="1.0" encoding="UTF-8"?> <testsuite name="xfstests" errors="0" skipped="1" tests="2" time="7" hostname="alice" timestamp="2017-02-21T15:15:06" > <properties> <property name="SECTION" value="ext4"/> <property name="FSTYP" value="ext4"/> <property name="MOUNT_OPTIONS" value="-o acl,user_xattr "/> <property name="HOST_OPTIONS" value="/devel/xfstests-dev.git/configs/alice.config"/> <property name="XFS_MKFS_OPTIONS" value="-bsize=4096"/> <property name="TIME_FACTOR" value="1"/> <property name="LOAD_FACTOR" value="1"/> <property name="TEST_DIR" value="/mnt/test"/> <property name="TEST_DEV" value="/dev/ram0"/> <property name="SCRATCH_DEV" value="/dev/ram1"/> <property name="SCRATCH_MNT" value="/mnt/scratch"/> <property name="OVERLAY_UPPER_DIR" value="upper"/> <property name="OVERLAY_LOWER_DIR" value="lower"/> <property name="OVERLAY_WORK_DIR" value="work"/> </properties> <testcase classname="xfstests.ext4" name="generic/001" time="5"> </testcase> <testcase classname="xfstests.ext4" name="generic/010" time="1"> <skipped message="src/dbtest not built" /> </testcase> </testsuite> Footnotes: [1] https://xunit.github.io/docs/format-xml-v2.html [2] http://help.catchsoftware.com/display/ET/JUnit+Format [3] https://jenkins.io [4] https://www.atlassian.com/software/bamboo [5] https://github.com/avocado-framework/avocado Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org> Reviewed-by: Eryu Guan <eguan@redhat.com> Signed-off-by: Eryu Guan <eguan@redhat.com>
Diffstat (limited to 'check')
-rwxr-xr-xcheck38
1 files changed, 30 insertions, 8 deletions
diff --git a/check b/check
index 568a95bdb4..c2c22e2386 100755
--- a/check
+++ b/check
@@ -39,7 +39,7 @@ export here=`pwd`
xfile=""
brief_test_summary=false
err_msg=""
-
+do_report=false
DUMP_OUTPUT=false
# start the initialisation work now
@@ -54,7 +54,7 @@ export DIFF_LENGTH=${DIFF_LENGTH:=10}
# 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"
@@ -75,6 +75,7 @@ check options
-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
@@ -295,7 +296,10 @@ while [ $# -gt 0 ]; do
-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#*=} ;;
@@ -380,7 +384,12 @@ _wrapup()
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 \
@@ -431,6 +440,9 @@ _wrapup()
echo "Passed all $n_try tests" >>$tmp.summary
fi
echo "" >>$tmp.summary
+ if $do_report; then
+ _make_section_report
+ fi
needwrap=false
fi
@@ -519,6 +531,7 @@ for section in $HOST_OPTIONS_SECTIONS; do
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
@@ -623,11 +636,12 @@ for section in $HOST_OPTIONS_SECTIONS; do
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
@@ -638,9 +652,12 @@ for section in $HOST_OPTIONS_SECTIONS; do
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
@@ -704,6 +721,7 @@ for section in $HOST_OPTIONS_SECTIONS; do
cat $seqres.notrun
notrun="$notrun $seqnum"
n_notrun=`expr $n_notrun + 1`
+ tc_status="notrun"
else
if [ $sts -ne 0 ]
then
@@ -762,10 +780,14 @@ for section in $HOST_OPTIONS_SECTIONS; do
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