summaryrefslogtreecommitdiffstats
path: root/tests/shell/testcases/maps
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2023-09-18 12:28:17 +0200
committerFlorian Westphal <fw@strlen.de>2023-09-18 13:08:40 +0200
commit4a265e4d1a44ed624ed7b4e688ad39352956a0bf (patch)
tree992f85a05cc2b18637974cbe77256d8bf9dcd2a0 /tests/shell/testcases/maps
parent63af24fc80d1451cdf2d62eecea5e7edb2954123 (diff)
tests/shell: skip map query if kernel lacks support
On recent kernels one can perform a lookup in a map without a destination register (i.e., treat the map like a set -- pure existence check). Add a feature probe and work around the missing feature in typeof_maps_add_delete: do the test with a simplified ruleset, Indicate skipped even though a reduced test was run (earlier errors cause a failure) to not trigger dump validation error. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Thomas Haller <thaller@redhat.com>
Diffstat (limited to 'tests/shell/testcases/maps')
-rwxr-xr-xtests/shell/testcases/maps/typeof_maps_add_delete35
1 files changed, 27 insertions, 8 deletions
diff --git a/tests/shell/testcases/maps/typeof_maps_add_delete b/tests/shell/testcases/maps/typeof_maps_add_delete
index 341de538..5e2f8ecc 100755
--- a/tests/shell/testcases/maps/typeof_maps_add_delete
+++ b/tests/shell/testcases/maps/typeof_maps_add_delete
@@ -1,6 +1,15 @@
#!/bin/bash
-EXPECTED='table ip dynset {
+CONDMATCH="ip saddr @dynmark"
+NCONDMATCH="ip saddr != @dynmark"
+
+# use reduced feature set
+if [ "$NFT_TEST_HAVE_map_lookup" = n ] ; then
+ CONDMATCH=""
+ NCONDMATCH=""
+fi
+
+EXPECTED="table ip dynset {
map dynmark {
typeof ip daddr : meta mark
counter
@@ -9,20 +18,20 @@ EXPECTED='table ip dynset {
}
chain test_ping {
- ip saddr @dynmark counter comment "should not increment"
- ip saddr != @dynmark add @dynmark { ip saddr : 0x1 } counter
- ip saddr @dynmark counter comment "should increment"
- ip saddr @dynmark delete @dynmark { ip saddr : 0x1 }
- ip saddr @dynmark counter comment "delete should be instant but might fail under memory pressure"
+ $CONDMATCH counter comment \"should not increment\"
+ $NCONDMATCH add @dynmark { ip saddr : 0x1 } counter
+ $CONDMATCH counter comment \"should increment\"
+ $CONDMATCH delete @dynmark { ip saddr : 0x1 }
+ $CONDMATCH counter comment \"delete should be instant but might fail under memory pressure\"
}
chain input {
type filter hook input priority 0; policy accept;
- add @dynmark { 10.2.3.4 timeout 1s : 0x2 } comment "also check timeout-gc"
+ add @dynmark { 10.2.3.4 timeout 1s : 0x2 } comment \"also check timeout-gc\"
meta l4proto icmp ip daddr 127.0.0.42 jump test_ping
}
-}'
+}"
set -e
$NFT -f - <<< $EXPECTED
@@ -31,5 +40,15 @@ $NFT list ruleset
ip link set lo up
ping -c 1 127.0.0.42
+$NFT get element ip dynset dynmark { 10.2.3.4 }
+
# wait so that 10.2.3.4 times out.
sleep 2
+
+set +e
+$NFT get element ip dynset dynmark { 10.2.3.4 } && exit 1
+
+if [ "$NFT_TEST_HAVE_map_lookup" = n ] ; then
+ echo "Only tested a subset due to NFT_TEST_HAVE_map_lookup=n. Skipped."
+ exit 77
+fi