diff mbox

[kvm-unit-tests,v7,03/11] run_tests: allow passing of options to QEMU

Message ID 20161124161033.11456-4-alex.bennee@linaro.org
State New
Headers show

Commit Message

Alex Bennée Nov. 24, 2016, 4:10 p.m. UTC
This introduces a the option -o for passing of options directly to QEMU
which is useful. In my case I'm using it to toggle MTTCG on an off:

  ./run_tests.sh -t -o "-tcg mttcg=on"

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
 run_tests.sh           | 10 +++++++---
 scripts/functions.bash | 13 +++++++------
 2 files changed, 14 insertions(+), 9 deletions(-)

Comments

Alex Bennée Nov. 28, 2016, 11:22 a.m. UTC | #1
Andrew Jones <drjones@redhat.com> writes:

> On Thu, Nov 24, 2016 at 04:10:25PM +0000, Alex Bennée wrote:
>> This introduces a the option -o for passing of options directly to QEMU
>> which is useful. In my case I'm using it to toggle MTTCG on an off:
>>
>>   ./run_tests.sh -t -o "-tcg mttcg=on"
>>
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> ---
>>  run_tests.sh           | 10 +++++++---
>>  scripts/functions.bash | 13 +++++++------
>>  2 files changed, 14 insertions(+), 9 deletions(-)
>>
>> diff --git a/run_tests.sh b/run_tests.sh
>> index 4f2e5cb..05cc7fb 100755
>> --- a/run_tests.sh
>> +++ b/run_tests.sh
>> @@ -13,10 +13,11 @@ function usage()
>>  {
>>  cat <<EOF
>>
>> -Usage: $0 [-g group] [-a accel] [-t] [-h] [-v]
>> +Usage: $0 [-g group] [-a accel] [-o qemu_opts] [-t] [-h] [-v]
>>
>>      -g: Only execute tests in the given group
>>      -a: Force acceleration mode (tcg/kvm)
>> +    -o: additional options for QEMU command line
>>      -t: disable timeouts
>>      -h: Output this help text
>>      -v: Enables verbose mode
>> @@ -30,7 +31,7 @@ EOF
>>  RUNTIME_arch_run="./$TEST_DIR/run"
>>  source scripts/runtime.bash
>>
>> -while getopts "g:a:thv" opt; do
>> +while getopts "g:a:o:thv" opt; do
>>      case $opt in
>>          g)
>>              only_group=$OPTARG
>> @@ -38,6 +39,9 @@ while getopts "g:a:thv" opt; do
>>          a)
>>              force_accel=$OPTARG
>>              ;;
>> +        o)
>> +            extra_opts=$OPTARG
>> +            ;;
>>          t)
>>              no_timeout="yes"
>>              ;;
>> @@ -67,4 +71,4 @@ RUNTIME_log_stdout () {
>>  config=$TEST_DIR/unittests.cfg
>>  rm -f test.log
>>  printf "BUILD_HEAD=$(cat build-head)\n\n" > test.log
>> -for_each_unittest $config run
>> +for_each_unittest $config run "$extra_opts"
>> diff --git a/scripts/functions.bash b/scripts/functions.bash
>> index ee9143c..d38a69e 100644
>> --- a/scripts/functions.bash
>> +++ b/scripts/functions.bash
>> @@ -2,11 +2,12 @@
>>  function for_each_unittest()
>>  {
>>  	local unittests="$1"
>> -	local cmd="$2"
>> -	local testname
>> +        local cmd="$2"
>> +        local extra_opts=$3
>> +        local testname
>
> We use tabs in this file. Not sure why cmd and testname got
> changed too...
>
>>  	local smp
>>  	local kernel
>> -	local opts
>> +        local opts=$extra_opts
>>  	local groups
>>  	local arch
>>  	local check
>> @@ -21,7 +22,7 @@ function for_each_unittest()
>>  			testname=${BASH_REMATCH[1]}
>>  			smp=1
>>  			kernel=""
>> -			opts=""
>> +                        opts=$extra_opts
>>  			groups=""
>>  			arch=""
>>  			check=""
>> @@ -32,7 +33,7 @@ function for_each_unittest()
>>  		elif [[ $line =~ ^smp\ *=\ *(.*)$ ]]; then
>>  			smp=${BASH_REMATCH[1]}
>>  		elif [[ $line =~ ^extra_params\ *=\ *(.*)$ ]]; then
>> -			opts=${BASH_REMATCH[1]}
>> +                        opts="$opts ${BASH_REMATCH[1]}"
>>  		elif [[ $line =~ ^groups\ *=\ *(.*)$ ]]; then
>>  			groups=${BASH_REMATCH[1]}
>>  		elif [[ $line =~ ^arch\ *=\ *(.*)$ ]]; then
>> @@ -45,6 +46,6 @@ function for_each_unittest()
>>  			timeout=${BASH_REMATCH[1]}
>>  		fi
>>  	done
>> -	"$cmd" "$testname" "$groups" "$smp" "$kernel" "$opts" "$arch" "$check" "$accel" "$timeout"
>> +        "$cmd" "$testname" "$groups" "$smp" "$kernel" "$opts" "$arch" "$check" "$accel" "$timeout"
>>  	exec {fd}<&-
>>  }
>> --
>> 2.10.1
>>
>>
>
> This is a pretty good idea, but I think I might like the extra options
> to be given like this instead
>
>   ./run_tests.sh [run_tests.sh options] -- [qemu options]
>
> Thanks,
> drew

That sounds like a better way, I'll fix that.

--
Alex Bennée
diff mbox

Patch

diff --git a/run_tests.sh b/run_tests.sh
index 4f2e5cb..05cc7fb 100755
--- a/run_tests.sh
+++ b/run_tests.sh
@@ -13,10 +13,11 @@  function usage()
 {
 cat <<EOF
 
-Usage: $0 [-g group] [-a accel] [-t] [-h] [-v]
+Usage: $0 [-g group] [-a accel] [-o qemu_opts] [-t] [-h] [-v]
 
     -g: Only execute tests in the given group
     -a: Force acceleration mode (tcg/kvm)
+    -o: additional options for QEMU command line
     -t: disable timeouts
     -h: Output this help text
     -v: Enables verbose mode
@@ -30,7 +31,7 @@  EOF
 RUNTIME_arch_run="./$TEST_DIR/run"
 source scripts/runtime.bash
 
-while getopts "g:a:thv" opt; do
+while getopts "g:a:o:thv" opt; do
     case $opt in
         g)
             only_group=$OPTARG
@@ -38,6 +39,9 @@  while getopts "g:a:thv" opt; do
         a)
             force_accel=$OPTARG
             ;;
