#!/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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
ZZ8S71Pie0o8T6m5HsfzHzawBw/4WwEA
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
