xref: /kvm-unit-tests/scripts/runtime.bash (revision 5af378ddeb7906ce504e4d743c6f85a354d7cd10)
1103832e8SRadim Krčmář: "${RUNTIME_arch_run?}"
2103832e8SRadim Krčmář
36a53fc26SRadim Krčmářqemu=${QEMU:-qemu-system-$ARCH}
46a53fc26SRadim Krčmářverbose=0
56a53fc26SRadim Krčmář
66a53fc26SRadim Krčmářfunction run()
76a53fc26SRadim Krčmář{
86a53fc26SRadim Krčmář    local testname="$1"
96a53fc26SRadim Krčmář    local groups="$2"
106a53fc26SRadim Krčmář    local smp="$3"
116a53fc26SRadim Krčmář    local kernel="$4"
126a53fc26SRadim Krčmář    local opts="$5"
136a53fc26SRadim Krčmář    local arch="$6"
146a53fc26SRadim Krčmář    local check="$7"
156a53fc26SRadim Krčmář    local accel="$8"
166a53fc26SRadim Krčmář
176a53fc26SRadim Krčmář    if [ -z "$testname" ]; then
186a53fc26SRadim Krčmář        return
196a53fc26SRadim Krčmář    fi
206a53fc26SRadim Krčmář
216a53fc26SRadim Krčmář    if [ -n "$only_group" ] && ! grep -q "$only_group" <<<$groups; then
226a53fc26SRadim Krčmář        return
236a53fc26SRadim Krčmář    fi
246a53fc26SRadim Krčmář
256a53fc26SRadim Krčmář    if [ -n "$arch" ] && [ "$arch" != "$ARCH" ]; then
266a53fc26SRadim Krčmář        echo "skip $1 ($arch only)"
276a53fc26SRadim Krčmář        return
286a53fc26SRadim Krčmář    fi
296a53fc26SRadim Krčmář
306a53fc26SRadim Krčmář    # check a file for a particular value before running a test
316a53fc26SRadim Krčmář    # the check line can contain multiple files to check separated by a space
326a53fc26SRadim Krčmář    # but each check parameter needs to be of the form <path>=<value>
336a53fc26SRadim Krčmář    for check_param in ${check[@]}; do
346a53fc26SRadim Krčmář        path=${check_param%%=*}
356a53fc26SRadim Krčmář        value=${check_param#*=}
366a53fc26SRadim Krčmář        if [ "$path" ] && [ "$(cat $path)" != "$value" ]; then
376a53fc26SRadim Krčmář            echo "skip $1 ($path not equal to $value)"
386a53fc26SRadim Krčmář            return
396a53fc26SRadim Krčmář        fi
406a53fc26SRadim Krčmář    done
416a53fc26SRadim Krčmář
42103832e8SRadim Krčmář    cmdline="TESTNAME=$testname ACCEL=$accel $RUNTIME_arch_run $kernel -smp $smp $opts"
436a53fc26SRadim Krčmář    if [ $verbose != 0 ]; then
446a53fc26SRadim Krčmář        echo $cmdline
456a53fc26SRadim Krčmář    fi
466a53fc26SRadim Krčmář
476a53fc26SRadim Krčmář    # extra_params in the config file may contain backticks that need to be
486a53fc26SRadim Krčmář    # expanded, so use eval to start qemu
49103832e8SRadim Krčmář    eval $cmdline
50*5af378ddSRadim Krčmář    ret=$?
516a53fc26SRadim Krčmář
52*5af378ddSRadim Krčmář    if [ $ret -le 1 ]; then
536a53fc26SRadim Krčmář        echo -e "\e[32mPASS\e[0m $1"
546a53fc26SRadim Krčmář    else
556a53fc26SRadim Krčmář        echo -e "\e[31mFAIL\e[0m $1"
566a53fc26SRadim Krčmář    fi
57*5af378ddSRadim Krčmář
58*5af378ddSRadim Krčmář    return $ret
596a53fc26SRadim Krčmář}
606a53fc26SRadim Krčmář
616a53fc26SRadim Krčmářfunction usage()
626a53fc26SRadim Krčmář{
636a53fc26SRadim Krčmářcat <<EOF
646a53fc26SRadim Krčmář
656a53fc26SRadim KrčmářUsage: $0 [-g group] [-h] [-v]
666a53fc26SRadim Krčmář
676a53fc26SRadim Krčmář    -g: Only execute tests in the given group
686a53fc26SRadim Krčmář    -h: Output this help text
696a53fc26SRadim Krčmář    -v: Enables verbose mode
706a53fc26SRadim Krčmář
716a53fc26SRadim KrčmářSet the environment variable QEMU=/path/to/qemu-system-ARCH to
726a53fc26SRadim Krčmářspecify the appropriate qemu binary for ARCH-run.
736a53fc26SRadim Krčmář
746a53fc26SRadim KrčmářEOF
756a53fc26SRadim Krčmář}
766a53fc26SRadim Krčmář
776a53fc26SRadim Krčmářecho > test.log
786a53fc26SRadim Krčmářwhile getopts "g:hv" opt; do
796a53fc26SRadim Krčmář    case $opt in
806a53fc26SRadim Krčmář        g)
816a53fc26SRadim Krčmář            only_group=$OPTARG
826a53fc26SRadim Krčmář            ;;
836a53fc26SRadim Krčmář        h)
846a53fc26SRadim Krčmář            usage
856a53fc26SRadim Krčmář            exit
866a53fc26SRadim Krčmář            ;;
876a53fc26SRadim Krčmář        v)
886a53fc26SRadim Krčmář            verbose=1
896a53fc26SRadim Krčmář            ;;
906a53fc26SRadim Krčmář        *)
916a53fc26SRadim Krčmář            exit
926a53fc26SRadim Krčmář            ;;
936a53fc26SRadim Krčmář    esac
946a53fc26SRadim Krčmářdone
956a53fc26SRadim Krčmář
966a53fc26SRadim Krčmář#
976a53fc26SRadim Krčmář# Probe for MAX_SMP
986a53fc26SRadim Krčmář#
996a53fc26SRadim KrčmářMAX_SMP=$(getconf _NPROCESSORS_CONF)
1006a53fc26SRadim Krčmářwhile ./$TEST_DIR-run _NO_FILE_4Uhere_ -smp $MAX_SMP \
1016a53fc26SRadim Krčmář		|& grep -q 'exceeds max cpus'; do
1026a53fc26SRadim Krčmář	((--MAX_SMP))
1036a53fc26SRadim Krčmářdone
104