#!/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 pci-test pci 1 $bin '' '' '' '' ''