+        o)
+            extra_opts=$OPTARG
+            ;;
         t)
             no_timeout="yes"
             ;;
@@ -67,4 +71,4 @@  RUNTIME_log_stdout () {
 config=$TEST_DIR/unittests.cfg
 rm -f test.log
 printf "BUILD_HEAD=$(cat build-head)\n\n" > test.log
-for_each_unittest $config run
+for_each_unittest $config run "$extra_opts"
diff --git a/scripts/functions.bash b/scripts/functions.bash
index ee9143c..d38a69e 100644
--- a/scripts/functions.bash
+++ b/scripts/functions.bash
@@ -2,11 +2,12 @@ 
 function for_each_unittest()
 {
 	local unittests="$1"
-	local cmd="$2"
-	local testname
+        local cmd="$2"
+        local extra_opts=$3
+        local testname
 	local smp
 	local kernel
-	local opts
+        local opts=$extra_opts
 	local groups
 	local arch
 	local check
@@ -21,7 +22,7 @@  function for_each_unittest()
 			testname=${BASH_REMATCH[1]}
 			smp=1
 			kernel=""
-			opts=""
+                        opts=$extra_opts
 			groups=""
 			arch=""
 			check=""
@@ -32,7 +33,7 @@  function for_each_unittest()
 		elif [[ $line =~ ^smp\ *=\ *(.*)$ ]]; then
 			smp=${BASH_REMATCH[1]}
 		elif [[ $line =~ ^extra_params\ *=\ *(.*)$ ]]; then
-			opts=${BASH_REMATCH[1]}
+                        opts="$opts ${BASH_REMATCH[1]}"
 		elif [[ $line =~ ^groups\ *=\ *(.*)$ ]]; then
 			groups=${BASH_REMATCH[1]}
 		elif [[ $line =~ ^arch\ *=\ *(.*)$ ]]; then
@@ -45,6 +46,6 @@  function for_each_unittest()
 			timeout=${BASH_REMATCH[1]}
 		fi
 	done
-	"$cmd" "$testname" "$groups" "$smp" "$kernel" "$opts" "$arch" "$check" "$accel" "$timeout"
+        "$cmd" "$testname" "$groups" "$smp" "$kernel" "$opts" "$arch" "$check" "$accel" "$timeout"
 	exec {fd}<&-
 }