Source-Changes-HG archive

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

[src/trunk]: src/tests/net/route Add tests for "route get"



details:   https://anonhg.NetBSD.org/src/rev/0465abffafd5
branches:  trunk
changeset: 344423:0465abffafd5
user:      ozaki-r <ozaki-r%NetBSD.org@localhost>
date:      Mon Mar 28 01:53:07 2016 +0000

description:
Add tests for "route get"

diffstat:

 tests/net/route/t_route.sh |  328 ++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 327 insertions(+), 1 deletions(-)

diffs (truncated from 355 to 300 lines):

diff -r ed2cf5e97f0d -r 0465abffafd5 tests/net/route/t_route.sh
--- a/tests/net/route/t_route.sh        Sun Mar 27 21:51:20 2016 +0000
+++ b/tests/net/route/t_route.sh        Mon Mar 28 01:53:07 2016 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: t_route.sh,v 1.1 2016/01/29 04:15:46 ozaki-r Exp $
+#      $NetBSD: t_route.sh,v 1.2 2016/03/28 01:53:07 ozaki-r Exp $
 #
 # Copyright (c) 2016 Internet Initiative Japan Inc.
 # All rights reserved.
@@ -26,10 +26,29 @@
 #
 
 RUMP_LIBS="-lrumpnet -lrumpnet_net -lrumpnet_netinet -lrumpnet_shmif"
+RUMP_LIBS_IPV6="$RUMP_LIBS -lrumpnet_netinet6"
+
+# non_subnet_gateway
 SOCK_CLIENT=unix://commsock1
 SOCK_GW=unix://commsock2
 BUS=bus1
 
+# command_get
+SOCKSRC=unix://commsock1
+SOCKFWD=unix://commsock2
+SOCKDST=unix://commsock3
+IP4SRC=10.0.1.2
+IP4SRCGW=10.0.1.1
+IP4DSTGW=10.0.2.1
+IP4DST=10.0.2.2
+IP4DST_BCAST=10.0.2.255
+IP6SRC=fc00:0:0:1::2
+IP6SRCGW=fc00:0:0:1::1
+IP6DSTGW=fc00:0:0:2::1
+IP6DST=fc00:0:0:2::2
+BUS_SRCGW=bus1
+BUS_DSTGW=bus2
+
 DEBUG=false
 TIMEOUT=1
 PING_OPTS="-n -c 1 -w $TIMEOUT"
@@ -96,8 +115,315 @@
        env RUMP_SERVER=$SOCK_GW rump.halt
 }
 
