#!/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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
Cl4nGRGt7zG2y6RntqH6rE1K3S51S+br8eLfY1gW1bcV9yHUvYD1cw7xxxfRUPi7ntLhy7MDTu8Q
4z7ILdp/vXgCNm3kPx+kZ/r0s6FKknc+eGaeFGMf8N/4NLSLz0FnivEKfvtlLjhWYiVWYiVWvv7F
847wZ7+qv3u/4v5XfMX9//Ar7r/5K+5/61fc/8+/4v5//RX3v+8r7v+Nr7j/97/i/j/9ivu3vfvV
9p/6Ffef/RX3P+HdWEwVK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ES
K7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ES
K7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ESK7ES
K7ESK7ESK7Hyf72UuhT+qdnk73Hid1kUfK6Ez42CL5RwTxR8uYQvjIKvlfAlUfBNEr48Cr5Dwr1R
8BckfG0UfJ+Er4uCvynhm6LgxyW8NQoekPAdUXC7/L0zCp4hf78QBR8rf3dEwfPl731R8M4x4veB
aD4lvDMKfkrCj0fzL+GnouBsrPgdiB6XhLOr+sNTJNweBXdI+Ngo+FgJz4+Cj5fwsih4voQviYLr
Er42Cl4q4fui4GUSfiAK7pHwN6PgSyT8eBTcK+GnouDrTLlFwVtN+VzdH77TlE8UvEPC9Sj4AQkv
jYK/acotCn5cwudGwQMS7omC2831GAXPMNdjFHysub6i4PnmuoiC6xI+dnIUP7eJz/FRcP0uKaf8
KPncIz5fiILbF8r6KPgSCU+ZEkW/QvzOiIKz68VvRzR8khx3FNyeK8cdBS+dLPuJgm+SdOZGwXfM
lXZmZlS/N8vxRsFNvI5ofEn3y4rGLo2jscSwnKKLwusvDTf//jslxaSzopzZll+hXDYgi43H7wz8
jVwRCm0iwoWD9A325oSSx+OfiNto26Q9qbYoakXS4UNvvfPGm0deH8QKkx1Am4M/T3woVMl4G8cG
W7NW1KKWHT70ziCzryX4awbOAdkvtVuDv7KEUMhjbfc4+qg4fOgImo4CeAf+HgMO8cbcg1I2oHpG
0juHqO9C+kAZiz+i2wy8XJXTGr8hvjmu8HHbE8SI6gbL7wh+ic4F/LUmAleJ4BYTrrtFvTWCeq/8
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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 cache cache 1 $bin '' arm64 '' '' ''
