qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: qemu-devel@nongnu.org
Cc: "Kevin Wolf" <kwolf@redhat.com>,
	qemu-arm@nongnu.org, "Alex Bennée" <alex.bennee@linaro.org>,
	"open list:Block layer core" <qemu-block@nongnu.org>,
	"Max Reitz" <mreitz@redhat.com>
Subject: [Qemu-devel] [PATCH v1 22/23] tests/qemu-iotests: re-format output to for make check-block
Date: Thu,  9 May 2019 17:59:10 +0100	[thread overview]
Message-ID: <20190509165912.10512-23-alex.bennee@linaro.org> (raw)
In-Reply-To: <20190509165912.10512-1-alex.bennee@linaro.org>

This attempts to clean-up the output to better match the output of the
rest of the QEMU check system. This includes:

  - formatting as "  TEST    iotest: nnn"
  - calculating time diff at the end
  - only dumping config on failure

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20190503143904.31211-1-alex.bennee@linaro.org>
---
 tests/qemu-iotests/check | 101 +++++++++++++++++++++++----------------
 1 file changed, 61 insertions(+), 40 deletions(-)

diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check
index 922c5d1d3d3..fb239967a32 100755
--- a/tests/qemu-iotests/check
+++ b/tests/qemu-iotests/check
@@ -27,6 +27,7 @@ bad=""
 notrun=""
 casenotrun=""
 interrupt=true
+pretty=false
 
 # by default don't output timestamps
 timestamp=${TIMESTAMP:=false}
@@ -88,6 +89,22 @@ _full_platform_details()
     echo "$os/$platform $host $kernel"
 }
 
+_full_env_details()
+{
+    cat <<EOF
+QEMU          -- "$QEMU_PROG" $QEMU_OPTIONS
+QEMU_IMG      -- "$QEMU_IMG_PROG" $QEMU_IMG_OPTIONS
+QEMU_IO       -- "$QEMU_IO_PROG" $QEMU_IO_OPTIONS
+QEMU_NBD      -- "$QEMU_NBD_PROG" $QEMU_NBD_OPTIONS
+IMGFMT        -- $FULL_IMGFMT_DETAILS
+IMGPROTO      -- $IMGPROTO
+PLATFORM      -- $FULL_HOST_DETAILS
+TEST_DIR      -- $TEST_DIR
+SOCKET_SCM_HELPER -- $SOCKET_SCM_HELPER
+
+EOF
+}
+
 # $1 = prog to look for
 set_prog_path()
 {
@@ -256,6 +273,7 @@ other options
     -o options          -o options to pass to qemu-img create/convert
     -T                  output timestamps
     -c mode             cache mode
+    -pretty             pretty print output for make check
 
 testlist options
     -g group[,group...]        include tests from these groups
@@ -403,7 +421,10 @@ testlist options
                 command -v xxdiff >/dev/null 2>&1 && diff=xxdiff
             fi
             ;;
-
+        -pretty)   # pretty print output
+            pretty=true
+            xpand=false
+            ;;
         -n)        # show me, don't do it
             showme=true
             xpand=false
@@ -633,12 +654,6 @@ _wallclock()
     date "+%H %M %S" | awk '{ print $1*3600 + $2*60 + $3 }'
 }
 
