From 63739f4b7f923def1db8e2d988ad18d021a9cf2e Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 6 Sep 2023 13:52:16 +0200 Subject: tests/shell: move valgrind wrapper script to separate script Previously, in valgrind mode we would generate one script, which had "$NFT" variable and the temp directory hard coded. Soon, we will run jobs in parallel, so they would need at least different temp directories. Also, we want to put the valgrind results are inside "$NFT_TEST_TESTTMPDIR", along the test data. Extract the wrapper script to a separate script. It does not need to be generated ad-hoc, instead it uses the environment variables "$NFT_REAL" and "$NFT_TEST_TESTTMPDIR", as "run-tests.sh" prepares them. Also, add a "$NFT_REAL" variable for the actual NFT binary. We wrap the "$NFT" variable with VALGRIND=y or the user may pass "NFT='valgrind nft'". We should have access to the real binary. That might be useful for example to call `ldd "$NFT_REAL" | grep libjansson` to check for JSON support. Also, we use libtool. So quite possible the nft binary is actually a shell script. Calling valgrind on that script results in a lot of leak reports from shell (and slows down the command). Instead, use `libtool --mode=execute`. Signed-off-by: Thomas Haller Signed-off-by: Florian Westphal --- tests/shell/helpers/nft-valgrind-wrapper.sh | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100755 tests/shell/helpers/nft-valgrind-wrapper.sh (limited to 'tests/shell/helpers/nft-valgrind-wrapper.sh') diff --git a/tests/shell/helpers/nft-valgrind-wrapper.sh b/tests/shell/helpers/nft-valgrind-wrapper.sh new file mode 100755 index 00000000..9da50d4d --- /dev/null +++ b/tests/shell/helpers/nft-valgrind-wrapper.sh @@ -0,0 +1,17 @@ +#!/bin/bash -e + +SUFFIX="$(date '+%Y%m%d-%H%M%S.%6N')" + +rc=0 +libtool \ + --mode=execute \ + valgrind \ + --log-file="$NFT_TEST_TESTTMPDIR/valgrind.$SUFFIX.%p.log" \ + --trace-children=yes \ + --leak-check=full \ + --show-leak-kinds=all \ + "$NFT_REAL" \ + "$@" \ + || rc=$? + +exit $rc -- cgit v1.2.3