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:
ozaki-r 2015-08-17 07:06:58 +00:00
parent a1136117a8
commit e266b2d0dd
2 changed files with 70 additions and 28 deletions

View File

@ -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.
# All rights reserved.
@ -73,6 +73,21 @@ make_pkt_str()
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()
{
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 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 up
$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
atf_check -s not-exit:0 -x "rump.ifconfig shmif0 |grep 10.0.0.1 |grep -q tentative"
# The alias address is still tentative
atf_check -s exit:0 -x "rump.ifconfig shmif0 |grep 10.0.0.2 |grep -q tentative"
# The primary address doesn't start with tentative state
atf_check -s not-exit:0 -x "cat ./out |grep 10.0.0.1 |grep -q tentative"
# The alias address starts with tentative state
# 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
pkt=$(make_pkt_str 10.0.0.2 0.0.0.0)
@ -105,7 +124,8 @@ dad_basic_body()
# Waiting for DAD complete
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
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 sleep 1
# The new address is still tentative
# The new address starts with tentative state
atf_check -s exit:0 -x "rump.ifconfig shmif0 |grep 10.0.0.3 |grep -q tentative"
# 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)
atf_check -s exit:0 -x "cat ./out |grep -q '$pkt'"
# Waiting for DAD complete
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
pkt=$(make_pkt_str 10.0.0.3 10.0.0.3)

View File

@ -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.
# All rights reserved.
@ -75,6 +75,21 @@ make_ns_pkt_str()
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()
{
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 inet6 $localip1
atf_check -s exit:0 rump.ifconfig shmif0 inet6 $localip2
atf_check -s exit:0 rump.ifconfig shmif0 up
$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
atf_check -s not-exit:0 -x "rump.ifconfig shmif0 |grep $localip1 |grep -q tentative"
# The alias address is still tentative
atf_check -s exit:0 -x "rump.ifconfig shmif0 |grep $localip2 |grep -q tentative"
# The primary address doesn't start with tentative state
atf_check -s not-exit:0 -x "cat ./out |grep $localip1 |grep -q tentative"
# The alias address starts with tentative state
# 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)
pkt=$(make_ns_pkt_str 2 $localip2)
@ -110,7 +129,8 @@ dad_basic_body()
# Waiting for DAD complete
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)
@ -122,19 +142,20 @@ dad_basic_body()
#
atf_check -s exit:0 rump.ifconfig shmif0 inet6 $localip3
#atf_check -s exit:0 sleep 1
# The new address is still tentative
# The new address starts with tentative state
atf_check -s exit:0 -x "rump.ifconfig shmif0 |grep $localip3 |grep -q tentative"
# 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)
atf_check -s exit:0 -x "cat ./out |grep -q '$pkt'"
# Waiting for DAD complete
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)