ovni/test/ovni-driver.sh
Rodrigo Arias d1bf4e7520 Allow tests to run their own driver
Tests can now specify a DRIVER option pointing to a shell script that
will run instead of the default driver. It allows tests to run any
commands and run the emulator several times or with different
environment variables.

The full path of the test program is available in the OVNI_TEST_PATH
environment variable.
2023-10-23 07:49:28 +00:00

58 lines
1.1 KiB
Bash
Executable File

#!/bin/sh
# Copyright (c) 2021-2023 Barcelona Supercomputing Center (BSC)
# SPDX-License-Identifier: GPL-3.0-or-later
set -ex
if [ -n "$OVNI_TEST_VERBOSE" ]; then
set -x
fi
dir=$(readlink -f "${OVNI_CURRENT_DIR}")
testname="$dir/$1"
workdir="${testname}.dir"
tracedir="${workdir}/ovni"
export PATH="${OVNI_BUILD_DIR}:$PATH"
export OVNI_TEST_BIN="$testname"
rm -rf "${workdir}"
mkdir -p "${workdir}"
cd "${workdir}"
if [ -z "$OVNI_NPROCS" ]; then
OVNI_NPROCS=1
fi
# Let the test run its own driver
if [ -n "$OVNI_DRIVER" ]; then
. "$OVNI_DRIVER"
else
if [ "$OVNI_NPROCS" -gt 1 ]; then
for i in $(seq 1 "$OVNI_NPROCS"); do
# Run the test in the background
OVNI_RANK=$(($i-1)) OVNI_NRANKS=$OVNI_NPROCS "$testname" &
done
wait
else
"$testname"
fi
if [ -n "$OVNI_DO_SORT" ]; then
ovnisort "$tracedir"
fi
if [ -z "$OVNI_NOEMU" ]; then
# Then launch the emulator in lint mode
ovniemu $OVNI_EMU_ARGS -l "$tracedir"
fi
fi
# Run any post script that was generated
ls -1 *.sh | while read sh; do
echo "Running '$sh'"
bash -ex $sh
done
#rm -rf $tracedir