#!/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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
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 selftest-smp selftest \$MAX_SMP $bin -append\ \'smp\' '' '' '' ''
