summaryrefslogtreecommitdiffstats
path: root/xdp-bench/tests/test-xdp-bench.sh
diff options
context:
space:
mode:
Diffstat (limited to 'xdp-bench/tests/test-xdp-bench.sh')
-rw-r--r--xdp-bench/tests/test-xdp-bench.sh126
1 files changed, 126 insertions, 0 deletions
diff --git a/xdp-bench/tests/test-xdp-bench.sh b/xdp-bench/tests/test-xdp-bench.sh
new file mode 100644
index 0000000..7dfc357
--- /dev/null
+++ b/xdp-bench/tests/test-xdp-bench.sh
@@ -0,0 +1,126 @@
+XDP_LOADER=${XDP_LOADER:-./xdp-loader}
+XDP_BENCH=${XDP_BENCH:-./xdp-bench}
+ALL_TESTS="test_drop test_pass test_tx test_rxq_stats test_redirect test_redirect_cpu test_redirect_map test_redirect_map_egress test_redirect_multi test_redirect_multi_egress"
+
+test_basic()
+{
+ action=$1
+
+ export XDP_SAMPLE_IMMEDIATE_EXIT=1
+ check_run $XDP_BENCH $action $NS -vv
+ check_run $XDP_BENCH $action $NS -p read-data -vv
+ check_run $XDP_BENCH $action $NS -p swap-macs -vv
+ check_run $XDP_BENCH $action $NS -m skb -vv
+ check_run $XDP_BENCH $action $NS -e -vv
+}
+
+test_drop()
+{
+ test_basic drop
+}
+test_pass()
+{
+ test_basic pass
+}
+test_tx()
+{
+ test_basic tx
+}
+
+test_rxq_stats()
+{
+ skip_if_missing_veth_rxq
+
+ export XDP_SAMPLE_IMMEDIATE_EXIT=1
+ check_run $XDP_BENCH drop $NS -r -vv
+}
+
+test_redirect()
+{
+ export XDP_SAMPLE_IMMEDIATE_EXIT=1
+ check_run ip link add dev btest0 type veth peer name btest1
+ check_run $XDP_BENCH redirect btest0 btest1 -vv
+ check_run $XDP_BENCH redirect btest0 btest1 -s -vv
+ check_run $XDP_BENCH redirect btest0 btest1 -m skb -vv
+ check_run $XDP_BENCH redirect btest0 btest1 -e -vv
+ ip link del dev btest0
+}
+
+test_redirect_cpu()
+{
+ skip_if_missing_cpumap_attach
+
+ export XDP_SAMPLE_IMMEDIATE_EXIT=1
+ check_run ip link add dev btest0 type veth peer name btest1
+ check_run $XDP_BENCH redirect-cpu btest0 -c 0 -vv
+ check_run $XDP_BENCH redirect-cpu btest0 -c 0 -m skb -vv
+ check_run $XDP_BENCH redirect-cpu btest0 -c 0 -p touch -vv
+ check_run $XDP_BENCH redirect-cpu btest0 -c 0 -p round-robin -vv
+ check_run $XDP_BENCH redirect-cpu btest0 -c 0 -p l4-proto -vv
+ check_run $XDP_BENCH redirect-cpu btest0 -c 0 -p l4-filter -vv
+ check_run $XDP_BENCH redirect-cpu btest0 -c 0 -p l4-hash -vv
+
+ is_progmap_supported || export LIBXDP_SKIP_DISPATCHER=1
+ check_run $XDP_BENCH redirect-cpu btest0 -c 0 -r drop -vv
+ check_run $XDP_BENCH redirect-cpu btest0 -c 0 -r pass -vv
+ check_run $XDP_BENCH redirect-cpu btest0 -c 0 -r redirect -D btest1 -vv
+ ip link del dev btest0
+}
+
+test_redirect_map()
+{
+ export XDP_SAMPLE_IMMEDIATE_EXIT=1
+ check_run ip link add dev btest0 type veth peer name btest1
+ check_run $XDP_BENCH redirect-map btest0 btest1 -vv
+ check_run $XDP_BENCH redirect-map btest0 btest1 -s -vv
+ check_run $XDP_BENCH redirect-map btest0 btest1 -m skb -vv
+ check_run $XDP_BENCH redirect-map btest0 btest1 -e -vv
+ ip link del dev btest0
+}
+
+test_redirect_map_egress()
+{
+ skip_if_missing_cpumap_attach
+
+ export XDP_SAMPLE_IMMEDIATE_EXIT=1
+ check_run ip link add dev btest0 type veth peer name btest1
+ is_progmap_supported || export LIBXDP_SKIP_DISPATCHER=1
+ check_run $XDP_BENCH redirect-map btest0 btest1 -X -vv
+ ip link del dev btest0
+}
+
+test_redirect_multi()
+{
+ export XDP_SAMPLE_IMMEDIATE_EXIT=1
+ check_run ip link add dev btest0 type veth peer name btest1
+ check_run ip link add dev btest2 type veth peer name btest3
+ check_run $XDP_BENCH redirect-multi btest0 btest1 btest2 btest3 -vv
+ check_run $XDP_BENCH redirect-multi btest0 btest1 btest2 btest3 -s -vv
+ check_run $XDP_BENCH redirect-multi btest0 btest1 btest2 btest3 -m skb -vv
+ check_run $XDP_BENCH redirect-multi btest0 btest1 btest2 btest3 -e -vv
+ ip link del dev btest0
+ ip link del dev btest2
+}
+
+test_redirect_multi_egress()
+{
+ skip_if_missing_cpumap_attach
+
+ export XDP_SAMPLE_IMMEDIATE_EXIT=1
+ is_progmap_supported || export LIBXDP_SKIP_DISPATCHER=1
+ check_run ip link add dev btest0 type veth peer name btest1
+ check_run ip link add dev btest2 type veth peer name btest3
+
+ check_run $XDP_BENCH redirect-multi btest0 btest1 btest2 btest3 -X -vv
+
+ ip link del dev btest0
+ ip link del dev btest2
+}
+
+cleanup_tests()
+{
+ ip link del dev btest0 >/dev/null 2>&1
+ ip link del dev btest2 >/dev/null 2>&1
+ $XDP_LOADER unload $NS --all >/dev/null 2>&1
+ $XDP_LOADER clean >/dev/null 2>&1
+}