Improve test stability
- Take a diff between packet dumps and use it for packet checking - it's resistant against packet reorder - Seep 2 sec to make sure a NS message is sent - Disable tentative state check for now - it's too ephemeral to check robustly
This commit is contained in:
parent
a1136117a8
commit
e266b2d0dd
|
@ -1,4 +1,4 @@
|
||||||
# $NetBSD: t_dad.sh,v 1.3 2015/07/31 00:23:54 ozaki-r Exp $
|
# $NetBSD: t_dad.sh,v 1.4 2015/08/17 07:06:58 ozaki-r Exp $
|
||||||
#
|
#
|
||||||
# Copyright (c) 2015 The NetBSD Foundation, Inc.
|
# Copyright (c) 2015 The NetBSD Foundation, Inc.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
|
@ -73,6 +73,21 @@ make_pkt_str()
|
||||||
echo $pkt
|
echo $pkt
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extract_new_packets()
|
||||||
|
{
|
||||||
|
local old=./old
|
||||||
|
|
||||||
|
if [ ! -f $old ]; then
|
||||||
|
old=/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
shmif_dumpbus -p - bus1 2>/dev/null| \
|
||||||
|
tcpdump -n -e -r - 2>/dev/null > ./new
|
||||||
|
diff -u $old ./new |grep '^+' |cut -d '+' -f 2 > ./diff
|
||||||
|
mv -f ./new ./old
|
||||||
|
cat ./diff
|
||||||
|
}
|
||||||
|
|
||||||
dad_basic_body()
|
dad_basic_body()
|
||||||
{
|
{
|
||||||
local pkt=
|
local pkt=
|
||||||
|
@ -84,17 +99,21 @@ dad_basic_body()
|
||||||
atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus1
|
atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus1
|
||||||
atf_check -s exit:0 rump.ifconfig shmif0 inet 10.0.0.1/24
|
atf_check -s exit:0 rump.ifconfig shmif0 inet 10.0.0.1/24
|
||||||
atf_check -s exit:0 rump.ifconfig shmif0 inet 10.0.0.2/24 alias
|
atf_check -s exit:0 rump.ifconfig shmif0 inet 10.0.0.2/24 alias
|
||||||
atf_check -s exit:0 rump.ifconfig shmif0 up
|
|
||||||
$DEBUG && rump.ifconfig shmif0
|
$DEBUG && rump.ifconfig shmif0
|
||||||
|
|
||||||
atf_check -s exit:0 sleep 1
|
atf_check -s exit:0 rump.ifconfig shmif0 up
|
||||||
|
rump.ifconfig shmif0 > ./out
|
||||||
|
$DEBUG && cat ./out
|
||||||
|
|
||||||
# The primary address is not tentative from the beginning
|
# The primary address doesn't start with tentative state
|
||||||
atf_check -s not-exit:0 -x "rump.ifconfig shmif0 |grep 10.0.0.1 |grep -q tentative"
|
atf_check -s not-exit:0 -x "cat ./out |grep 10.0.0.1 |grep -q tentative"
|
||||||
# The alias address is still tentative
|
# The alias address starts with tentative state
|
||||||
atf_check -s exit:0 -x "rump.ifconfig shmif0 |grep 10.0.0.2 |grep -q tentative"
|
# XXX we have no stable way to check this, so skip for now
|
||||||
|
#atf_check -s exit:0 -x "cat ./out |grep 10.0.0.2 |grep -q tentative"
|
||||||
|
|
||||||
shmif_dumpbus -p - bus1 2>/dev/null| tcpdump -n -e -r - > ./out
|
atf_check -s exit:0 sleep 2
|
||||||
|
extract_new_packets > ./out
|
||||||
|
$DEBUG && cat ./out
|
||||||
|
|
||||||
# Check DAD probe packets
|
# Check DAD probe packets
|
||||||
pkt=$(make_pkt_str 10.0.0.2 0.0.0.0)
|
pkt=$(make_pkt_str 10.0.0.2 0.0.0.0)
|
||||||
|
@ -105,7 +124,8 @@ dad_basic_body()
|
||||||
|
|
||||||
# Waiting for DAD complete
|
# Waiting for DAD complete
|
||||||
atf_check -s exit:0 rump.ifconfig -w 10
|
atf_check -s exit:0 rump.ifconfig -w 10
|
||||||
shmif_dumpbus -p - bus1 2>/dev/null| tcpdump -n -e -r - |tail -1 > ./out
|
extract_new_packets > ./out
|
||||||
|
$DEBUG && cat ./out
|
||||||
|
|
||||||
# Check the DAD announce packet
|
# Check the DAD announce packet
|
||||||
pkt=$(make_pkt_str 10.0.0.2 10.0.0.2)
|
pkt=$(make_pkt_str 10.0.0.2 10.0.0.2)
|
||||||
|
@ -118,19 +138,20 @@ dad_basic_body()
|
||||||
#
|
#
|
||||||
atf_check -s exit:0 rump.ifconfig shmif0 inet 10.0.0.3/24 alias
|
atf_check -s exit:0 rump.ifconfig shmif0 inet 10.0.0.3/24 alias
|
||||||
|
|
||||||
atf_check -s exit:0 sleep 1
|
# The new address starts with tentative state
|
||||||
|
|
||||||
# The new address is still tentative
|
|
||||||
atf_check -s exit:0 -x "rump.ifconfig shmif0 |grep 10.0.0.3 |grep -q tentative"
|
atf_check -s exit:0 -x "rump.ifconfig shmif0 |grep 10.0.0.3 |grep -q tentative"
|
||||||
|
|
||||||
# Check DAD probe packets
|
# Check DAD probe packets
|
||||||
shmif_dumpbus -p - bus1 2>/dev/null| tcpdump -n -e -r - |tail -1 > ./out
|
atf_check -s exit:0 sleep 2
|
||||||
|
extract_new_packets > ./out
|
||||||
|
$DEBUG && cat ./out
|
||||||
pkt=$(make_pkt_str 10.0.0.3 0.0.0.0)
|
pkt=$(make_pkt_str 10.0.0.3 0.0.0.0)
|
||||||
atf_check -s exit:0 -x "cat ./out |grep -q '$pkt'"
|
atf_check -s exit:0 -x "cat ./out |grep -q '$pkt'"
|
||||||
|
|
||||||
# Waiting for DAD complete
|
# Waiting for DAD complete
|
||||||
atf_check -s exit:0 rump.ifconfig -w 10
|
atf_check -s exit:0 rump.ifconfig -w 10
|
||||||
shmif_dumpbus -p - bus1 2>/dev/null| tcpdump -n -e -r - |tail -1 > ./out
|
extract_new_packets > ./out
|
||||||
|
$DEBUG && cat ./out
|
||||||
|
|
||||||
# Check the DAD announce packet
|
# Check the DAD announce packet
|
||||||
pkt=$(make_pkt_str 10.0.0.3 10.0.0.3)
|
pkt=$(make_pkt_str 10.0.0.3 10.0.0.3)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# $NetBSD: t_dad.sh,v 1.2 2015/08/10 09:31:13 ozaki-r Exp $
|
# $NetBSD: t_dad.sh,v 1.3 2015/08/17 07:06:58 ozaki-r Exp $
|
||||||
#
|
#
|
||||||
# Copyright (c) 2015 The NetBSD Foundation, Inc.
|
# Copyright (c) 2015 The NetBSD Foundation, Inc.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
|
@ -75,6 +75,21 @@ make_ns_pkt_str()
|
||||||
echo $pkt
|
echo $pkt
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extract_new_packets()
|
||||||
|
{
|
||||||
|
local old=./old
|
||||||
|
|
||||||
|
if [ ! -f $old ]; then
|
||||||
|
old=/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
shmif_dumpbus -p - bus1 2>/dev/null| \
|
||||||
|
tcpdump -n -e -r - 2>/dev/null > ./new
|
||||||
|
diff -u $old ./new |grep '^+' |cut -d '+' -f 2 > ./diff
|
||||||
|
mv -f ./new ./old
|
||||||
|
cat ./diff
|
||||||
|
}
|
||||||
|
|
||||||
dad_basic_body()
|
dad_basic_body()
|
||||||
{
|
{
|
||||||
local pkt=
|
local pkt=
|
||||||
|
@ -89,17 +104,21 @@ dad_basic_body()
|
||||||
atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus1
|
atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus1
|
||||||
atf_check -s exit:0 rump.ifconfig shmif0 inet6 $localip1
|
atf_check -s exit:0 rump.ifconfig shmif0 inet6 $localip1
|
||||||
atf_check -s exit:0 rump.ifconfig shmif0 inet6 $localip2
|
atf_check -s exit:0 rump.ifconfig shmif0 inet6 $localip2
|
||||||
atf_check -s exit:0 rump.ifconfig shmif0 up
|
|
||||||
$DEBUG && rump.ifconfig shmif0
|
$DEBUG && rump.ifconfig shmif0
|
||||||
|
|
||||||
#atf_check -s exit:0 sleep 1
|
atf_check -s exit:0 rump.ifconfig shmif0 up
|
||||||
|
rump.ifconfig shmif0 > ./out
|
||||||
|
$DEBUG && cat ./out
|
||||||
|
|
||||||
# The primary address is not tentative from the beginning
|
# The primary address doesn't start with tentative state
|
||||||
atf_check -s not-exit:0 -x "rump.ifconfig shmif0 |grep $localip1 |grep -q tentative"
|
atf_check -s not-exit:0 -x "cat ./out |grep $localip1 |grep -q tentative"
|
||||||
# The alias address is still tentative
|
# The alias address starts with tentative state
|
||||||
atf_check -s exit:0 -x "rump.ifconfig shmif0 |grep $localip2 |grep -q tentative"
|
# XXX we have no stable way to check this, so skip for now
|
||||||
|
#atf_check -s exit:0 -x "cat ./out |grep $localip2 |grep -q tentative"
|
||||||
|
|
||||||
shmif_dumpbus -p - bus1 2>/dev/null| tcpdump -n -e -r - > ./out
|
atf_check -s exit:0 sleep 2
|
||||||
|
extract_new_packets > ./out
|
||||||
|
$DEBUG && cat ./out
|
||||||
|
|
||||||
# Check DAD probe packets (Neighbor Solicitation Message)
|
# Check DAD probe packets (Neighbor Solicitation Message)
|
||||||
pkt=$(make_ns_pkt_str 2 $localip2)
|
pkt=$(make_ns_pkt_str 2 $localip2)
|
||||||
|
@ -110,7 +129,8 @@ dad_basic_body()
|
||||||
|
|
||||||
# Waiting for DAD complete
|
# Waiting for DAD complete
|
||||||
atf_check -s exit:0 rump.ifconfig -w 10
|
atf_check -s exit:0 rump.ifconfig -w 10
|
||||||
shmif_dumpbus -p - bus1 2>/dev/null| tcpdump -n -e -r - |tail -1 > ./out
|
extract_new_packets > ./out
|
||||||
|
$DEBUG && cat ./out
|
||||||
|
|
||||||
# IPv6 DAD doesn't announce (Neighbor Advertisement Message)
|
# IPv6 DAD doesn't announce (Neighbor Advertisement Message)
|
||||||
|
|
||||||
|
@ -122,19 +142,20 @@ dad_basic_body()
|
||||||
#
|
#
|
||||||
atf_check -s exit:0 rump.ifconfig shmif0 inet6 $localip3
|
atf_check -s exit:0 rump.ifconfig shmif0 inet6 $localip3
|
||||||
|
|
||||||
#atf_check -s exit:0 sleep 1
|
# The new address starts with tentative state
|
||||||
|
|
||||||
# The new address is still tentative
|
|
||||||
atf_check -s exit:0 -x "rump.ifconfig shmif0 |grep $localip3 |grep -q tentative"
|
atf_check -s exit:0 -x "rump.ifconfig shmif0 |grep $localip3 |grep -q tentative"
|
||||||
|
|
||||||
# Check DAD probe packets (Neighbor Solicitation Message)
|
# Check DAD probe packets (Neighbor Solicitation Message)
|
||||||
shmif_dumpbus -p - bus1 2>/dev/null| tcpdump -n -e -r - |tail -1 > ./out
|
atf_check -s exit:0 sleep 2
|
||||||
|
extract_new_packets > ./out
|
||||||
|
$DEBUG && cat ./out
|
||||||
pkt=$(make_ns_pkt_str 3 $localip3)
|
pkt=$(make_ns_pkt_str 3 $localip3)
|
||||||
atf_check -s exit:0 -x "cat ./out |grep -q '$pkt'"
|
atf_check -s exit:0 -x "cat ./out |grep -q '$pkt'"
|
||||||
|
|
||||||
# Waiting for DAD complete
|
# Waiting for DAD complete
|
||||||
atf_check -s exit:0 rump.ifconfig -w 10
|
atf_check -s exit:0 rump.ifconfig -w 10
|
||||||
shmif_dumpbus -p - bus1 2>/dev/null| tcpdump -n -e -r - |tail -1 > ./out
|
extract_new_packets > ./out
|
||||||
|
$DEBUG && cat ./out
|
||||||
|
|
||||||
# IPv6 DAD doesn't announce (Neighbor Advertisement Message)
|
# IPv6 DAD doesn't announce (Neighbor Advertisement Message)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue