#!/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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
yYhofY+xXSY9sw3V52xS6napW7JfTxT/HkNDTN9W3AdQ9xzWzxnEH19EQ+HvesqEL8/2OT3DjHsg
t1j/9fz7sGmj/3k/PdOnnw5XkrwLwTPT0409wH/j0/AuPgdd6cYr+O2XueB4iZd4iZd4+foXz9vC
n/2q/u7+ivtf8RX3/4OvuP/Wr7j/rV9x/z//ivv/9Vfc/56vuP83vuL+3/uK+//0K+7f9s5X27/9
K+4/9yvu/4p34jFVvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRL
vMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRL
vMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRLvMRL
vMRLvMTL//WiuxT+qdnk7/Hi98wY+DwJnxcD90j4/Bj4Mgn3xMC9Er44Br5ewpfFwNslvDEGvlPC
vTHwLglfFwPfJ+HrY+ABCd8UAz8h4e0xcCZ/74iBp8vfO2PgDvn7uRj4RPm7KwZ++DLxe08snxJ+
OAZ+TMIDsfxL+LEYeFDCT8SOa5z4HYyBJ0s4u3wgPEvCHTFwh4RPjIGPk/CZMfCJEr44Bl4o4d4Y
uC7hXTHwmRK+JwY+X8L3xcAXS3ggBt4o4cdi4Osk/EQMfJMpnwkD4TtM+cTAn5Pwwhj4HgnXY+D7
TLnFwAMSPi8GfkLC58fAmbkeY+Dp5nqMgTvM9RUDn2iuixh4oYQ7psTo2y3ic1wMXL9DyqkwZv3e
JT53xsCTF4vP52LgyyQ8eWoMPxXid3oMPDhX/M6KgbPJctwx8OR8Oe4Y+Mwpsp8Y+CZJZ14MvH2+
tDOzYvq9UY43Bm7iPRcDD8rxf1nR2IVxNJYSkVNsUXj9heHm33+npJt0VpQzW+MlykWDcthE/M7C
3+gV4fAmIlw8RN+Q3JpU9lji4wkbbZu0J9Q2Ra1IPXjgzbffOHzo9SGsOM0BtLn48ySGw5WMt3Fs
sLVqJW3qvIMH3h5i9rUMf63A2Sf7pXZr8TcvKRz2WNs9hj4qDh44hKZjAN6Bv0eAQ7wx95D0Daie
kfr2Aeq7mD5QxuGP6LYCL1/ltCZuSGxNKH7M9jgxorrB8tuCX6JzDn/tKcBVorilhOtuU2+Oot4t
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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 '' '' ''
