Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/tests/net/altq tests: add tests for ALTQ CBQ



details:   https://anonhg.NetBSD.org/src/rev/c28c502e1469
branches:  trunk
changeset: 1022349:c28c502e1469
user:      ozaki-r <ozaki-r%NetBSD.org@localhost>
date:      Wed Jul 14 03:22:33 2021 +0000

description:
tests: add tests for ALTQ CBQ

diffstat:

 distrib/sets/lists/tests/mi |    6 +-
 etc/mtree/NetBSD.dist.tests |    3 +-
 tests/net/Makefile          |    4 +-
 tests/net/altq/Makefile     |   13 +
 tests/net/altq/t_cbq.sh     |  347 ++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 369 insertions(+), 4 deletions(-)

diffs (truncated from 423 to 300 lines):

diff -r 898deb2536fd -r c28c502e1469 distrib/sets/lists/tests/mi
--- a/distrib/sets/lists/tests/mi       Wed Jul 14 03:19:23 2021 +0000
+++ b/distrib/sets/lists/tests/mi       Wed Jul 14 03:22:33 2021 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1086 2021/07/13 19:38:10 rillig Exp $
+# $NetBSD: mi,v 1.1087 2021/07/14 03:22:33 ozaki-r Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -4042,6 +4042,10 @@
 ./usr/tests/net                                                tests-net-tests         compattestfile,atf
 ./usr/tests/net/Atffile                                        tests-net-tests         compattestfile,atf
 ./usr/tests/net/Kyuafile                               tests-net-tests         compattestfile,atf,kyua
+./usr/tests/net/altq                                   tests-net-tests         compattestfile,atf
+./usr/tests/net/altq/Atffile                           tests-net-tests         atf,rump
+./usr/tests/net/altq/Kyuafile                          tests-net-tests         atf,rump,kyua
+./usr/tests/net/altq/t_cbq                             tests-net-tests         atf,rump
 ./usr/tests/net/arp                                    tests-net-tests         compattestfile,atf
 ./usr/tests/net/arp/Atffile                            tests-net-tests         atf,rump
 ./usr/tests/net/arp/Kyuafile                           tests-net-tests         atf,rump,kyua
diff -r 898deb2536fd -r c28c502e1469 etc/mtree/NetBSD.dist.tests
--- a/etc/mtree/NetBSD.dist.tests       Wed Jul 14 03:19:23 2021 +0000
+++ b/etc/mtree/NetBSD.dist.tests       Wed Jul 14 03:22:33 2021 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: NetBSD.dist.tests,v 1.184 2021/05/17 04:07:42 yamaguchi Exp $
+#      $NetBSD: NetBSD.dist.tests,v 1.185 2021/07/14 03:22:33 ozaki-r Exp $
 
 ./usr/libdata/debug/usr/tests
 ./usr/libdata/debug/usr/tests/atf
@@ -345,6 +345,7 @@
 ./usr/tests/libexec/ld.elf_so/h_helper_symver_dso2
 ./usr/tests/modules
 ./usr/tests/net
+./usr/tests/net/altq
 ./usr/tests/net/arp
 ./usr/tests/net/bpf
 ./usr/tests/net/bpfilter
diff -r 898deb2536fd -r c28c502e1469 tests/net/Makefile
--- a/tests/net/Makefile        Wed Jul 14 03:19:23 2021 +0000
+++ b/tests/net/Makefile        Wed Jul 14 03:22:33 2021 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.38 2021/05/17 04:07:44 yamaguchi Exp $
+# $NetBSD: Makefile,v 1.39 2021/07/14 03:22:33 ozaki-r Exp $
 
 .include <bsd.own.mk>
 
@@ -6,7 +6,7 @@
 
 TESTS_SUBDIRS=         fdpass in_cksum net sys
 .if (${MKRUMP} != "no") && !defined(BSD_MK_COMPAT_FILE)
-TESTS_SUBDIRS+=                arp bpf bpfilter can carp icmp if if_bridge if_gif
+TESTS_SUBDIRS+=                altq arp bpf bpfilter can carp icmp if if_bridge if_gif
 TESTS_SUBDIRS+=                if_ipsec if_l2tp if_lagg if_loop if_pppoe if_tap
 TESTS_SUBDIRS+=                if_tun if_vether if_vlan if_wg ipsec mcast mpls
 TESTS_SUBDIRS+=                ndp npf route
