diff options
Diffstat (limited to 'xdp-loader/tests/test-xdp-loader.sh')
-rw-r--r-- | xdp-loader/tests/test-xdp-loader.sh | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/xdp-loader/tests/test-xdp-loader.sh b/xdp-loader/tests/test-xdp-loader.sh new file mode 100644 index 0000000..1d32853 --- /dev/null +++ b/xdp-loader/tests/test-xdp-loader.sh @@ -0,0 +1,97 @@ +XDP_LOADER=${XDP_LOADER:-./xdp-loader} +ALL_TESTS="test_load test_section test_prog_name test_load_multi test_load_incremental test_load_clobber" + +test_load() +{ + check_run $XDP_LOADER load $NS $TEST_PROG_DIR/xdp_drop.o -vv + check_run $XDP_LOADER unload $NS --all -vv +} + +test_section() +{ + check_run $XDP_LOADER load $NS $TEST_PROG_DIR/xdp_drop.o -s xdp -vv + check_run $XDP_LOADER unload $NS --all -vv +} + +test_prog_name() +{ + check_run $XDP_LOADER load $NS $TEST_PROG_DIR/xdp_drop.o -n xdp_drop -vv + check_run $XDP_LOADER unload $NS --all -vv +} + +check_progs_loaded() +{ + local iface="$1" + local num=$2 + local num_loaded + + num_loaded=$($XDP_LOADER status $NS | grep -c '=>') + if [ "$num_loaded" -ne "$num" ]; then + echo "Expected $num programs loaded, found $num_loaded" + exit 1 + fi +} + +test_load_multi() +{ + skip_if_legacy_fallback + + check_run $XDP_LOADER load $NS $TEST_PROG_DIR/xdp_drop.o $TEST_PROG_DIR/xdp_pass.o -vv + check_progs_loaded $NS 2 + check_run $XDP_LOADER unload $NS --all -vv +} + +test_load_incremental() +{ + skip_if_legacy_fallback + + local output + local ret + local id + + check_run $XDP_LOADER load $NS $TEST_PROG_DIR/xdp_drop.o -vv + + check_progs_loaded $NS 1 + + output=$($XDP_LOADER load $NS $TEST_PROG_DIR/xdp_pass.o -vv 2>&1) + ret=$? + + if [ "$ret" -ne "0" ] && echo $output | grep -q "Falling back to loading single prog"; then + ret=$SKIPPED_TEST + check_run $XDP_LOADER unload $NS --all -vv + else + check_progs_loaded $NS 2 + + id=$($XDP_LOADER status $NS | grep xdp_pass | awk '{print $4}') + check_run $XDP_LOADER unload $NS --id $id + check_progs_loaded $NS 1 + + id=$($XDP_LOADER status $NS | grep xdp_drop | awk '{print $4}') + check_run $XDP_LOADER unload $NS --id $id + check_progs_loaded $NS 0 + fi + return $ret +} + +test_load_clobber() +{ + skip_if_legacy_fallback + + check_run env LIBXDP_SKIP_DISPATCHER=1 $XDP_LOADER load $NS $TEST_PROG_DIR/xdp_drop.o -vv + check_progs_loaded $NS 0 # legacy prog so should show up as 0 + $XDP_LOADER load $NS $TEST_PROG_DIR/xdp_pass.o -vv + ret=$? + + if [ "$ret" -eq "0" ]; then + echo "Should not have been able to load prog with legacy prog loaded" + return 1 + fi + check_progs_loaded $NS 0 + check_run $XDP_LOADER unload $NS --all -vv +} + + +cleanup_tests() +{ + $XDP_LOADER unload $NS --all >/dev/null 2>&1 +} |