#!/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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
v7/Cv7fCv6/CkvnfVfkXbtLp/hhLAQA=
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 '' '' '' '' ''
