#!/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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
hh24tNnwMAWJJ808D8k9szm/a6BaA+g0V1brxH6YrKMuYcv463fkrm26L1iENQ77mO9ISDG1iwSH
Uhnmy++Vqgp01m/c1xQ+ksE68coQwpXBZ5t+cl1QP2R6NQ9vcbFIY08nVdyAAhwC9AW3sDRC8WiH
kqfEOGE69zkb5SPCkJPJp499yOWOhm3j9zktq2XZ2de95JvBdwbtdr6ua2uar2e2lmXcqwBhf0ix
ioLfVHvqqvWxbQ+7f27nMWFtvRECV+u93V6IEwUJGm/mwJjI6Ed+7DFB2/kxxSMMX/zCeTdhJVCW
F7C6KI3ttEJakMdl/G9RPxq2p4X+p+aVkYW4YE/n4T1NC32ZKtzC2MUu5ze1wiq/UvJ3pSvbRpDI
Bt+FuJC+4ki2NX3J9yPbilUeA6ocqJ1CW6aS/RLHXvIX89SWCZTB1R9XWQFzvl6Qm8VVvDbROK2A
CSWARfnCLT9BF8YPlmVSCzt9iIwfeU3x0vibDJ6FiQ4s8kdOfJvf45LUxY26hrxllp3rYLGsFnul
n3Ku2K1x2H+kH45G+FLcLG3JlcSejc6UDa3s+bXYtWtSXS+IFiQK6vDLZBbX6J4KWrF/tgqc7t/B
TjykHI6iwOWFNdx+k3BuPO/mONKXR8EhwSVhxHgxJX37o4uLXD/DxuiWzSfPf+5+po1m8sL4mu8L
Ee8Tgk35zrehcO2UveOP6lN3cN29tHs9/PenUXvUtvujHrKjzxWywmBh7H+loFoLKJyYlTixO5HD
TPqw7CrJNjBLXE0pMtfWbL8EwnrDOsEqt4dJnsNm5wOxkD7zqk/nDu1Do7l/cPjm6Pdv/+CMJ66e
Sp2d1NVJHZ3UzUmdnNTFSR2c1L1JnZvUtUkdm9StSZ2a1KVJHZrUnUmdmdSVSZN6Mqkfk3oxqQ+T
erDPBbpi+0sBP9syPnqCz3IL/m9P0D3VpF5M6sP+XuAndWBS9/WPAv6fT8j/1xa81HlJXZfUcUnd
ltRpSV2W1GEVW7SlX9ryCTxdexp8FzSw1GlJXRb8hZ35i7VRfD74JNl3xs9IvZbUZ0k9ltRfSb2V
1FdJPdVaRdEPPJ+snurfu7Zru7Zru7Zru7Zru7Zru7Zru7Zru/Z/2/63T3NWnybI969IU9lTvn9F
vm9Fvl9FKIvfq/Ifr9s1EBhLAQA=
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 psci psci \$MAX_SMP $bin '' '' '' '' ''
