#!/bin/bash
export STANDALONE=yes
export ENVIRON_DEFAULT=yes
export HOST=$(uname -m | sed -e 's/i.86/i386/;s/arm.*/arm/;s/ppc64.*/ppc64/')
export PRETTY_PRINT_STACKS=no
export ARCH=arm64
export ARCH_NAME=aarch64
export PROCESSOR=cortex-a57
echo BUILD_HEAD=
trap 'rm -f $cleanup' EXIT
bin=`mktemp`
cleanup="$bin $cleanup"
base64 -d << 'BIN_EOF' | zcat > $bin || exit 2
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
R6dxXeWfEmlrNXYd6TGBfd7AHgd6GPbYp8aB5iNP6SPyvUlq/0ByD0a6X+bYY56rWnTWPgMGn+gV
xGBZ0o67x9Kvd9LPJearteGisXuRVytfSq0Pi+LWupQ96QZkNwJ98nt7vDu+HsbJbbWTxVWPYdyx
LS1nxs6gVaXfGe7QwD7JkXSpu5q/OOrYIUXHJlHUKs+Iof78ZHvmpZf3BMo5POZPKj97XDxaIuK3
Dsqz4a2/BH3cg1ziUu8tOQ3e8LzMyUG5t/+2QlG4H/5g7yq9cEkh3yutu1sn64wTS8LqPE1xeB9w
m5GPtKpzMYgDRxPVY3faw0Y6e5Dl+HKrtZjUvcnKb3w6VC/tpx5uDsImQh6L6A/y3Uyca4Ac7Vc2
WO7fcuZLOb/hfE+5B8CXvKtbDxtnFC8V/w3feH8wKQeTbf4PyTM0heHfJtL6AOOKeCPq/vKqf7D7
NYB+GJY448vmfCP9Ie7/4dwr9/GY8r3iV1h3wc+oBfy6N9W8Ku/5YtvquP+mp7usvFDpOm/0CutZ
8GvbMN8/VherOJQokWUEr7D+DTCuT8nfPZdb66MK54JDaq5z4pl4Jp6JZ+KZeP6nn8Aryp/8oP6+
9AHXv+4Drv/uD7j+rg+4/l0fcP0/+IDr//EHXP/zH3D9L3/A9b/2Add/8gOu3/XrD7Z+9wdcf8UH
XP9Vv56I+SaeiWfimXgmnoln4pl4Jp6JZ+KZeCaeiWfimXgmnoln4pl4Jp6JZ+KZeCaeiWfimXgm
noln4pl4Jp6JZ+KZeCaeiWfimXgmnoln4pl4Jp6JZ+KZeCaeiWfimXgmnoln4pl4Jp6JZ+KZeCae
iWfimXgmnoln4pl4Jp6JZ+KZeCaeiWfimXgmnoln4pl4Jp6JZ+KZeCaeief/b0/sKk1+Gi7795Xq
t7h6PDzbxstOg5fa8Lw0+GwbXpoGr7HhnjT4Yhs+Ow1+hw2/Mg2+0obXpMHX2HAzDb7Vhi9Og99v
w5emwR+z4XekwZ+04YE0+PM2fGUa/BUbfmca/IgNX5MG33aF+h1Mp9OGb0uD99jw+9Ppt+E9afDH
bfhj6e2y4Y+nwSM2/Mk0+AEb/kp6e234kTR41IaLuWl8sOGeNPgxG16TBo/Z8DVpcGHLbTANnmfD
t6bBPTb8/jT4lTa8Jw1u2vDH0uBLbfiTafCADX8lDX6nDT+WBg/a8FgafKszHqvS5MGGZ6fBH7Ph
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
BIN_EOF
chmod +x $bin
RUNTIME_arch_run=`mktemp`
cleanup="$RUNTIME_arch_run $cleanup"
base64 -d << 'BIN_EOF' | zcat > $RUNTIME_arch_run || exit 2
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
AaJdQPN3KwAA
BIN_EOF
chmod +x $RUNTIME_arch_run
exec {stdout}>&1
RUNTIME_log_stdout () { cat >&$stdout; }
RUNTIME_log_stderr () { cat >&2; }
: "${RUNTIME_arch_run?}"
: ${MAX_SMP:=$(getconf _NPROCESSORS_ONLN)}
: ${TIMEOUT:=90s}

PASS() { echo -ne "\e[32mPASS\e[0m"; }
SKIP() { echo -ne "\e[33mSKIP\e[0m"; }
FAIL() { echo -ne "\e[31mFAIL\e[0m"; }

extract_summary()
{
    local cr=$'\r'
    tail -3 | grep '^SUMMARY: ' | sed 's/^SUMMARY: /(/;s/'"$cr"'\{0,1\}$/)/'
}

