diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2022-09-13 14:35:19 +1000 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2022-09-13 11:12:41 +0200 |
commit | 8cb7d5b461f0fc7c49fcb5cd6b0ce8dfcb15fce8 (patch) | |
tree | 8283faa84c398d39581ed31bfc15b0fc564780d6 | |
parent | 1e4a15398f2f932e290ab222d2d57a47018f2245 (diff) | |
download | passt-8cb7d5b461f0fc7c49fcb5cd6b0ce8dfcb15fce8.tar passt-8cb7d5b461f0fc7c49fcb5cd6b0ce8dfcb15fce8.tar.gz passt-8cb7d5b461f0fc7c49fcb5cd6b0ce8dfcb15fce8.tar.bz2 passt-8cb7d5b461f0fc7c49fcb5cd6b0ce8dfcb15fce8.tar.lz passt-8cb7d5b461f0fc7c49fcb5cd6b0ce8dfcb15fce8.tar.xz passt-8cb7d5b461f0fc7c49fcb5cd6b0ce8dfcb15fce8.tar.zst passt-8cb7d5b461f0fc7c49fcb5cd6b0ce8dfcb15fce8.zip |
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>
-rwxr-xr-x | test/lib/setup | 2 | ||||
-rwxr-xr-x | test/lib/term | 2 | ||||
-rwxr-xr-x | test/lib/test | 4 | ||||
-rwxr-xr-x | test/run | 2 |
4 files changed, 9 insertions, 1 deletions
diff --git a/test/lib/setup b/test/lib/setup index f1e429c..b9c9e81 100755 --- a/test/lib/setup +++ b/test/lib/setup @@ -394,6 +394,8 @@ teardown_demo_podman() { # $*: Suffix list of setup_*() functions to be called setup() { for arg do + STATESETUP="${STATEBASE}/${arg}" + mkdir -p "${STATESETUP}" eval setup_${arg} done } diff --git a/test/lib/term b/test/lib/term index 2355e64..8b8ad56 100755 --- a/test/lib/term +++ b/test/lib/term @@ -639,7 +639,7 @@ pause_continue() { # run_term() - Start tmux session, running entry point, with recording if needed 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 printf '\e[8;50;240t' diff --git a/test/lib/test b/test/lib/test index 0d06afd..3dbae0b 100755 --- a/test/lib/test +++ b/test/lib/test @@ -351,6 +351,10 @@ test_one() { [ ${CI} -eq 1 ] && video_link "${1}" 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_perf_nok=0 TEST_ONE_skip=0 @@ -48,6 +48,7 @@ COMMIT="$(git log --oneline --no-decorate -1)" # cleanup() - Remove temporary files cleanup() { + [ ${DEBUG} -eq 1 ] || rm -rf "${STATEBASE}" rm -f /tmp/.passt_test_log_pipe } @@ -176,6 +177,7 @@ else rm -rf "${LOGDIR}" mkdir -p "${LOGDIR}" :> "${LOGFILE}" + STATEBASE="$(mktemp -d --tmpdir passt-tests-XXXXXX)" trap "cleanup" EXIT run_term fi |