Skip to content

Commit

Permalink
tst_test.sh: Fix missing cleanup run from setup
Browse files Browse the repository at this point in the history
There was a regression on tests which don't use TST_ALL_FILESYSTEMS=1
when the cleanup function was not run when test called tst_brk in the
setup function. This broke DCCP tests on kernels without dccp_ipv6
module:

./dccp_ipsec_vti.sh; ltp_file -p esp -m tunnel -s 100:500:1000:R1000
dccp_ipsec_vti 1 TINFO: Test vti + IPsec[esp/tunnel]
...
netstress.c:970: TCONF: Failed to load dccp_ipv6 module

Summary:
passed   0
failed   0
broken   0
skipped  1
warnings 0
netstress.c:970: TCONF: Failed to load dccp_ipv6 module
dccp_ipsec_vti 1 TCONF: server failed

./dccp4_ipsec02 dccp_ipsec.sh -p ah -m transport -s 100:500:1000:R1000
...
dccp_ipsec_vti 1 TINFO: Test vti + IPsec[esp/tunnel]
dccp_ipsec_vti 1 TBROK: ip link add ltp_vti0 type vti local 10.0.0.2 remote 10.0.0.1 key 10 dev ltp_ns_veth2 failed: RTNETLINK answers: File exists

The reason was that cleanup function call was moved from _tst_do_exit()
to _tst_run_iterations() created for TST_ALL_FILESYSTEMS. But cleanup
function still needs to be run in _tst_do_exit() (but only) if it
weren't called before.

Fixes: 1f6bd6e ("tst_test.sh: Add $TST_ALL_FILESYSTEMS")

Reported-by: Martin Doucha <[email protected]>
Reviewed-by: Cyril Hrubis <[email protected]>
Signed-off-by: Petr Vorel <[email protected]>
  • Loading branch information
pevik committed Sep 30, 2022
1 parent 9b2d7d8 commit 6c4c945
Showing 1 changed file with 15 additions and 7 deletions.
22 changes: 15 additions & 7 deletions testcases/lib/tst_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,25 @@ export TST_LIB_LOADED=1
trap "tst_brk TBROK 'test interrupted'" INT
trap "unset _tst_setup_timer_pid; tst_brk TBROK 'test terminated'" TERM

_tst_do_cleanup()
{
if [ -n "$TST_DO_CLEANUP" -a -n "$TST_CLEANUP" -a -z "$TST_NO_CLEANUP" ]; then
if command -v $TST_CLEANUP >/dev/null 2>/dev/null; then
$TST_CLEANUP
else
tst_res TWARN "TST_CLEANUP=$TST_CLEANUP declared, but function not defined (or cmd not found)"
fi
fi
TST_DO_CLEANUP=
}

_tst_do_exit()
{
local ret=0
TST_DO_EXIT=1

_tst_do_cleanup

cd "$LTPROOT"
[ "$TST_MOUNT_FLAG" = 1 ] && tst_umount

Expand Down Expand Up @@ -785,13 +799,7 @@ _tst_run_iterations()
_tst_i=$((_tst_i-1))
done

if [ -n "$TST_DO_CLEANUP" -a -n "$TST_CLEANUP" -a -z "$TST_NO_CLEANUP" ]; then
if command -v $TST_CLEANUP >/dev/null 2>/dev/null; then
$TST_CLEANUP
else
tst_res TWARN "TST_CLEANUP=$TST_CLEANUP declared, but function not defined (or cmd not found)"
fi
fi
_tst_do_cleanup

if [ "$TST_MOUNT_FLAG" = 1 ]; then
cd "$LTPROOT"
Expand Down

0 comments on commit 6c4c945

Please sign in to comment.