# We assume that QEMU is going to work if it tried to load the kernel
premature_failure()
{
    local log="$(eval $(get_cmdline _NO_FILE_4Uhere_) 2>&1)"

    echo "$log" | grep "_NO_FILE_4Uhere_" |
        grep -q -e "could not \(load\|open\) kernel" -e "error loading" &&
        return 1

    RUNTIME_log_stderr <<< "$log"

    echo "$log"
    return 0
}

get_cmdline()
{
    local kernel=$1
    echo "TESTNAME=$testname TIMEOUT=$timeout ACCEL=$accel $RUNTIME_arch_run $kernel -smp $smp $opts"
}

skip_nodefault()
{
    [ "$run_all_tests" = "yes" ] && return 1
    [ "$STANDALONE" != "yes" ] && return 0

    while true; do
        read -r -p "Test marked not to be run by default, are you sure (y/N)? " yn
        case $yn in
            "Y" | "y" | "Yes" | "yes")
                return 1
                ;;
            "" | "N" | "n" | "No" | "no" | "q" | "quit" | "exit")
                return 0
                ;;
        esac
    done
}

function print_result()
{
    local status="$1"
    local testname="$2"
    local summary="$3"
    local reason="$4"

    if [ -z "$reason" ]; then
        echo "`$status` $testname $summary"
    else
        echo "`$status` $testname ($reason)"
    fi
}

function find_word()
{
    grep -Fq " $1 " <<< " $2 "
}

function run()
{
    local testname="$1"
    local groups="$2"
    local smp="$3"
    local kernel="$4"
    local opts="$5"
    local arch="$6"
    local check="${CHECK:-$7}"
    local accel="$8"
    local timeout="${9:-$TIMEOUT}" # unittests.cfg overrides the default

    if [ -z "$testname" ]; then
        return
    fi

    if [ -n "$only_tests" ] && ! find_word "$testname" "$only_tests"; then
        return
    fi

    if [ -n "$only_group" ] && ! find_word "$only_group" "$groups"; then
        return
    fi

    if [ -z "$only_group" ] && find_word nodefault "$groups" &&
            skip_nodefault; then
        print_result "SKIP" $testname "" "test marked as manual run only"
        return;
    fi

    if [ -n "$arch" ] && [ "$arch" != "$ARCH" ]; then
        print_result "SKIP" $testname "" "$arch only"
        return 2
    fi

    if [ -n "$accel" ] && [ -n "$ACCEL" ] && [ "$accel" != "$ACCEL" ]; then
        print_result "SKIP" $testname "" "$accel only, but ACCEL=$ACCEL"
        return 2
    elif [ -n "$ACCEL" ]; then
        accel="$ACCEL"
    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 [ -f "$path" ] && [ "$(cat $path)" != "$value" ]; then
            print_result "SKIP" $testname "" "$path not equal to $value"
            return 2
        fi
    done

    last_line=$(premature_failure > >(tail -1)) && {
        print_result "SKIP" $testname "" "$last_line"
        return 77
    }

    cmdline=$(get_cmdline $kernel)
    if grep -qw "migration" <<<$groups ; then
        cmdline="MIGRATION=yes $cmdline"
    fi
    if [ "$verbose" = "yes" ]; then
        echo $cmdline
    fi

    # extra_params in the config file may contain backticks that need to be
    # expanded, so use eval to start qemu.  Use "> >(foo)" instead of a pipe to
    # preserve the exit status.
    summary=$(eval $cmdline 2> >(RUNTIME_log_stderr $testname) \
                             > >(tee >(RUNTIME_log_stdout $testname $kernel) | extract_summary))
    ret=$?
    [ "$STANDALONE" != "yes" ] && echo > >(RUNTIME_log_stdout $testname $kernel)

    if [ $ret -eq 0 ]; then
        print_result "PASS" $testname "$summary"
    elif [ $ret -eq 77 ]; then
        print_result "SKIP" $testname "$summary"
    elif [ $ret -eq 124 ]; then
        print_result "FAIL" $testname "" "timeout; duration=$timeout"
    elif [ $ret -gt 127 ]; then
        print_result "FAIL" $testname "" "terminated on SIG$(kill -l $(($ret - 128)))"
    else
        print_result "FAIL" $testname "$summary"
    fi

    return $ret
}

#
# Probe for MAX_SMP, in case it's less than the number of host cpus.
#
# This probing currently only works for ARM, as x86 bails on another
# error first. Also, this probing isn't necessary for any ARM hosts
# running kernels later than v4.3, i.e. those including ef748917b52
# "arm/arm64: KVM: Remove 'config KVM_ARM_MAX_VCPUS'". So, at some
# point when maintaining the while loop gets too tiresome, we can
# just remove it...
while $RUNTIME_arch_run _NO_FILE_4Uhere_ -smp $MAX_SMP \
		|& grep -qi 'exceeds max CPUs'; do
	MAX_SMP=$((MAX_SMP >> 1))
done
run pci-test pci 1 $bin '' '' '' '' ''
