#!/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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
6D8o93EVhP+USBsDzCvWGz4t379Q8S/WuPoxDkOyzljYjDeSn7lWXLtnSYRynDC6zoLu18+X66a6
U+b4XCjO4lllitTF5Pd54nxjeyJxyN2THfEFzPNKAlZ+ySrmbvlE5DR99ItIz+pXA+b+VJk7ceIN
2tG3znfni8qmvyS2lP/FjM305EImwD/vmSwausy41SFPT4bxHuonfOaZObrMoVeNX0ZNGCIHNMs0
25BnB8v7DuNnuB8tSSvvcRg/YXl2ev0M40co38r9utBB70DPdGaLqxt9wvgi7l/DnPgyYVRcURF8
tSPT2Lk9U+bOfAnl13Pf53MZxvXlmXLv50lVMaZgnPwyt6Iw7B6QPFJJXHvk2Ygl4dYhxi7ODiv/
nthyG34TNmMsPYxdy+eKwvl4LnratJtvlPWnht97LbHlJvx+S57dwf5kGF+17r2Le8uGTJpA7lTK
++5M44u8D5zexP1r8XusHvr148595plwH9Q3v35cwb3oeek0VI0boslxTdJQM65huTe9vmZcifIt
1rm4qjZbvoMJvH5IkeexBCLuieYeS0XXDeaUcx1MiExDXy9Ca3kWKeviObHhsrhq3XNvEKG7bDpE
hbEK9HKr8syS+Z5M8Nqqkvxly5VWR27Naub+ky5dbycqauT7cxX57uHKIe4jZu63YnwPv79iwtsh
erKM5aS/ODM8yOEGs16msQLPXYnnIBs21sgc12rzvIdzZexf7uFIzeEmj+SAHl+GX7R3wMwRHb/G
r/Fr/Bq/xq/x63/m+tkfTH/y4/o8+zG3/9LH3P6/f8ztv/kxt3/0Y25fvPbxtj/pY26/5GNuf9bH
3H7Vx9z+5R9z+1/8mNu/8WNu//aPuf11r5n5bePX+DV+jV/j1/g1fo1f49f4NX6NX+PX+DV+jV/j
1/g1fo1f49f4NX6NX+PX+DV+jV/j1/g1fo1f49f4NX6NX+PX+DV+jV/j1/g1fo1f49f4NX6NX+PX
+DV+jV/j1/g1fo1f49f4NX6NX+PX+DV+jV/j1/g1fo1f49f4NX6NX+PX+DV+jV/j1/g1fv3/9+qZ
p8hvzWH9n2v+fzGtfI9VvietPGqVv5ZWfsgqj6aVC+v/gbTyXOv/obRyt/U/llY+2/ovqsaW61a5
M638Kqs8N63cb5UXp5XfapW708oDVvnMtPKNVvnstPIuq7wqrXyHVa6nlV9Xaf5fnI6nVX5dWvkK
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
D+S73McAXAEA
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 timer timer 1 $bin '' arm64 '' '' 10s
