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/8ac24181d673
branches: trunk
changeset: 984615:8ac24181d673
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 52004df9c9d2 -r 8ac24181d673 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 52004df9c9d2 -r 8ac24181d673 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 52004df9c9d2 -r 8ac24181d673 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 52004df9c9d2 -r 8ac24181d673 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 52004df9c9d2 -r 8ac24181d673 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