From: Kevin Wolf <kwolf@redhat.com>
To: kvm@vger.kernel.org
Cc: kwolf@redhat.com, gleb@redhat.com, mtosatti@redhat.com, lmr@redhat.com
Subject: [PATCH kvm-unittests v2 1/4] Add run_tests.sh
Date: Fri, 12 Apr 2013 13:27:37 +0200 [thread overview]
Message-ID: <1365766060-7604-2-git-send-email-kwolf@redhat.com> (raw)
In-Reply-To: <1365766060-7604-1-git-send-email-kwolf@redhat.com>
This adds a convenient way to run all tests without having to set up
Autotest.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
run_tests.sh | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
x86-run | 9 +++-
x86/unittests.cfg | 2 +
3 files changed, 132 insertions(+), 2 deletions(-)
create mode 100755 run_tests.sh
diff --git a/run_tests.sh b/run_tests.sh
new file mode 100755
index 0000000..55ecac5
--- /dev/null
+++ b/run_tests.sh
@@ -0,0 +1,123 @@
+#!/bin/bash
+
+testroot=x86
+config=$testroot/unittests.cfg
+qemu=${qemu:-qemu-system-x86_64}
+verbose=0
+
+function run()
+{
+ local testname="$1"
+ local groups="$2"
+ local smp="$3"
+ local kernel="$4"
+ local opts="$5"
+ local arch="$6"
+
+ if [ -z "$testname" ]; then
+ return
+ fi
+
+ if [ -n "$only_group" ] && ! grep -q "$only_group" <<<$groups; then
+ return
+ fi
+
+ if [ -n "$arch" ] && [ "$arch" != "$ARCH" ]; then
+ echo "skip $1 ($arch only)"
+ return
+ fi
+
+ cmdline="./x86-run $kernel -smp $smp -display none $opts"
+ if [ $verbose != 0 ]; then
+ echo $cmdline
+ fi
+
+ # extra_params in the config file may contain backticks that need to be
+ # expanded, so use eval to start qemu
+ eval $cmdline >> test.log
+
+ if [ $? -le 1 ]; then
+ echo -e "\e[32mPASS\e[0m $1"
+ else
+ echo -e "\e[31mFAIL\e[0m $1"
+ fi
+}
+
+function run_all()
+{
+ local config="$1"
+ local testname
+ local smp
+ local kernel
+ local opts
+ local groups
+ local arch
+
+ exec {config_fd}<$config
+
+ while read -u $config_fd line; do
+ if [[ "$line" =~ ^\[(.*)\]$ ]]; then
+ run "$testname" "$groups" "$smp" "$kernel" "$opts" "$arch"
+ testname=${BASH_REMATCH[1]}
+ smp=1
+ kernel=""
+ opts=""
+ groups=""
+ arch=""
+ elif [[ $line =~ ^file\ *=\ *(.*)$ ]]; then
+ kernel=$testroot/${BASH_REMATCH[1]}
+ elif [[ $line =~ ^smp\ *=\ *(.*)$ ]]; then
+ smp=${BASH_REMATCH[1]}
+ elif [[ $line =~ ^extra_params\ *=\ *(.*)$ ]]; then
+ opts=${BASH_REMATCH[1]}
+ elif [[ $line =~ ^groups\ *=\ *(.*)$ ]]; then
+ groups=${BASH_REMATCH[1]}
+ elif [[ $line =~ ^arch\ *=\ *(.*)$ ]]; then
+ arch=${BASH_REMATCH[1]}
+ fi
+ done
+
+ run "$testname" "$groups" "$smp" "$kernel" "$opts" "$arch"
+
+ exec {config_fd}<&-
+}
+
+function usage()
+{
+cat <<EOF
+
+Usage: $0 [-g group] [-h] [-v]
+
+ -g: Only execute tests in the given group
+ -h: Output this help text
+ -v: Enables verbose mode
+
+Set the environment variable QEMU=/path/to/qemu-system-x86_64 to allow the
+internally used x86-run to pick up the right qemu binary.
+
+EOF
+}
+
+# As it happens, config.mak is valid shell script code, too :-)
+source config.mak
+
+echo > test.log
+while getopts "g:hv" opt; do
+ case $opt in
+ g)
+ only_group=$OPTARG
+ ;;
+ h)
+ usage
+ exit
+ ;;
+ v)
+ verbose=1
+ ;;
+ *)
+ exit
+ ;;
+ esac
+done
+
+run_all $config
diff --git a/x86-run b/x86-run
index e395a70..19e5dec 100755
--- a/x86-run
+++ b/x86-run
@@ -13,7 +13,7 @@ else
qemu="${qemusystem}"
else
echo QEMU binary ${QEMU} has no support for test device. Exiting.
- exit 1
+ exit 2
fi
fi
@@ -24,4 +24,9 @@ then
else
command="${qemu} -device testdev,chardev=testlog -chardev file,id=testlog,path=msr.out -serial stdio -kernel"
fi
-exec ${command} "$@"
+
+echo ${command} "$@"
+${command} "$@"
+ret=$?
+echo Return value from qemu: $ret
+exit $ret
diff --git a/x86/unittests.cfg b/x86/unittests.cfg
index 5e08c55..7d0fa73 100644
--- a/x86/unittests.cfg
+++ b/x86/unittests.cfg
@@ -3,6 +3,8 @@
# file = foo.flat # Name of the flat file to be used
# smp = 2 # Number of processors the VM will use during this test
# extra_params = -cpu qemu64,+x2apic # Additional parameters used
+# arch = i386/x86_64 # Only if the test case works only on one of them
+# groups = group1 group2 # Used to identify test cases with run_tests -g ...
[apic]
file = apic.flat
--
1.8.1.4
next prev parent reply other threads:[~2013-04-12 11:27 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-12 11:27 [PATCH kvm-unittests v2 0/4] Add run_tests.sh script and update unittests.cfg Kevin Wolf
2013-04-12 11:27 ` Kevin Wolf [this message]
2013-04-12 12:24 ` [PATCH kvm-unittests v2 1/4] Add run_tests.sh Lucas Meneghel Rodrigues
2013-04-12 11:27 ` [PATCH kvm-unittests v2 2/4] x86/unittests.cfg: Add arch for x86_64-only tests Kevin Wolf
2013-04-12 11:27 ` [PATCH kvm-unittests v2 3/4] x86/unittests.cfg: Add missing test cases Kevin Wolf
2013-04-12 11:27 ` [PATCH kvm-unittests v2 4/4] x86/unittests.cfg: Create test case groups Kevin Wolf
2013-04-13 23:26 ` [PATCH kvm-unittests v2 0/4] Add run_tests.sh script and update unittests.cfg Cole Robinson
2013-04-15 8:11 ` Kevin Wolf
2013-04-17 22:26 ` Marcelo Tosatti
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=1365766060-7604-2-git-send-email-kwolf@redhat.com \
--to=kwolf@redhat.com \
--cc=gleb@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=lmr@redhat.com \
--cc=mtosatti@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.