-_timestamp()
-{
-    now=$(date "+%T")
-    printf %s " [$now]"
-}
-
 _wrapup()
 {
     if $showme
@@ -704,23 +719,25 @@ END        { if (NR > 0) {
 
 trap "_wrapup; exit \$status" 0 1 2 3 15
 
+# Report the test result, optionally pretty printing the result
+# args: sequence, results
+_report_test_result()
+{
+    if $pretty; then
+        echo "  TEST    iotest: $1 $2"
+    else
+        echo "$1 $2"
+    fi
+}
+
 [ -f $TIMESTAMP_FILE ] || touch $TIMESTAMP_FILE
 
 FULL_IMGFMT_DETAILS=$(_full_imgfmt_details)
 FULL_HOST_DETAILS=$(_full_platform_details)
 
-cat <<EOF
-QEMU          -- "$QEMU_PROG" $QEMU_OPTIONS
-QEMU_IMG      -- "$QEMU_IMG_PROG" $QEMU_IMG_OPTIONS
-QEMU_IO       -- "$QEMU_IO_PROG" $QEMU_IO_OPTIONS
-QEMU_NBD      -- "$QEMU_NBD_PROG" $QEMU_NBD_OPTIONS
-IMGFMT        -- $FULL_IMGFMT_DETAILS
-IMGPROTO      -- $IMGPROTO
-PLATFORM      -- $FULL_HOST_DETAILS
-TEST_DIR      -- $TEST_DIR
-SOCKET_SCM_HELPER -- $SOCKET_SCM_HELPER
-
-EOF
+if ! $pretty; then
+    _full_env_details
+fi
 
 seq="check"
 
@@ -728,8 +745,10 @@ seq="check"
 
 for seq in $list
 do
-    err=false
-    printf %s "$seq"
+    err=false     # error flag
+    reason=""     # reason for error
+    results=""    # results for non-error/skip
+
     if [ -n "$TESTS_REMAINING_LOG" ] ; then
         sed -e "s/$seq//" -e 's/  / /' -e 's/^ *//' $TESTS_REMAINING_LOG > $TESTS_REMAINING_LOG.tmp
         mv $TESTS_REMAINING_LOG.tmp $TESTS_REMAINING_LOG
@@ -738,7 +757,6 @@ do
 
     if $showme
     then
-        echo
         continue
     elif [ -f expunged ] && $expunge && egrep "^$seq([         ]|\$)" expunged >/dev/null
     then
@@ -753,17 +771,11 @@ do
         # really going to try and run this one
         #
         rm -f $seq.out.bad
-        lasttime=$(sed -n -e "/^$seq /s/.* //p" <$TIMESTAMP_FILE)
-        if [ "X$lasttime" != X ]; then
-                printf %s " ${lasttime}s ..."
-        else
-                printf "        "        # prettier output with timestamps.
-        fi
         rm -f core $seq.notrun
         rm -f $seq.casenotrun
 
         start=$(_wallclock)
-        $timestamp && printf %s "        [$(date "+%T")]"
+        $timestamp && echo -n "$seq [$(date "+%T")] ->"
 
         if [ "$(head -n 1 "$source_iotests/$seq")" == "#!/usr/bin/env python" ]; then
             run_command="$PYTHON $seq"
@@ -781,26 +793,24 @@ do
                     $run_command >$tmp.out 2>&1)
         fi
         sts=$?
-        $timestamp && _timestamp
+        $timestamp && echo " [$(date "+%T")]"
         stop=$(_wallclock)
 
         if [ -f core ]
         then
-            printf " [dumped core]"
             mv core $seq.core
+            reason="[dumped core] $seq.core"
             err=true
         fi
 
         if [ -f $seq.notrun ]
         then
-            $timestamp || printf " [not run] "
-            $timestamp && echo " [not run]" && printf %s "        $seq -- "
-            cat $seq.notrun
-            notrun="$notrun $seq"
+            # overwrites timestamp output
+            results="[not run] $(cat $seq.notrun)"
         else
             if [ $sts -ne 0 ]
             then
-                printf %s " [failed, exit status $sts]"
+                reason=$(printf %s "[failed, exit status $sts]")
                 err=true
             fi
 
@@ -821,22 +831,29 @@ do
 
             if [ ! -f "$reference" ]
             then
-                echo " - no qualified output"
+                reason=" - no qualified output"
                 err=true
             else
                 if diff -w "$reference" $tmp.out >/dev/null 2>&1
                 then
-                    echo ""
                     if $err
                     then
                         :
                     else
-                        echo "$seq $(expr $stop - $start)" >>$tmp.time
+                        lasttime=$(sed -n -e "/^$seq /s/.* //p" <$TIMESTAMP_FILE)
+                        thistime=$(expr $stop - $start)
+                        echo "$seq $thistime" >>$tmp.time
+
+                        if [ "X$lasttime" != X ]; then
+                            results="${results}${thistime}s (last ${lasttime}s)"
+                        else
+                            results="${results}${thistime}s"
+                        fi
                     fi
                 else
-                    echo " - output mismatch (see $seq.out.bad)"
                     mv $tmp.out $seq.out.bad
                     $diff -w "$reference" "$PWD"/$seq.out.bad
+                    reason=" - output mismatch (see $seq.out.bad)"
                     err=true
                 fi
             fi
@@ -852,9 +869,13 @@ do
     #
     if $err
     then
+        _report_test_result $seq "FAILED $reason"
+        _full_env_details
         bad="$bad $seq"
         n_bad=$(expr $n_bad + 1)
         quick=false
+    else
+        _report_test_result $seq "$results"
     fi
     [ -f $seq.notrun ] || try=$(expr $try + 1)
 
-- 
2.20.1



  parent reply	other threads:[~2019-05-09 17:16 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-09 16:58 [Qemu-devel] [PATCH v1 00/23] current testing/next queue (docker/system & io tests) Alex Bennée
2019-05-09 16:58 ` [Qemu-devel] [PATCH v1 01/23] tests/docker: add ubuntu 18.04 Alex Bennée
2019-05-09 17:41   ` Philippe Mathieu-Daudé
2019-05-09 16:58 ` [Qemu-devel] [PATCH v1 02/23] tests/docker: Test more components on the Fedora default image Alex Bennée
2019-05-09 17:40   ` Philippe Mathieu-Daudé
2019-05-09 17:53   ` Richard Henderson
2019-05-09 16:58 ` [Qemu-devel] [PATCH v1 03/23] tests/tcg/multiarch: add support for multiarch system tests Alex Bennée
2019-05-09 16:58 ` [Qemu-devel] [PATCH v1 04/23] tests/tcg/multiarch: add hello world system test Alex Bennée
2019-05-09 16:58 ` [Qemu-devel] [PATCH v1 05/23] semihosting: enable chardev backed output Alex Bennée
2019-05-09 22:48   ` Richard Henderson
2019-05-10  6:55     ` Alex Bennée
2019-05-10 13:52       ` Richard Henderson
2019-05-10 14:05         ` Alex Bennée
2019-05-10 14:21           ` Peter Maydell
2019-05-10 14:22   ` Peter Maydell
2019-05-10 16:59     ` Alex Bennée
2019-05-10 17:02       ` Peter Maydell
2019-05-11 18:04         ` Alex Bennée
2019-05-09 16:58 ` [Qemu-devel] [PATCH v1 06/23] editorconfig: add settings for .s/.S files Alex Bennée
2019-05-09 22:50   ` Richard Henderson
2019-05-09 16:58 ` [Qemu-devel] [PATCH v1 07/23] tests/tcg/aarch64: add system boot.S Alex Bennée
2019-05-09 16:58 ` [Qemu-devel] [PATCH v1 08/23] tests/tcg/multiarch: move the system memory test Alex Bennée
2019-05-09 16:58 ` [Qemu-devel] [PATCH v1 09/23] tests/tcg/minilib: support %c format char Alex Bennée
2019-05-09 16:58 ` [Qemu-devel] [PATCH v1 10/23] tests/tcg/multiarch: expand system memory test to cover more Alex Bennée
2019-05-09 17:03   ` Richard Henderson
2019-05-09 16:58 ` [Qemu-devel] [PATCH v1 11/23] tests/tcg/alpha: add system boot.S Alex Bennée
2019-05-09 16:59 ` [Qemu-devel] [PATCH v1 12/23] .travis.yml: enable aarch64-softmmu and alpha-softmmu tcg tests Alex Bennée
2019-05-09 23:01   ` Richard Henderson
2019-05-09 16:59 ` [Qemu-devel] [PATCH v1 13/23] Makefile: fix coverage-report reference to BUILD_DIR Alex Bennée
2019-05-09 16:59 ` [Qemu-devel] [PATCH v1 14/23] Makefile: include per-target build directories in coverage report Alex Bennée
2019-05-09 16:59 ` [Qemu-devel] [PATCH v1 15/23] Makefile.target: support per-target coverage reports Alex Bennée
2019-05-09 16:59 ` [Qemu-devel] [PATCH v1 16/23] tests/qemu-iotests/005: Add a sanity check for large sparse file support Alex Bennée
2019-05-09 23:03   ` Richard Henderson
2019-05-09 16:59 ` [Qemu-devel] [PATCH v1 17/23] tests/qemu-iotests/check: Pick a default machine if necessary Alex Bennée
2019-05-09 16:59 ` [Qemu-devel] [PATCH v1 18/23] tests/qemu-iotests: Do not hard-code the path to bash Alex Bennée
2019-05-09 16:59 ` [Qemu-devel] [PATCH v1 19/23] cirrus / travis: Add gnu-sed and bash for macOS and FreeBSD Alex Bennée
2019-05-09 16:59 ` [Qemu-devel] [PATCH v1 20/23] tests/qemu-iotests: Remove the "_supported_os Linux" line from many tests Alex Bennée
2019-05-09 16:59 ` [Qemu-devel] [PATCH v1 21/23] tests/qemu-iotests/group: Re-use the "auto" group for tests that can always run Alex Bennée
2019-05-09 16:59 ` Alex Bennée [this message]
2019-05-09 18:12   ` [Qemu-devel] [PATCH v1 22/23] tests/qemu-iotests: re-format output to for make check-block Max Reitz
2019-05-09 20:38     ` Alex Bennée
2019-05-09 20:45       ` Eric Blake
2019-05-10  4:45   ` Thomas Huth
2019-05-09 16:59 ` [Qemu-devel] [PATCH v1 23/23] tests: Run the iotests during "make check" again Alex Bennée
2019-05-10  8:46   ` Thomas Huth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190509165912.10512-23-alex.bennee@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).