#!/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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
glPFOZPD1TOZ3yHxv0Z3jm4Q56uk41k79BV7YZtojb8k7g64KoeT/U/zXy1ydX4G+0z3wOhOwa7j
4nz+6e/en9/D19tIv2L3lvYylvs66trPhXe1oy6TKXWFMl/3+Vy78Elor3e0k51yuIJhM1+u+sXd
f9VvnsMMPy5zifw9dPwcIPIM+a/lujLz7OZZBOnsCOy/dI+F/k0ciimwMDpkXuhzdkHQdfgX03O0
/eGpL31n/oGua2cd2P2Q2Idu9oxwOXXmQvzsOrQ7r6VeTW+pH86MjvMin/L++9xXvSBtM09E970o
L9Itcz5kH872W/79Gom34AJ4H1vxIucKirzrpfrnog3TglOrk/XOSuicBzpXJffQIqxN4l3D2qzu
ym3xqFrLTdjnFduX6/NWlQ3493iIH7KfN2Gv/0zeyzF18T7oYvR5BcRrKzXf7jDPzfOziqsYvdMu
g8/d7yTcmUD7L+mVgP+B/j1XmSvMTtE71wzRO8vAXyHZXmlvZoDP+u9klNVIP2c3PRvnVlxkfxTY
H3pGLgfjrO+a3LJBdfDz+eb36bmO9D5FvjNM7BUj/Sr0ynOW9omLo+9XWFnkM3MYm2B7L8Z4R2BP
Pszn9sJ4Qv8sesttp+Y39bDqfaG/R/j5gEWHLXry/+T91p/yZ1DYxwr8fmeqd/OA54Qw78I+U95P
4znDf+D3MllHK/7o3yWhf3fmLsiqkuwlPovxSWeHd0NeL+mKqxdyIn+V5JgFOZH8nobcTH+0XlUg
N8SN6P9C7635snGOk+Ok8ZljpXHeHzOmz58z8bzjelOneU5dH8lz4L101sfPvNGn3OPIf63i740a
afTyPTSNr5PDYXmfGbKgXDt/zxHw6flt615ZyEQePhvycUI+OXIPq4Tu6zrpeDQ/H3suGp0Hhc9D
JX+ufKQh16GL/r1jryLWbi/k0CPf/WiDHuXKsZBsreuK+yQx54Dm82qn5b9bRO9O2HdMvDeBzsJ+
fE6co3g1lkfPeT+gjmwpeJ7VbdX48/L8PcL8N8ZeeZmeT9+7wuFyhXI8CfxOmp+9L+YlLXXj5m7O
q4PTXqM65tbIcxrKYTep9O+gpNE+lBc5V7G8d8Gk98ExQY/0g84EW4dv5O/PaAa9Z4Xv54c/2EEw
8i+JLvVBtOnu72PwW45F9gFF6pnC9dw4xufW1S11KvI8O8f/lc9q+0lm/PyYzhqvYKHSc1xurnY7
y8tMEv9eRPh21nlTSnAqvT+Lzgv4nWj6xFjO5rDQJfzfSxtVew+9W09Lr21PkOeA/DxrhD98jo+1
7izobt2mr2hJZOW9t8P31bTa6/rFvleZyG7Mgl08KZ4jfq35u5X5Fc+L91jflsRuJFx6Hwf18wFs
U089nXNfQveBuT33JkDvK+ADMkdKAcuo/cNZOl9jfnoWw7t7cssfIJMA6kFrGPEIvU9xwPd44g/O
/K2fwdbdTvv8qNo5iP1WJ8IXf2PLqHr6N6b+MDmfn0Pm0FnUyOjefEX0nTKUr0imODGVTboFdnBk
6sZRVlyzvbXNGfBiwo/L+6D0/QHM63uW37fQPU65f5BsxLypYt5W0v6h+d89K2MFleXdBz8mXMA6
6X1nreDFgThnNPaTNjkHhFeJObgS/B4p0DtfVG21PSeZ0Tq8aRTJcrWq1NIdh1uge0fo3VSob9pP
fodi0eVXIuP2MzFuBfNE/vdpfrbvHX5KvOtk+CeWOJC/LxTxzR/J9mQKv6oJbRT4687U5lFmjGPa
T8K32jnS7RfkPX6ybxRzqYj9TJtG5yr/Go45q5F9xMYE8t6xXAeqH/uxS6wDxUUyJR+R3lso7g9E
72DE+mXmfkzPV5Sck8+CwCc6jBgsie/jjkj9dLP+fHiqOBtO95v1DcKXEufDbERtoeVuag50twv2
5B253k1fj/69p4LBbNIOrDsaS/XZyLMogl+LnTR5oDlJ5nwx3u+SfnMfEnysZum1/FkR9D8sOp4p
sfSeBZ2jEX9S+NkD4tGRLLT0KH9GtPZV8Ed3EUfaxPuDzkA2dG8+/Ri/43tjGkvbC3+wo15Nm5tG
/66D6qgdrFKcONIv7tVjfwStKrQjXsX9eMSB/eE8J78LgXnBHmneReTryyHOYqx3FIXf+ALdZVxP
e3NVAHsi9DGd/EF6NyLlGqBHe8UezO9vmflSym+Y3y3PA4v4QvqV2lkhSyF/zTXQH4zqwWAp/x5+
lz6N/p20gXOAdUV4fYhP6d8p/Bc5rx7MQy/HGUhb3Mt93qfze6ypRuSdYPArH3+f7qp++1AGZDGS
VT/qZYGpTjbtUKZ90Sdb6d1gyazjwAfimaBs/p492o/Es8i/+RhySc0/xJRNU1hwyaMsNYM/v0jP
NGZanmdk9qZSNv9Xy+lddpNXpnD45PtSDqmN3lLER0bP3l8tp/eQZ8m6rPtSIm0v3tRUSmewU1h7
aR54vJjTKXidZES0HmBsl0nPbEP1mZuUul3qllGvJ4p/j6Ehpm8r7oOoew7r5wzijy+iofB3PaXD
l2f7sjzDjHsht1j/9fz7sGmj/3k/PdOnnw6Xk7zzwTPTU409wH/j0/AuPgddqcYr+O2XueB4iZd4
iZd4+foXz9vCn/2q/u75ivtf8RX3/4OvuP/Wr7j/rV9x/z//ivv/9Vfc/56vuP83vuL+3/uK+//0
K+7f9s5X27/jK+4/+yvuf9I78ZgqXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIl
XuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIl
XuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIlXuIl
XuIlXuIlXuIlXuIlXuLl/3oZN0Xhn5pN/J44XvyeGAPXJTw/Bj5fwvUYuEfCZ8XAl0n4/Bi4V8IX
xMDXS7gnBt4u4Yti4DslfFkMvEvCG2Pg+yTcGwMPSPi6GPgJCV8fA2cu8XtTDDxVwttj4E4J3xED
33OF+L0zlk8J74qBH5bwPbH8S/i+GPgxCT8cOy4JD8TAgxJ+LAZuHyd+26fGjFfCM2LgGRI+MQbu
lPD5MfBxEr4oBj5RwnfEwPMlfGcMfJaEPxcDXyDhe2LgiyR8Xwy8UcIPx8DXSfixGPgmUz75A+E7
JNwZA39OwsfFwLtMucXA90l4fgw8IOF6DPyEhM+KgTNzPcbAU831FQN3musiBj5Owp+LgQdvleOI
get3Sr5ix3u3bBcDty+S/E6LsScSbo+B55eJ36kx8OA8qZ8xcDZFji8Gbs8VnxNj4LOmyn5i4Jsk
nfkx8PYF0j7Mjun3JvGxMwZu4j0XA7fLdfhlRWMXxtHYoIicYovC6y8MN//+OyXVpLOilNkaL1Mu
GZzJJuJ3Bv5GrwiHNxHhwiH6BntrUsljiY8nbLRt0p5Q2xS1LPnggTfffuPwodeHsMIUJ9Dm4c+T
GA6XM97GucHWqhW1qfMPHnh7iNnXMvy1Amef7JfarcXf/KRw2GNt9xj6KDt44BCajgF4B/4eAQ7x
xtxDUjegemby2weo70L6QBmHP6LbCrxcldOauCGxNaHwMdvjxIjqBstvC36Jzjn8tQ8CrhLFLSZc
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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 cache cache 1 $bin '' arm64 '' '' ''
