[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [RFC PATCH] tests/qemu-iotests: re-format output to for
From: |
Thomas Huth |
Subject: |
Re: [Qemu-block] [RFC PATCH] tests/qemu-iotests: re-format output to for make check-block |
Date: |
Sun, 5 May 2019 18:01:08 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 |
On 03/05/2019 16.39, Alex Bennée wrote:
> 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 <address@hidden>
> ---
> tests/qemu-iotests/check | 71 +++++++++++++++++++---------------------
> 1 file changed, 34 insertions(+), 37 deletions(-)
>
> diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check
> index 922c5d1d3d..2ffc14113e 100755
> --- a/tests/qemu-iotests/check
> +++ b/tests/qemu-iotests/check
> @@ -633,12 +633,6 @@ _wallclock()
> date "+%H %M %S" | awk '{ print $1*3600 + $2*60 + $3 }'
> }
>
> -_timestamp()
> -{
> - now=$(date "+%T")
> - printf %s " [$now]"
> -}
> -
> _wrapup()
> {
> if $showme
> @@ -709,19 +703,6 @@ trap "_wrapup; exit \$status" 0 1 2 3 15
> 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
Maybe turn it into a function instead, so that it could also always be
printed when the script is run with the "-v" parameter?
> seq="check"
>
> [ -n "$TESTS_REMAINING_LOG" ] && echo $list > $TESTS_REMAINING_LOG
> @@ -729,7 +710,9 @@ seq="check"
> for seq in $list
> do
> err=false
> - printf %s "$seq"
> + reason=""
> + times=""
> +
> 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 +721,7 @@ do
>
> if $showme
> then
> - echo
> + echo " TEST iotest: $seq (not actually run)"
I wonder whether some other scripts depend on the output of "check -n"
... in that case, it make sense to only print the numbers, without the
additional strings here.
> continue
> elif [ -f expunged ] && $expunge && egrep "^$seq([ ]|\$)"
> expunged >/dev/null
> then
> @@ -753,17 +736,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 && times="[$(date "+%T")]"
>
> if [ "$(head -n 1 "$source_iotests/$seq")" == "#!/usr/bin/env
> python" ]; then
> run_command="$PYTHON $seq"
> @@ -781,26 +758,26 @@ do
> $run_command >$tmp.out 2>&1)
> fi
> sts=$?
> - $timestamp && _timestamp
> + $timestamp && times="$times -> [$(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 -- "
> + $timestamp || reason="[not run]"
> + $timestamp && reason="[not run] $seq -- "
> cat $seq.notrun
> notrun="$notrun $seq"
> else
> if [ $sts -ne 0 ]
> then
> - printf %s " [failed, exit status $sts]"
> + reason=$(printf %s "[failed, exit status $sts]")
> err=true
> fi
>
> @@ -821,22 +798,27 @@ 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
> + times="$times ${thistime}s (last ${lasttime}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 +834,24 @@ do
> #
> if $err
> then
> + echo " TEST iotest: $seq FAILED $reason"
> + 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
> bad="$bad $seq"
> n_bad=$(expr $n_bad + 1)
> quick=false
> + else
> + echo " TEST iotest: $seq $times"
> fi
> [ -f $seq.notrun ] || try=$(expr $try + 1)
Output is much nicer indeed (especially when this is running in parallel
with the other tests), thus:
Tested-by: Thomas Huth <address@hidden>
Re: [Qemu-block] [RFC PATCH] tests/qemu-iotests: re-format output to for make check-block,
Thomas Huth <=
Re: [Qemu-block] [RFC PATCH] tests/qemu-iotests: re-format output to for make check-block, Kevin Wolf, 2019/05/07