From: Thomas Haller <thaller@redhat.com>
To: NetFilter <netfilter-devel@vger.kernel.org>
Cc: Thomas Haller <thaller@redhat.com>
Subject: [PATCH nft v5 01/19] tests/shell: rework command line parsing in "run-tests.sh"
Date: Wed, 6 Sep 2023 13:52:04 +0200 [thread overview]
Message-ID: <20230906120109.1773860-2-thaller@redhat.com> (raw)
In-Reply-To: <20230906120109.1773860-1-thaller@redhat.com>
Parse the arguments in a loop, so that their order does not matter.
Also, soon more command line arguments will be added, and this way of
parsing seems more maintainable and flexible.
Currently this is still after the is-root check and after unshare. That
will be addressed later.
Signed-off-by: Thomas Haller <thaller@redhat.com>
---
tests/shell/run-tests.sh | 98 ++++++++++++++++++++++++++++------------
1 file changed, 68 insertions(+), 30 deletions(-)
diff --git a/tests/shell/run-tests.sh b/tests/shell/run-tests.sh
index b66ef4fa4d1f..a15764935ec6 100755
--- a/tests/shell/run-tests.sh
+++ b/tests/shell/run-tests.sh
@@ -1,10 +1,5 @@
#!/bin/bash
-# Configuration
-TESTDIR="./$(dirname $0)/testcases"
-SRC_NFT="$(dirname $0)/../../src/nft"
-DIFF=$(which diff)
-
msg_error() {
echo "E: $1 ..." >&2
exit 1
@@ -18,6 +13,32 @@ msg_info() {
echo "I: $1"
}
+usage() {
+ echo " $0 [OPTIONS]"
+ echo
+ echo "OPTIONS:"
+ echo " -h|--help : Print usage."
+ echo " -v : Sets VERBOSE=y."
+ echo " -g : Sets DUMPGEN=y."
+ echo " -V : Sets VALGRIND=y."
+ echo " -K : Sets KMEMLEAK=y."
+ echo
+ echo "ENVIRONMENT VARIABLES:"
+ echo " NFT=<CMD> : Path to nft executable. Will be called as \`\$NFT [...]\` so"
+ echo " it can be a command with parameters. Note that in this mode quoting"
+ echo " does not work, so the usage is limited and the command cannot contain"
+ echo " spaces."
+ echo " VERBOSE=*|y : Enable verbose output."
+ echo " DUMPGEN=*|y : Regenerate dump files."
+ echo " VALGRIND=*|y : Run \$NFT in valgrind."
+ echo " KMEMLEAK=*|y : Check for kernel memleaks."
+}
+
+# Configuration
+TESTDIR="./$(dirname $0)/testcases"
+SRC_NFT="$(dirname $0)/../../src/nft"
+DIFF=$(which diff)
+
if [ "$(id -u)" != "0" ] ; then
msg_error "this requires root!"
fi
@@ -31,6 +52,48 @@ if [ "${1}" != "run" ]; then
fi
shift
+VERBOSE="$VERBOSE"
+DUMPGEN="$DUMPGEN"
+VALGRIND="$VALGRIND"
+KMEMLEAK="$KMEMLEAK"
+
+TESTS=()
+
+while [ $# -gt 0 ] ; do
+ A="$1"
+ shift
+ case "$A" in
+ -v)
+ VERBOSE=y
+ ;;
+ -g)
+ DUMPGEN=y
+ ;;
+ -V)
+ VALGRIND=y
+ ;;
+ -K)
+ KMEMLEAK=y
+ ;;
+ -h|--help)
+ usage
+ exit 0
+ ;;
+ --)
+ TESTS+=( "$@" )
+ shift $#
+ ;;
+ *)
+ # Any unrecognized option is treated as a test name, and also
+ # enable verbose tests.
+ TESTS+=( "$A" )
+ VERBOSE=y
+ ;;
+ esac
+done
+
+SINGLE="${TESTS[*]}"
+
[ -z "$NFT" ] && NFT=$SRC_NFT
${NFT} > /dev/null 2>&1
ret=$?
@@ -59,31 +122,6 @@ if [ ! -x "$DIFF" ] ; then
DIFF=true
fi
-if [ "$1" == "-v" ] ; then
- VERBOSE=y
- shift
-fi
-
-if [ "$1" == "-g" ] ; then
- DUMPGEN=y
- shift
-fi
-
-if [ "$1" == "-V" ] ; then
- VALGRIND=y
- shift
-fi
-
-if [ "$1" == "-K" ]; then
- KMEMLEAK=y
- shift
-fi
-
-for arg in "$@"; do
- SINGLE+=" $arg"
- VERBOSE=y
-done
-
kernel_cleanup() {
$NFT flush ruleset
$MODPROBE -raq \
--
2.41.0
next prev parent reply other threads:[~2023-09-06 12:02 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-06 11:52 [PATCH nft v5 00/19] tests/shell: allow running tests as non-root Thomas Haller
2023-09-06 11:52 ` Thomas Haller [this message]
2023-09-06 11:52 ` [PATCH nft v5 02/19] tests/shell: rework finding tests and add "--list-tests" option Thomas Haller
2023-09-06 11:52 ` [PATCH nft v5 03/19] tests/shell: check test names before start and support directories Thomas Haller
2023-09-06 11:52 ` [PATCH nft v5 04/19] tests/shell: export NFT_TEST_BASEDIR and NFT_TEST_TMPDIR for tests Thomas Haller
2023-09-06 11:52 ` [PATCH nft v5 05/19] tests/shell: normalize boolean configuration in environment variables Thomas Haller
2023-09-06 11:52 ` [PATCH nft v5 06/19] tests/shell: print test configuration Thomas Haller
2023-09-06 11:52 ` [PATCH nft v5 07/19] tests/shell: run each test in separate namespace and allow rootless Thomas Haller
2023-09-06 11:52 ` [PATCH nft v5 08/19] tests/shell: interpret an exit code of 77 from scripts as "skipped" Thomas Haller
2023-09-06 11:52 ` [PATCH nft v5 09/19] tests/shell: support --keep-logs option (NFT_TEST_KEEP_LOGS=y) to preserve test output Thomas Haller
2023-09-06 11:52 ` [PATCH nft v5 10/19] tests/shell: move the dump diff handling inside "test-wrapper.sh" Thomas Haller
2023-09-06 11:52 ` [PATCH nft v5 11/19] tests/shell: rework printing of test results Thomas Haller
2023-09-06 11:52 ` [PATCH nft v5 12/19] tests/shell: move taint check to "test-wrapper.sh" Thomas Haller
2023-09-06 11:52 ` [PATCH nft v5 13/19] tests/shell: move valgrind wrapper script to separate script Thomas Haller
2023-09-06 11:52 ` [PATCH nft v5 14/19] tests/shell: support running tests in parallel Thomas Haller
2023-09-06 11:52 ` [PATCH nft v5 15/19] tests/shell: bind mount private /var/run/netns in test container Thomas Haller
2023-09-06 11:52 ` [PATCH nft v5 16/19] tests/shell: skip test in rootless that hit socket buffer size limit Thomas Haller
2023-09-06 11:52 ` [PATCH nft v5 17/19] tests/shell: record the test duration (wall time) in the result data Thomas Haller
2023-09-06 11:52 ` [PATCH nft v5 18/19] tests/shell: fix "0003includepath_0" for different TMPDIR Thomas Haller
2023-09-06 11:52 ` [PATCH nft v5 19/19] tests/shell: set TMPDIR for tests in "test-wrapper.sh" Thomas Haller
2023-09-07 18:36 ` [PATCH nft v5 00/19] tests/shell: allow running tests as non-root Florian Westphal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230906120109.1773860-2-thaller@redhat.com \
--to=thaller@redhat.com \
--cc=netfilter-devel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).