#!/usr/bin/env bash

if [ ${SWTPM_TEST_EXPENSIVE:-0} -eq 0 ]; then
	exit 77
fi

ROOT=${abs_top_builddir:-$(pwd)/..}
TESTDIR=${abs_top_testdir:-${PWD}/$(dirname "$0")}

function cleanup() {
	if [ -n "${SWTPM_PID}" ]; then
		kill -9 ${SWTPM_PID}
	fi
	if [ -n "${SWTPM1_PID}" ]; then
		kill -9 ${SWTPM1_PID}
	fi
	if [ -n ${WORKDIR} ]; then
		rm -rf ${WORKDIR}
	fi
	# clean up after (interrupted) test suite
	rm -f /tmp/.key-*-0 /tmp/.delegation-0 /tmp/.transdigest-*-0
}

trap "cleanup" EXIT

source ${TESTDIR}/common

WORKDIR=$(mktemp -d)
TESTLOG=${WORKDIR}/test.log

# variables used by the TPM 1.2 test suite
TPM_SERVER_PORT=65440
TPM_SERVER_NAME=localhost
SLAVE_TPM_PORT=65442
SLAVE_TPM_SERVER=localhost

SWTPM_INTERFACE=socket+socket

# Start main TPM 1.2
SWTPM_SERVER_PORT=${TPM_SERVER_PORT}
SWTPM_SERVER_NAME=${TPM_SERVER_NAME}
SWTPM_CTRL_PORT=65441

mkdir -p ${WORKDIR}/tpm12.1
SWTPM_SERVER_NO_DISCONNECT="1" run_swtpm ${SWTPM_INTERFACE} \
	--tpmstate dir=${WORKDIR}/tpm12.1 \
	--flags not-need-init
SWTPM1_PID=${SWTPM_PID}

# Start 2nd TPM 1.2
SWTPM_SERVER_PORT=${SLAVE_TPM_PORT}
SWTPM_SERVER_NAME=${SLAVE_TPM_SERVER}
SWTPM_CTRL_PORT=65443

mkdir -p ${WORKDIR}/tpm12.2
SWTPM_SERVER_NO_DISCONNECT="1" run_swtpm ${SWTPM_INTERFACE} \
	--tpmstate dir=${WORKDIR}/tpm12.2 \
	--flags not-need-init

pushd ${WORKDIR} &>/dev/null

curl -sJOL https://sourceforge.net/projects/ibmswtpm/files/tpm4769tar.gz/download
tar -xzf tpm4769tar.gz

pushd libtpm &>/dev/null

patch -p0 < ${TESTDIR}/patches/libtpm.patch
if [ $? -ne 0 ]; then
	echo "Error: Patching failed."
	exit 1
fi

./autogen
LIBS="" CFLAGS="-g -O2" ./configure
make -j$(nproc)

pushd utils &>/dev/null

# variables used by TPM 1.2 tools and test suite
export TPM_SERVER_PORT=${TPM_SERVER_PORT} \
    TPM_SERVER_NAME=${TPM_SERVER_NAME} \
    SLAVE_TPM_PORT=${SLAVE_TPM_PORT} \
    SLAVE_TPM_SERVER=${SLAVE_TPM_SERVER} \
    PATH=$PWD:$PATH

if wait_for_serversocket ${TPM_SERVER_PORT} 127.0.0.1 2; then
	echo "Error: swtpm 1 did not open port ${TPM_SERVER_PORT}"
	exit 1
fi

if wait_for_serversocket ${SLAVE_TPM_PORT} 127.0.0.1 2; then
	echo "Error: swtpm 2 did not open port ${SLAVE_TPM_PORT}"
	exit 1
fi

tpmbios

ln -s makeidentity identity

# keep test 1 last due to ERRORs it creates since we do not
# restart the TPM
for tst in 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20 23 25 26 1; do

    TPM_AUDITING=0
    TPM_TRANSPORT=0

    echo "Running test ${tst}"
    if [[ "${tst}" =~ ^(1)$ ]]; then
        $SWTPM_IOCTL --tcp :65441 -i
        tpmbios
    elif [[ "${tst}" = ^25$ ]]; then
        TPM_AUDITING=1
        TPM_TRANSPORT=1
    fi

    timeout 40 ./test_console.sh \
        --non-interactive ${tst} >> ${TESTLOG} </dev/null
    # Ignore all errors that occurred in test 1
    if [ $tst != "1" ] && [ -n "$(grep "ERROR" ${TESTLOG})" ]; then
        echo "Error occurred!"
        cat ${TESTLOG}
        exit 1
    fi
done

$SWTPM_IOCTL --tcp :65441 -s
wait_process_gone ${SWTPM1_PID} 4

$SWTPM_IOCTL --tcp :65443 -s
wait_process_gone ${SWTPM_PID} 4

popd &>/dev/null
popd &>/dev/null

echo "OK"

exit 0
