From 16b3833344ad04194f10b567bc6fae829a52a850 Mon Sep 17 00:00:00 2001 From: Kristof Provost Date: Sat, 23 Jan 2021 10:37:03 +0100 Subject: altq tests: Basic ALTQ test Activate ALTQ_HFSC, crudely check if it really limits bandwidth as we'd expect. Reviewed by: donner@ Differential Revision: https://reviews.freebsd.org/D28303 --- tests/sys/netpfil/pf/Makefile | 3 ++- tests/sys/netpfil/pf/altq.sh | 49 +++++++++++++++++++++++++++++++++++++++++ tests/sys/netpfil/pf/utils.subr | 24 ++++++++++++++++++++ 3 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 tests/sys/netpfil/pf/altq.sh (limited to 'tests/sys') diff --git a/tests/sys/netpfil/pf/Makefile b/tests/sys/netpfil/pf/Makefile index 68f54c801297..99b22399231e 100644 --- a/tests/sys/netpfil/pf/Makefile +++ b/tests/sys/netpfil/pf/Makefile @@ -5,7 +5,8 @@ PACKAGE= tests TESTSDIR= ${TESTSBASE}/sys/netpfil/pf TESTS_SUBDIRS+= ioctl -ATF_TESTS_SH+= anchor \ +ATF_TESTS_SH+= altq \ + anchor \ checksum \ forward \ fragmentation \ diff --git a/tests/sys/netpfil/pf/altq.sh b/tests/sys/netpfil/pf/altq.sh new file mode 100644 index 000000000000..89da4c0deb6f --- /dev/null +++ b/tests/sys/netpfil/pf/altq.sh @@ -0,0 +1,49 @@ +. $(atf_get_srcdir)/utils.subr + +atf_test_case "hfsc" "cleanup" +hfsc_head() +{ + atf_set descr 'Basic HFSC test' + atf_set require.user root +} + +hfsc_body() +{ + altq_init + is_altq_supported hfsc + + epair=$(vnet_mkepair) + vnet_mkjail altq_hfsc ${epair}b + + ifconfig ${epair}a 192.0.2.1/24 up + jexec altq_hfsc ifconfig ${epair}b 192.0.2.2/24 up + + # Sanity check + atf_check -s exit:0 -o ignore ping -i .1 -c 3 -s 1200 192.0.2.2 + + jexec altq_hfsc pfctl -e + pft_set_rules altq_hfsc \ + "altq on ${epair}b bandwidth 100b hfsc queue { default }" \ + "queue default hfsc(default linkshare 80b)" \ + "pass proto icmp " + + # single ping succeeds just fine + atf_check -s exit:0 -o ignore ping -c 1 192.0.2.2 + + # "Saturate the link" + ping -i .1 -c 5 -s 1200 192.0.2.2 + + # We should now be hitting the limits and get this packet dropped. + atf_check -s exit:2 -o ignore ping -c 1 -s 1200 192.0.2.2 +} + +hfsc_cleanup() +{ + altq_cleanup +} + +atf_init_test_cases() +{ + atf_add_test_case "hfsc" +} + diff --git a/tests/sys/netpfil/pf/utils.subr b/tests/sys/netpfil/pf/utils.subr index 62e85d5cc463..d7df2a6747da 100644 --- a/tests/sys/netpfil/pf/utils.subr +++ b/tests/sys/netpfil/pf/utils.subr @@ -79,3 +79,27 @@ pfsynct_cleanup() { pft_cleanup } + +is_altq_supported() +{ + sysctl -q kern.features.altq >/dev/null || \ + atf_skip "Test requires ALTQ" + + while [ -n "$1" ] + do + sysctl -q kern.features.altq.${1} >/dev/null || \ + atf_skip "Test required ALTQ_${1}" + shift + done +} + +altq_init() +{ + pft_init + is_altq_supported +} + +altq_cleanup() +{ + pft_cleanup +} -- cgit v1.2.3