Standalone tests will use it. Signed-off-by: Radim Krčmář <rkrcmar@xxxxxxxxxx> --- run_tests.sh | 99 +--------------------------------------------------- scripts/runtime.bash | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+), 98 deletions(-) create mode 100644 scripts/runtime.bash diff --git a/run_tests.sh b/run_tests.sh index fad22a935b00..2549679e653b 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -6,105 +6,8 @@ if [ ! -f config.mak ]; then fi source config.mak source scripts/functions.bash +source scripts/runtime.bash config=$TEST_DIR/unittests.cfg -qemu=${QEMU:-qemu-system-$ARCH} -verbose=0 - -function run() -{ - local testname="$1" - local groups="$2" - local smp="$3" - local kernel="$4" - local opts="$5" - local arch="$6" - local check="$7" - local accel="$8" - - 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 - - # check a file for a particular value before running a test - # the check line can contain multiple files to check separated by a space - # but each check parameter needs to be of the form <path>=<value> - for check_param in ${check[@]}; do - path=${check_param%%=*} - value=${check_param#*=} - if [ "$path" ] && [ "$(cat $path)" != "$value" ]; then - echo "skip $1 ($path not equal to $value)" - return - fi - done - - cmdline="TESTNAME=$testname ACCEL=$accel ./$TEST_DIR-run $kernel -smp $smp $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 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-ARCH to -specify the appropriate qemu binary for ARCH-run. - -EOF -} - -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 - -# -# Probe for MAX_SMP -# -MAX_SMP=$(getconf _NPROCESSORS_CONF) -while ./$TEST_DIR-run _NO_FILE_4Uhere_ -smp $MAX_SMP \ - |& grep -q 'exceeds max cpus'; do - ((--MAX_SMP)) -done for_each_unittest $config run diff --git a/scripts/runtime.bash b/scripts/runtime.bash new file mode 100644 index 000000000000..8813b9ddbf1e --- /dev/null +++ b/scripts/runtime.bash @@ -0,0 +1,98 @@ +qemu=${QEMU:-qemu-system-$ARCH} +verbose=0 + +function run() +{ + local testname="$1" + local groups="$2" + local smp="$3" + local kernel="$4" + local opts="$5" + local arch="$6" + local check="$7" + local accel="$8" + + 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 + + # check a file for a particular value before running a test + # the check line can contain multiple files to check separated by a space + # but each check parameter needs to be of the form <path>=<value> + for check_param in ${check[@]}; do + path=${check_param%%=*} + value=${check_param#*=} + if [ "$path" ] && [ "$(cat $path)" != "$value" ]; then + echo "skip $1 ($path not equal to $value)" + return + fi + done + + cmdline="TESTNAME=$testname ACCEL=$accel ./$TEST_DIR-run $kernel -smp $smp $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 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-ARCH to +specify the appropriate qemu binary for ARCH-run. + +EOF +} + +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 + +# +# Probe for MAX_SMP +# +MAX_SMP=$(getconf _NPROCESSORS_CONF) +while ./$TEST_DIR-run _NO_FILE_4Uhere_ -smp $MAX_SMP \ + |& grep -q 'exceeds max cpus'; do + ((--MAX_SMP)) +done -- 2.7.0 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html