+atf_test_case command_get cleanup
+atf_test_case command_get6 cleanup
+command_get_head()
+{
+
+       atf_set "descr" "tests of route get command"
+       atf_set "require.progs" "rump_server"
+}
+
+command_get6_head()
+{
+
+       atf_set "descr" "tests of route get command (IPv6)"
+       atf_set "require.progs" "rump_server"
+}
+
+setup_endpoint()
+{
+       local sock=${1}
+       local addr=${2}
+       local bus=${3}
+       local mode=${4}
+       local gw=${5}
+
+       export RUMP_SERVER=${sock}
+       atf_check -s exit:0 rump.ifconfig shmif0 create
+       atf_check -s exit:0 rump.ifconfig shmif0 linkstr ${bus}
+       if [ $mode = "ipv6" ]; then
+               atf_check -s exit:0 rump.ifconfig shmif0 inet6 ${addr}
+               atf_check -s exit:0 -o ignore rump.route add -inet6 default ${gw}
+       else
+               atf_check -s exit:0 rump.ifconfig shmif0 inet ${addr} netmask 0xffffff00
+               atf_check -s exit:0 -o ignore rump.route add default ${gw}
+       fi
+       atf_check -s exit:0 rump.ifconfig shmif0 up
+
+       if $DEBUG; then
+               rump.ifconfig shmif0
+               rump.netstat -nr
+       fi
+}
+
+setup_forwarder()
+{
+       mode=${1}
+
+       export RUMP_SERVER=$SOCKFWD
+       atf_check -s exit:0 rump.ifconfig shmif0 create
+       atf_check -s exit:0 rump.ifconfig shmif0 linkstr $BUS_SRCGW
+
+       atf_check -s exit:0 rump.ifconfig shmif1 create
+       atf_check -s exit:0 rump.ifconfig shmif1 linkstr $BUS_DSTGW
+
+       if [ $mode = "ipv6" ]; then
+               atf_check -s exit:0 rump.ifconfig shmif0 inet6 ${IP6SRCGW}
+               atf_check -s exit:0 rump.ifconfig shmif1 inet6 ${IP6DSTGW}
+       else
+               atf_check -s exit:0 rump.ifconfig shmif0 inet ${IP4SRCGW} netmask 0xffffff00
+               atf_check -s exit:0 rump.ifconfig shmif1 inet ${IP4DSTGW} netmask 0xffffff00
+       fi
+
+       atf_check -s exit:0 rump.ifconfig shmif0 up
+       atf_check -s exit:0 rump.ifconfig shmif1 up
+
+       if $DEBUG; then
+               rump.netstat -nr
+               if [ $mode = "ipv6" ]; then
+                       rump.sysctl net.inet6.ip6.forwarding
+               else
+                       rump.sysctl net.inet.ip.forwarding
+               fi
+       fi
+}
+
+setup_forwarding()
+{
+       export RUMP_SERVER=$SOCKFWD
+       atf_check -s exit:0 -o ignore rump.sysctl -w net.inet.ip.forwarding=1
+}
+
+setup_forwarding6()
+{
+       export RUMP_SERVER=$SOCKFWD
+       atf_check -s exit:0 -o ignore rump.sysctl -w net.inet6.ip6.forwarding=1
+}
+
+setup()
+{
+
+       atf_check -s exit:0 rump_server $RUMP_LIBS $SOCKSRC
+       atf_check -s exit:0 rump_server $RUMP_LIBS $SOCKFWD
+       atf_check -s exit:0 rump_server $RUMP_LIBS $SOCKDST
+
+       setup_endpoint $SOCKSRC $IP4SRC $BUS_SRCGW ipv4 $IP4SRCGW
+       setup_endpoint $SOCKDST $IP4DST $BUS_DSTGW ipv4 $IP4DSTGW
+       setup_forwarder ipv4
+}
+
+setup6()
+{
+
+       atf_check -s exit:0 rump_server $RUMP_LIBS_IPV6 $SOCKSRC
+       atf_check -s exit:0 rump_server $RUMP_LIBS_IPV6 $SOCKFWD
+       atf_check -s exit:0 rump_server $RUMP_LIBS_IPV6 $SOCKDST
+
+       setup_endpoint $SOCKSRC $IP6SRC $BUS_SRCGW ipv6 $IP6SRCGW
+       setup_endpoint $SOCKDST $IP6DST $BUS_DSTGW ipv6 $IP6DSTGW
+       setup_forwarder ipv6
+}
+
+test_route_get()
+{
+
+       export RUMP_SERVER=$SOCKSRC
+       $DEBUG && rump.netstat -nr -f inet
+       $DEBUG && rump.arp -n -a
+
+       # Make sure an ARP cache to the gateway doesn't exist
+       rump.arp -d $IP4SRCGW
+
+       # Local
+       cat >./expect <<-EOF
+   route to: 10.0.1.2
+destination: 10.0.1.2
+ local addr: 10.0.1.2
+  interface: lo0
+      flags: <UP,HOST,DONE,LLINFO,LOCAL>
+ recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
+       0         0         0         0         0         0         0         0 
+       EOF
+       rump.route -n get $IP4SRC > ./output
+       $DEBUG && cat ./expect ./output
+       atf_check -s exit:0 diff -q ./expect ./output
+
+       # Neighbor
+       cat >./expect <<-EOF
+   route to: 10.0.1.1
+destination: 10.0.1.0
+       mask: 255.255.255.0
+ local addr: 10.0.1.2
+  interface: shmif0
+      flags: <UP,DONE,CLONING>
+ recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
+       0         0         0         0         0         0         0         0 
+       EOF
+       rump.route -n get $IP4SRCGW > ./output
+       $DEBUG && cat ./expect ./output
+       atf_check -s exit:0 diff -q ./expect ./output
+
+       # Remote host
+       cat >./expect <<-EOF
+   route to: 10.0.2.2
+destination: default
+       mask: default
+    gateway: 10.0.1.1
+ local addr: 10.0.1.2
+  interface: shmif0
+      flags: <UP,GATEWAY,DONE,STATIC>
+ recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
+       0         0         0         0         0         0         0         0 
+       EOF
+       rump.route -n get $IP4DST > ./output
+       $DEBUG && cat ./expect ./output
+       atf_check -s exit:0 diff -q ./expect ./output
+
+       # Create a ARP cache
+       atf_check -s exit:0 -o ignore rump.ping -q -n -w $TIMEOUT -c 1 $IP4SRCGW
+
+       # Neighbor with a cache (cloned route)
+       cat >./expect <<-EOF
+   route to: 10.0.1.1
+destination: 10.0.1.1
+ local addr: 10.0.1.2
+  interface: shmif0
+      flags: <UP,HOST,DONE,LLINFO,CLONED>
+ recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
+       EOF
+       rump.route -n get $IP4SRCGW > ./output
+       $DEBUG && cat ./expect ./output
+       # Trim the last line including unfixed expire time
+       head -6 ./output > ./trimed
+       atf_check -s exit:0 diff -q ./expect ./trimed
+}
+
+test_route_get6()
+{
+
+       export RUMP_SERVER=$SOCKSRC
+       $DEBUG && rump.netstat -nr -f inet
+       $DEBUG && rump.ndp -n -a
+
+       # Make sure an ARP cache to the gateway doesn't exist
+       rump.ndp -d $IP6SRCGW
+
+       # Local
+       cat >./expect <<-EOF
+   route to: fc00:0:0:1::2
+destination: fc00:0:0:1::2
+ local addr: fc00:0:0:1::2
+  interface: lo0
+      flags: <UP,HOST,DONE,LLINFO,LOCAL>
+ recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
+       0         0         0         0         0         0         0         0 
+       EOF
+       rump.route -n get -inet6 $IP6SRC > ./output
+       $DEBUG && cat ./expect ./output
+       atf_check -s exit:0 diff -q ./expect ./output
+
+       # Neighbor
+       cat >./expect <<-EOF
+   route to: fc00:0:0:1::1
+destination: fc00:0:0:1::
+       mask: ffff:ffff:ffff:ffff::
+ local addr: fc00:0:0:1::2
+  interface: shmif0
+      flags: <UP,DONE,CLONING>
+ recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
+       0         0         0         0         0         0         0         0 
+       EOF
+       rump.route -n get -inet6 $IP6SRCGW > ./output
+       $DEBUG && cat ./expect ./output
+       atf_check -s exit:0 diff -q ./expect ./output
+
+       # Remote host
+       cat >./expect <<-EOF
+   route to: fc00:0:0:2::2
+destination: ::
+       mask: default
+    gateway: fc00:0:0:1::1
+ local addr: fc00:0:0:1::2
+  interface: shmif0
+      flags: <UP,GATEWAY,DONE,STATIC>
+ recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
+       0         0         0         0         0         0         0         0 
+       EOF
+       rump.route -n get -inet6 $IP6DST > ./output
+       $DEBUG && cat ./expect ./output
+       atf_check -s exit:0 diff -q ./expect ./output
+
+       # Create a NDP cache
+       atf_check -s exit:0 -o ignore rump.ping6 -n -c 1 -X $TIMEOUT $IP6SRCGW
+
+       # Neighbor with a cache (cloned route)
+       cat >./expect <<-EOF
+   route to: fc00:0:0:1::1
+destination: fc00:0:0:1::1
+ local addr: fc00:0:0:1::2
+  interface: shmif0
+      flags: <UP,HOST,DONE,LLINFO,CLONED>
+ recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
+       0         0         0         0         0         0         0         0 
+       EOF
+       rump.route -n get -inet6 $IP6SRCGW > ./output
+       $DEBUG && cat ./expect ./output
+       # No need to trim, because a NDP cache doesn't set an expire time
+       atf_check -s exit:0 diff -q ./expect ./output
+}



Home | Main Index | Thread Index | Old Index