From: Andrew Jones <drjones@redhat.com>
To: "Radim Krčmář" <rkrcmar@redhat.com>
Cc: kvm@vger.kernel.org, Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [PATCH kvm-unit-tests v2 03/12] scripts/mkstandalone: use common run function
Date: Thu, 17 Dec 2015 13:09:42 -0600 [thread overview]
Message-ID: <20151217190942.GC14168@hawk.localdomain> (raw)
In-Reply-To: <1450374823-7648-4-git-send-email-rkrcmar@redhat.com>
On Thu, Dec 17, 2015 at 06:53:34PM +0100, Radim Krčmář wrote:
> The biggest change is dependency on bash. An alternative would be to
> rewrite `run` in POSIX shell, but I think it's ok to presume that KVM
> unit tests will run on a system where installing bash isn't a problem.
Hmm... as hard as I worked to avoid the dependency on bash for the
standalone tests, then I'm reluctant to give up on that. I do agree
that having the dependency for the printf-%q trick helps a ton in
making the code more maintainable though.
> (We already depend on QEMU ...)
Dependency on qemu doesn't imply a dependency on bash. The idea behind
the standalone version of kvm-unit-tests tests is that you can receive
one in your email and launch it.
>
> Apart from that, there are changes in output and exit codes.
> - summary doesn't go to stderr
I wanted the summary on stderr so when you redirect the output of the
test to a file the output would directly diff with the corresponding
output in test.log from a system where run_tests.sh was used.
> - PASS/FAIL is colourful
> - FAILed scripts return 1
I'm not sure why I did exit 0 instead of exit $ret. I guess that was
just a thinko on my part. exit $ret makes more sense.
>
> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
> ---
> v2: new (I can fix the stderr in v3)
>
> scripts/mkstandalone.sh | 59 +++++++++++++++++++++----------------------------
> 1 file changed, 25 insertions(+), 34 deletions(-)
>
> diff --git a/scripts/mkstandalone.sh b/scripts/mkstandalone.sh
> index 3ce244aff67b..cf2182dbd936 100755
> --- a/scripts/mkstandalone.sh
> +++ b/scripts/mkstandalone.sh
> @@ -20,6 +20,13 @@ fi
> unittests=$TEST_DIR/unittests.cfg
> mkdir -p tests
>
> +escape ()
> +{
> + for arg in "${@}"; do
> + printf "%q " "$arg"; # XXX: trailing whitespace
> + done
> +}
> +
> function mkstandalone()
> {
> local testname="$1"
> @@ -49,33 +56,14 @@ function mkstandalone()
> cmdline=$(cut -d' ' -f2- <<< "$cmdline")
>
> cat <<EOF > $standalone
> -#!/bin/sh
> +#!/bin/bash
>
> -EOF
> -if [ "$arch" ]; then
> - cat <<EOF >> $standalone
> ARCH=\`uname -m | sed -e s/i.86/i386/ | sed -e 's/arm.*/arm/'\`
> -[ "\$ARCH" = "aarch64" ] && ARCH="arm64"
> -if [ "\$ARCH" != "$arch" ]; then
> - echo "skip $testname ($arch only)" 1>&2
> - exit 1
> -fi
>
> EOF
> -fi
> -if [ "$check" ]; then
> - cat <<EOF >> $standalone
> -for param in $check; do
> - path=\`echo \$param | cut -d= -f1\`
> - value=\`echo \$param | cut -d= -f2\`
> - if [ -f "\$path" ] && [ "\`cat \$path\`" != "\$value" ]; then
> - echo "skip $testname (\$path not equal to \$value)" 1>&2
> - exit 1
> - fi
> -done
>
> -EOF
> -fi
> +cat scripts/run.bash >> $standalone
> +
> if [ ! -f $kernel ]; then
> cat <<EOF >> $standalone
> echo "skip $testname (test kernel not present)" 1>&2
> @@ -100,9 +88,13 @@ MAX_SMP="MAX_SMP"
> echo \$qemu $cmdline -smp $smp $opts
>
> cmdline="\`echo '$cmdline' | sed s%$kernel%_NO_FILE_4Uhere_%\`"
> -if \$qemu \$cmdline 2>&1 | grep 'No accelerator found'; then
> - ret=2
> -else
> +if \$qemu \$cmdline 2>&1 | grep 'No accelerator found' >/dev/null; then
> + echo "skip $testname (QEMU doesn't support KVM)"
> + exit 1
> +fi
> +
> +__run()
> +{
> MAX_SMP=\`getconf _NPROCESSORS_CONF\`
> while \$qemu \$cmdline -smp \$MAX_SMP 2>&1 | grep 'exceeds max cpus' > /dev/null; do
> MAX_SMP=\`expr \$MAX_SMP - 1\`
> @@ -110,16 +102,15 @@ else
>
> cmdline="\`echo '$cmdline' | sed s%$kernel%\$bin%\`"
> \$qemu \$cmdline -smp $smp $opts
> - ret=\$?
> -fi
> -echo Return value from qemu: \$ret
> -if [ \$ret -le 1 ]; then
> - echo PASS $testname 1>&2
> -else
> - echo FAIL $testname 1>&2
> -fi
> +}
> +
> +__eval_log() { eval "\${@}"; }
> +
> +run `escape "${@}"`
> +ret=$?
> +
> rm -f \$bin
> -exit 0
> +exit \$ret
> EOF
> fi
> chmod +x $standalone
> --
> 2.6.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2015-12-17 19:09 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-17 17:53 [PATCH kvm-unit-tests v2 00/12] Improve the output of test runners Radim Krčmář
2015-12-17 17:53 ` [PATCH kvm-unit-tests v2 01/12] run_tests: move run() to scripts/ Radim Krčmář
2015-12-17 18:45 ` Andrew Jones
2015-12-18 10:42 ` Radim Krčmář
2015-12-18 18:52 ` Andrew Jones
2015-12-17 17:53 ` [PATCH kvm-unit-tests v2 02/12] run_tests: prepare for changes in scripts/mkstandalone Radim Krčmář
2015-12-17 18:53 ` Andrew Jones
2015-12-18 10:49 ` Radim Krčmář
2015-12-17 17:53 ` [PATCH kvm-unit-tests v2 03/12] scripts/mkstandalone: use common run function Radim Krčmář
2015-12-17 19:09 ` Andrew Jones [this message]
2015-12-18 11:02 ` Radim Krčmář
2015-12-17 17:53 ` [PATCH kvm-unit-tests v2 04/12] scripts/mkstandalone: improve exit paths Radim Krčmář
2015-12-17 19:15 ` Andrew Jones
2015-12-17 17:53 ` [PATCH kvm-unit-tests v2 05/12] lib/report: allow test skipping Radim Krčmář
2015-12-17 19:30 ` Andrew Jones
2015-12-17 19:37 ` Andrew Jones
2015-12-18 11:18 ` Radim Krčmář
2015-12-18 18:55 ` Andrew Jones
2015-12-17 17:53 ` [PATCH kvm-unit-tests v2 06/12] x86/*: report skipped tests Radim Krčmář
2015-12-17 17:53 ` [PATCH kvm-unit-tests v2 07/12] x86/pmu: expect failure with nmi_watchdog Radim Krčmář
2015-12-17 17:53 ` [PATCH kvm-unit-tests v2 08/12] scripts/run: generalize check Radim Krčmář
2015-12-17 17:53 ` [PATCH kvm-unit-tests v2 09/12] x86/hyperv_synic: check for support before testing Radim Krčmář
2015-12-17 19:42 ` Andrew Jones
2015-12-18 12:13 ` Radim Krčmář
2015-12-17 17:53 ` [PATCH kvm-unit-tests v2 10/12] run_tests: print summary Radim Krčmář
2015-12-17 19:55 ` Andrew Jones
2015-12-18 12:24 ` Radim Krčmář
2015-12-17 20:06 ` Andrew Jones
2015-12-18 12:25 ` Radim Krčmář
2015-12-17 17:53 ` [PATCH kvm-unit-tests v2 11/12] wrappers: consolidate skip output Radim Krčmář
2015-12-17 19:59 ` Andrew Jones
2015-12-17 17:53 ` [PATCH kvm-unit-tests v2 12/12] run_tests: suppress stderr Radim Krčmář
2015-12-17 20:01 ` Andrew Jones
2015-12-17 20:04 ` [PATCH kvm-unit-tests v2 00/12] Improve the output of test runners Andrew Jones
2015-12-18 12:38 ` Radim Krčmář
2015-12-18 18:57 ` Andrew Jones
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=20151217190942.GC14168@hawk.localdomain \
--to=drjones@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=rkrcmar@redhat.com \
/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).