diff -r 898deb2536fd -r c28c502e1469 tests/net/altq/Makefile
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/net/altq/Makefile   Wed Jul 14 03:22:33 2021 +0000
@@ -0,0 +1,13 @@
+# $NetBSD: Makefile,v 1.1 2021/07/14 03:22:33 ozaki-r Exp $
+#
+
+.include <bsd.own.mk>
+
+TESTSDIR=      ${TESTSBASE}/net/altq
+
+.for name in cbq
+ TESTS_SH+=    t_${name}
+ TESTS_SH_SRC_t_${name}=       ../net_common.sh t_${name}.sh
+.endfor
+
+.include <bsd.test.mk>
diff -r 898deb2536fd -r c28c502e1469 tests/net/altq/t_cbq.sh
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/net/altq/t_cbq.sh   Wed Jul 14 03:22:33 2021 +0000
@@ -0,0 +1,347 @@
+#      $NetBSD: t_cbq.sh,v 1.1 2021/07/14 03:22:33 ozaki-r Exp $
+#
+# Copyright (c) 2021 Internet Initiative Japan Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+
+SOCK_LOCAL=unix://altq_local
+SOCK_REMOTE=unix://altq_remote
+BUS=bus_altq
+TIMEOUT=3
+
+# rumphijack can't handle AF_LOCAL socket (/var/run/altq_quip) correctly,
+# so use the socket via the host.
+HIJACKING_ALTQ="$HIJACKING,blanket=/dev/altq/altq:/dev/altq/cbq:/etc/altq.conf:/var/run/altqd.pid"
+
+DEBUG=${DEBUG:-false}
+
+IP_LOCAL1=10.0.0.1
+IP_LOCAL2=10.0.1.1
+IP_REMOTE11=10.0.0.2
+IP_REMOTE12=10.0.0.22
+IP_REMOTE21=10.0.1.2
+IP_REMOTE22=10.0.1.22
+ALTQD_PIDFILE=./pid
+
+
+start_altqd_basic()
+{
+
+       export RUMP_SERVER=$SOCK_LOCAL
+
+       $HIJACKING_ALTQ mkdir -p /rump/etc
+       $HIJACKING_ALTQ mkdir -p /rump/var/run
+
+       cat > ./altq.conf <<-EOF
+       interface shmif0 cbq
+       class cbq shmif0 root_class NULL pbandwidth 100
+       class cbq shmif0 normal_class root_class pbandwidth 50 default
+           filter shmif0 normal_class $IP_REMOTE11 0 0 0 0
+       class cbq shmif0 drop_class root_class pbandwidth 0
+           filter shmif0 drop_class $IP_REMOTE12 0 0 0 0
+       EOF
+       $DEBUG && cat ./altq.conf
+       atf_check -s exit:0 $HIJACKING_ALTQ cp ./altq.conf /rump/etc/altq.conf
+       $HIJACKING_ALTQ test -f /rump/etc/altq.conf
+
+       #atf_check -s exit:0 $HIJACKING_ALTQ altqd
+       $HIJACKING_ALTQ altqd
+
+       $HIJACKING_ALTQ test -f /var/run/altqd.pid
+       if [ $? != 0 ]; then
+               atf_check -s exit:0 $HIJACKING_ALTQ altqd -d
+               # Should abort
+       fi
+
+       $HIJACKING_ALTQ cat /var/run/altqd.pid > $ALTQD_PIDFILE
+
+       $DEBUG && $HIJACKING_ALTQ altqstat -s
+       $HIJACKING_ALTQ altqstat -c 1 >./out
+       $DEBUG && cat ./out
+       atf_check -s exit:0 \
+           -o match:"altqstat: cbq on interface shmif0" \
+           -o match:'Class 1 on Interface shmif0: root_class' \
+           -o match:'Class 2 on Interface shmif0: normal_class' \
+           -o match:'Class 3 on Interface shmif0: ctl_class' \
+           -o match:'Class 4 on Interface shmif0: drop_class' \
+           cat ./out
+       rm -f ./out
+}
+
+shutdown_altqd()
+{
+       local pid="$(cat $ALTQD_PIDFILE)"
+
+       if [ -n "$pid" ]; then
+               pgrep -x altqd | grep -q $pid
+               if [ $? = 0 ]; then
+                       kill $(cat $ALTQD_PIDFILE)
+                       sleep 1
+               fi
+               $DEBUG && pgrep -x altqd
+       fi
+}
+
+check_counter()
+{
+       local file=$1
+       local name=$2
+       local match="$3"
+
+       grep -A 8 ${name}_class $file > $file.$name
+       atf_check -s exit:0 -o match:"$match" cat $file.$name
+       rm -f $file.$name
+}
+
+test_altq_cbq_basic_ipv4()
+{
+       local ifconfig="atf_check -s exit:0 rump.ifconfig"
+       local ping="atf_check -s exit:0 -o ignore rump.ping"
+       local opts="-q -c 1 -w 1"
+
+       rump_server_fs_start $SOCK_LOCAL local altq
+       rump_server_start $SOCK_REMOTE
+
+       rump_server_add_iface $SOCK_LOCAL shmif0 $BUS
+       rump_server_add_iface $SOCK_REMOTE shmif0 $BUS
+
+       export RUMP_SERVER=$SOCK_LOCAL
+       $ifconfig shmif0 inet $IP_LOCAL1/24
+       export RUMP_SERVER=$SOCK_REMOTE
+       $ifconfig shmif0 inet $IP_REMOTE11/24
+       $ifconfig shmif0 inet $IP_REMOTE12/24 alias
+       $ifconfig -w 10
+
+       export RUMP_SERVER=$SOCK_LOCAL
+       # Invoke ARP
+       $ping $opts $IP_REMOTE11
+       $ping $opts $IP_REMOTE12
+
+       start_altqd_basic
+
+       export RUMP_SERVER=$SOCK_LOCAL
+       $ping $opts $IP_REMOTE11
+
+       $HIJACKING_ALTQ altqstat -c 1 >./out
+       $DEBUG && cat ./out
+
+       check_counter ./out normal 'pkts: 1'
+       check_counter ./out root   'pkts: 1'
+       check_counter ./out drop   'pkts: 0'
+
+       export RUMP_SERVER=$SOCK_LOCAL
+       atf_check -s not-exit:0 -o ignore -e match:"No buffer space available" \
+           rump.ping $opts $IP_REMOTE12
+
+       $HIJACKING_ALTQ altqstat -c 1 >./out
+       $DEBUG && cat ./out
+
+       check_counter ./out drop   'drops: 1'
+       check_counter ./out drop   'pkts: 0'
+       check_counter ./out normal 'pkts: 1'
+       check_counter ./out root   'pkts: 1'
+
+       rm -f ./out
+
+       shutdown_altqd
+
+       rump_server_destroy_ifaces
+}
+
+start_altqd_multi_ifaces()
+{
+
+       export RUMP_SERVER=$SOCK_LOCAL
+
+       $HIJACKING_ALTQ mkdir -p /rump/etc
+       $HIJACKING_ALTQ mkdir -p /rump/var/run
+
+       cat > ./altq.conf <<-EOF
+       interface shmif0 cbq
+       class cbq shmif0 root_class NULL pbandwidth 100
+       class cbq shmif0 normal_class root_class pbandwidth 50 default
+           filter shmif0 normal_class $IP_REMOTE11 0 0 0 0
+       class cbq shmif0 drop_class root_class pbandwidth 0
+           filter shmif0 drop_class $IP_REMOTE12 0 0 0 0
+       interface shmif1 cbq
+       class cbq shmif1 root_class NULL pbandwidth 100
+       class cbq shmif1 normal_class root_class pbandwidth 50 default
+           filter shmif1 normal_class $IP_REMOTE21 0 0 0 0
+       class cbq shmif1 drop_class root_class pbandwidth 0
+           filter shmif1 drop_class $IP_REMOTE22 0 0 0 0
+       EOF
+       $DEBUG && cat ./altq.conf
+       atf_check -s exit:0 $HIJACKING_ALTQ cp ./altq.conf /rump/etc/altq.conf
+       $HIJACKING_ALTQ test -f /rump/etc/altq.conf
+
+       #atf_check -s exit:0 $HIJACKING_ALTQ altqd
+       $HIJACKING_ALTQ altqd
+
+       $HIJACKING_ALTQ test -f /var/run/altqd.pid
+       if [ $? != 0 ]; then
+               atf_check -s exit:0 $HIJACKING_ALTQ altqd -d
+               # Should abort
+       fi
+
+       $HIJACKING_ALTQ cat /var/run/altqd.pid > $ALTQD_PIDFILE
+
+       $DEBUG && $HIJACKING_ALTQ altqstat -s
+
+       $HIJACKING_ALTQ altqstat -c 1 -i shmif0 >./out
+       $DEBUG && cat ./out
+       atf_check -s exit:0 \
+           -o match:"altqstat: cbq on interface shmif0" \
+           -o match:'Class 1 on Interface shmif0: root_class' \
+           -o match:'Class 2 on Interface shmif0: normal_class' \
+           -o match:'Class 3 on Interface shmif0: ctl_class' \
+           -o match:'Class 4 on Interface shmif0: drop_class' \
+           cat ./out
+
+       $HIJACKING_ALTQ altqstat -c 1 -i shmif1 >./out
+       $DEBUG && cat ./out
+       atf_check -s exit:0 \
+           -o match:"altqstat: cbq on interface shmif1" \



Home | Main Index | Thread Index | Old Index