Extend tests/shell coverage to exercise merging nested sets, provided by fixes such as: a6b75b837f5e ("evaluate: set: Allow for set elems to be sets") Signed-off-by: Pablo Neira Ayuso --- .../testcases/sets/dumps/recursive_merge.nft | 8 +++++++ tests/shell/testcases/sets/recursive_merge | 22 +++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 tests/shell/testcases/sets/dumps/recursive_merge.nft create mode 100755 tests/shell/testcases/sets/recursive_merge diff --git a/tests/shell/testcases/sets/dumps/recursive_merge.nft b/tests/shell/testcases/sets/dumps/recursive_merge.nft new file mode 100644 index 000000000000..9206f9f98d8c --- /dev/null +++ b/tests/shell/testcases/sets/dumps/recursive_merge.nft @@ -0,0 +1,8 @@ +table ip x { + chain y { + ip saddr { 1.1.1.0, 2.2.2.0, 3.3.3.0 } + ip saddr { 4.4.4.0, 5.5.5.0, 6.6.6.0 } + ip saddr { 4.4.4.0, 5.5.5.0, 6.6.6.0, 8.8.8.0 } + ip saddr { 1.1.1.0, 2.2.2.0, 7.7.7.0, 9.9.9.0 } + } +} diff --git a/tests/shell/testcases/sets/recursive_merge b/tests/shell/testcases/sets/recursive_merge new file mode 100755 index 000000000000..f12f63babb0b --- /dev/null +++ b/tests/shell/testcases/sets/recursive_merge @@ -0,0 +1,22 @@ +#!/bin/bash +set -e + +RULESET="define myset2 = { + 2.2.3.0, +} +define myset = { + 1.1.1.0, + 2.2.2.0, + $myset2, +} +define myset3 = { + { 1.1.1.0, 2.2.2.0 } +} +add table ip x +add chain ip x y +add rule ip x y ip saddr { \$myset, 3.3.3.0 } +add rule ip x y ip saddr { { 4.4.4.0, 5.5.5.0 }, 6.6.6.0 } +add rule ip x y ip saddr { { 8.8.8.0, { 4.4.4.0, 5.5.5.0 } }, 6.6.6.0 } +add rule ip x y ip saddr { 9.9.9.0, \$myset3, 7.7.7.0 }" + +$NFT -f - <<< "$RULESET" -- 2.30.2 Add a testcase to cover for merging two rules into verdict map, added by 345d9260f7fe ("optimize: merge several selectors with different verdict into verdict map"). Signed-off-by: Pablo Neira Ayuso --- .../testcases/optimizations/dumps/merge_vmap.nft | 5 +++++ tests/shell/testcases/optimizations/merge_vmap | 13 +++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 tests/shell/testcases/optimizations/dumps/merge_vmap.nft create mode 100644 tests/shell/testcases/optimizations/merge_vmap diff --git a/tests/shell/testcases/optimizations/dumps/merge_vmap.nft b/tests/shell/testcases/optimizations/dumps/merge_vmap.nft new file mode 100644 index 000000000000..2c2535264135 --- /dev/null +++ b/tests/shell/testcases/optimizations/dumps/merge_vmap.nft @@ -0,0 +1,5 @@ +table ip x { + chain y { + ip saddr . ip daddr vmap { 1.1.1.1 . 2.2.2.2 : accept, 2.2.2.2 . 3.3.3.3 : drop } + } +} diff --git a/tests/shell/testcases/optimizations/merge_vmap b/tests/shell/testcases/optimizations/merge_vmap new file mode 100644 index 000000000000..5d4454cd7e2a --- /dev/null +++ b/tests/shell/testcases/optimizations/merge_vmap @@ -0,0 +1,13 @@ +#!/bin/bash + +set -e + +RULESET="table ip x { + chain y { + ip saddr 1.1.1.1 ip daddr 2.2.2.2 accept + ip saddr 2.2.2.2 ip daddr 3.3.3.3 drop + } +}" + +# check that optimizer output displays vmap in the listing +$NFT -o -f - <<< $RULESET 2>&1 | grep vmap -- 2.30.2