test: Create common state directories for temporary files
The test scripts create a bunch of temporary files to keep track of internal state. Some are made in /tmp with individual mktemp calls, some go in the passt source directory, and some go in $LOGDIR. This can sometimes make it messy to clean up after failed test runs. Start cleaning this up by creating a single "state" directory ($STATEBASE) in /tmp for all the state or temporary files used by a single test run. Clean it up automatically in cleanup() - except when DEBUG==1, because those files can be useful for debugging test script failures. We create subdirectories under $STATEBASE for each setup function, exposed as $STATESETUP. We also create subdirectories for each test script and expose those to the scripts as __STATEDIR__. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
1e4a15398f
commit
8cb7d5b461
4 changed files with 9 additions and 1 deletions
|
@ -394,6 +394,8 @@ teardown_demo_podman() {
|
||||||
# $*: Suffix list of setup_*() functions to be called
|
# $*: Suffix list of setup_*() functions to be called
|
||||||
setup() {
|
setup() {
|
||||||
for arg do
|
for arg do
|
||||||
|
STATESETUP="${STATEBASE}/${arg}"
|
||||||
|
mkdir -p "${STATESETUP}"
|
||||||
eval setup_${arg}
|
eval setup_${arg}
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
|
@ -639,7 +639,7 @@ pause_continue() {
|
||||||
|
|
||||||
# run_term() - Start tmux session, running entry point, with recording if needed
|
# run_term() - Start tmux session, running entry point, with recording if needed
|
||||||
run_term() {
|
run_term() {
|
||||||
TMUX="tmux new-session -s passt_test -ePCAP=$PCAP -eDEBUG=$DEBUG"
|
TMUX="tmux new-session -s passt_test -eSTATEBASE=$STATEBASE -ePCAP=$PCAP -eDEBUG=$DEBUG"
|
||||||
|
|
||||||
if [ ${CI} -eq 1 ]; then
|
if [ ${CI} -eq 1 ]; then
|
||||||
printf '\e[8;50;240t'
|
printf '\e[8;50;240t'
|
||||||
|
|
|
@ -351,6 +351,10 @@ test_one() {
|
||||||
[ ${CI} -eq 1 ] && video_link "${1}"
|
[ ${CI} -eq 1 ] && video_link "${1}"
|
||||||
|
|
||||||
TEST_ONE_subs="$(list_add_pair "" "__BASEPATH__" "${BASEPATH}")"
|
TEST_ONE_subs="$(list_add_pair "" "__BASEPATH__" "${BASEPATH}")"
|
||||||
|
TEST_ONE_subs="$(list_add_pair "${TEST_ONE_subs}" "__STATESETUP__" "${STATESETUP}")"
|
||||||
|
STATEDIR="${STATEBASE}/${1}"
|
||||||
|
mkdir -p "${STATEDIR}"
|
||||||
|
TEST_ONE_subs="$(list_add_pair "${TEST_ONE_subs}" "__STATEDIR__" "${STATEDIR}")"
|
||||||
TEST_ONE_nok=-1
|
TEST_ONE_nok=-1
|
||||||
TEST_ONE_perf_nok=0
|
TEST_ONE_perf_nok=0
|
||||||
TEST_ONE_skip=0
|
TEST_ONE_skip=0
|
||||||
|
|
2
test/run
2
test/run
|
@ -48,6 +48,7 @@ COMMIT="$(git log --oneline --no-decorate -1)"
|
||||||
|
|
||||||
# cleanup() - Remove temporary files
|
# cleanup() - Remove temporary files
|
||||||
cleanup() {
|
cleanup() {
|
||||||
|
[ ${DEBUG} -eq 1 ] || rm -rf "${STATEBASE}"
|
||||||
rm -f /tmp/.passt_test_log_pipe
|
rm -f /tmp/.passt_test_log_pipe
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -176,6 +177,7 @@ else
|
||||||
rm -rf "${LOGDIR}"
|
rm -rf "${LOGDIR}"
|
||||||
mkdir -p "${LOGDIR}"
|
mkdir -p "${LOGDIR}"
|
||||||
:> "${LOGFILE}"
|
:> "${LOGFILE}"
|
||||||
|
STATEBASE="$(mktemp -d --tmpdir passt-tests-XXXXXX)"
|
||||||
trap "cleanup" EXIT
|
trap "cleanup" EXIT
|
||||||
run_term
|
run_term
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in a new issue