Module Name:    src
Committed By:   ozaki-r
Date:           Mon Nov  6 10:51:40 UTC 2017

Modified Files:
        src/tests/net/ndp: t_ra.sh

Log Message:
Kill rtadvd surely even if the tests fail in the middle

It may help PR bin/52701.


To generate a diff of this commit:
cvs rdiff -u -r1.29 -r1.30 src/tests/net/ndp/t_ra.sh

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/net/ndp/t_ra.sh
diff -u src/tests/net/ndp/t_ra.sh:1.29 src/tests/net/ndp/t_ra.sh:1.30
--- src/tests/net/ndp/t_ra.sh:1.29	Thu Jun 22 09:56:48 2017
+++ src/tests/net/ndp/t_ra.sh	Mon Nov  6 10:51:40 2017
@@ -1,4 +1,4 @@
-#	$NetBSD: t_ra.sh,v 1.29 2017/06/22 09:56:48 ozaki-r Exp $
+#	$NetBSD: t_ra.sh,v 1.30 2017/11/06 10:51:40 ozaki-r Exp $
 #
 # Copyright (c) 2015 Internet Initiative Japan Inc.
 # All rights reserved.
@@ -85,6 +85,34 @@ wait_term()
 	return 0
 }
 
+kill_rtadvd()
+{
+	local pidfile=$1
+
+	kill -KILL `cat $pidfile`
+	rm -f $pidfile
+}
+
+terminate_rtadvd()
+{
+	local pidfile=$1
+	local n=5
+
+	if [ ! -f $pidfile ]; then
+		return
+	fi
+
+	kill -TERM `cat $pidfile`
+	while [ -f $pidfile ]; do
+		n=$((n - 1))
+		if [ $n = 0 ]; then
+			kill_rtadvd $pidfile
+			break
+		fi
+		sleep 0.2
+	done
+}
+
 create_rtadvdconfig()
 {
 
@@ -203,8 +231,7 @@ ra_basic_body()
 	atf_check -s exit:0 -o not-match:'fc00:1:' rump.ifconfig shmif0 inet6
 	unset RUMP_SERVER
 
-	atf_check -s exit:0 kill -TERM `cat ${PIDFILE}`
-	wait_term ${PIDFILE}
+	terminate_rtadvd $PIDFILE
 
 	export RUMP_SERVER=${RUMPCLI}
 	atf_check -s exit:0 -o match:'0.->.1' rump.sysctl -w net.inet6.ip6.accept_rtadv=1
@@ -215,8 +242,7 @@ ra_basic_body()
 
 	check_entries $RUMPCLI $RUMPSRV $IP6SRV_PREFIX
 
-	atf_check -s exit:0 kill -TERM `cat ${PIDFILE}`
-	wait_term ${PIDFILE}
+	terminate_rtadvd $PIDFILE
 
 	rump_server_destroy_ifaces
 }
@@ -224,12 +250,8 @@ ra_basic_body()
 ra_basic_cleanup()
 {
 
-	if [ -f ${PIDFILE} ]; then
-		kill -TERM `cat ${PIDFILE}`
-		wait_term ${PIDFILE}
-	fi
-
 	$DEBUG && dump
+	terminate_rtadvd $PIDFILE
 	cleanup
 }
 
@@ -267,7 +289,7 @@ ra_flush_prefix_entries_body()
 
 	# Terminate rtadvd to prevent new RA messages from coming
 	# Note that ifconfig down; kill -TERM doesn't work
-	kill -KILL `cat ${PIDFILE}`
+	kill_rtadvd $PIDFILE
 
 	# Flush all the entries in the prefix list
 	atf_check -s exit:0 rump.ndp -P
@@ -288,6 +310,7 @@ ra_flush_prefix_entries_cleanup()
 {
 
 	$DEBUG && dump
+	terminate_rtadvd $PIDFILE
 	cleanup
 }
 
@@ -325,7 +348,7 @@ ra_flush_defrouter_entries_body()
 
 	# Terminate rtadvd to prevent new RA messages from coming
 	# Note that ifconfig down; kill -TERM doesn't work
-	kill -KILL `cat ${PIDFILE}`
+	kill_rtadvd $PIDFILE
 
 	# Flush all the entries in the default router list
 	atf_check -s exit:0 rump.ndp -R
@@ -345,6 +368,7 @@ ra_flush_defrouter_entries_cleanup()
 {
 
 	$DEBUG && dump
+	terminate_rtadvd $PIDFILE
 	cleanup
 }
 
@@ -384,8 +408,7 @@ ra_delete_address_body()
 	    $(rump.ifconfig shmif0 |awk '/AUTOCONF/ {print $2}') delete
 	unset RUMP_SERVER
 
-	atf_check -s exit:0 kill -TERM `cat ${PIDFILE}`
-	wait_term ${PIDFILE}
+	terminate_rtadvd $PIDFILE
 
 	rump_server_destroy_ifaces
 }
@@ -393,12 +416,8 @@ ra_delete_address_body()
 ra_delete_address_cleanup()
 {
 
-	if [ -f ${PIDFILE} ]; then
-		kill -TERM `cat ${PIDFILE}`
-		wait_term ${PIDFILE}
-	fi
-
 	$DEBUG && dump
+	terminate_rtadvd $PIDFILE
 	cleanup
 }
 
@@ -444,10 +463,8 @@ ra_multiple_routers_body()
 	atf_check_equal $n 2
 	unset RUMP_SERVER
 
-	atf_check -s exit:0 kill -TERM `cat ${PIDFILE}`
-	wait_term ${PIDFILE}
-	atf_check -s exit:0 kill -TERM `cat ${PIDFILE3}`
-	wait_term ${PIDFILE3}
+	terminate_rtadvd $PIDFILE
+	terminate_rtadvd $PIDFILE3
 
 	rump_server_destroy_ifaces
 }
@@ -455,16 +472,9 @@ ra_multiple_routers_body()
 ra_multiple_routers_cleanup()
 {
 
-	if [ -f ${PIDFILE} ]; then
-		kill -TERM `cat ${PIDFILE}`
-		wait_term ${PIDFILE}
-	fi
-	if [ -f ${PIDFILE3} ]; then
-		kill -TERM `cat ${PIDFILE3}`
-		wait_term ${PIDFILE3}
-	fi
-
 	$DEBUG && dump
+	terminate_rtadvd $PIDFILE
+	terminate_rtadvd $PIDFILE3
 	cleanup
 }
 
@@ -510,10 +520,8 @@ ra_multiple_routers_single_prefix_body()
 	atf_check_equal $n 1
 	unset RUMP_SERVER
 
-	atf_check -s exit:0 kill -TERM `cat ${PIDFILE}`
-	wait_term ${PIDFILE}
-	atf_check -s exit:0 kill -TERM `cat ${PIDFILE1_2}`
-	wait_term ${PIDFILE1_2}
+	terminate_rtadvd $PIDFILE
+	terminate_rtadvd $PIDFILE1_2
 
 	rump_server_destroy_ifaces
 }
@@ -521,16 +529,9 @@ ra_multiple_routers_single_prefix_body()
 ra_multiple_routers_single_prefix_cleanup()
 {
 
-	if [ -f ${PIDFILE} ]; then
-		kill -TERM `cat ${PIDFILE}`
-		wait_term ${PIDFILE}
-	fi
-	if [ -f ${PIDFILE1_2} ]; then
-		kill -TERM `cat ${PIDFILE1_2}`
-		wait_term ${PIDFILE1_2}
-	fi
-
 	$DEBUG && dump
+	terminate_rtadvd $PIDFILE
+	terminate_rtadvd $PIDFILE1_2
 	cleanup
 }
 
@@ -588,12 +589,9 @@ ra_multiple_routers_maxifprefixes_body()
 	# TODO check other conditions
 	unset RUMP_SERVER
 
-	atf_check -s exit:0 kill -TERM `cat ${PIDFILE}`
-	wait_term ${PIDFILE}
-	atf_check -s exit:0 kill -TERM `cat ${PIDFILE3}`
-	wait_term ${PIDFILE3}
-	atf_check -s exit:0 kill -TERM `cat ${PIDFILE4}`
-	wait_term ${PIDFILE4}
+	terminate_rtadvd $PIDFILE
+	terminate_rtadvd $PIDFILE3
+	terminate_rtadvd $PIDFILE4
 
 	rump_server_destroy_ifaces
 }
@@ -601,20 +599,10 @@ ra_multiple_routers_maxifprefixes_body()
 ra_multiple_routers_maxifprefixes_cleanup()
 {
 
-	if [ -f ${PIDFILE} ]; then
-		kill -TERM `cat ${PIDFILE}`
-		wait_term ${PIDFILE}
-	fi
-	if [ -f ${PIDFILE3} ]; then
-		kill -TERM `cat ${PIDFILE3}`
-		wait_term ${PIDFILE3}
-	fi
-	if [ -f ${PIDFILE4} ]; then
-		kill -TERM `cat ${PIDFILE4}`
-		wait_term ${PIDFILE4}
-	fi
-
 	$DEBUG && dump
+	terminate_rtadvd $PIDFILE
+	terminate_rtadvd $PIDFILE3
+	terminate_rtadvd $PIDFILE4
 	cleanup
 }
 
@@ -693,8 +681,7 @@ ra_temporary_address_body()
 
 	unset RUMP_SERVER
 
-	atf_check -s exit:0 kill -TERM `cat ${PIDFILE}`
-	wait_term $PIDFILE
+	terminate_rtadvd $PIDFILE
 
 	rump_server_destroy_ifaces
 }
@@ -702,12 +689,8 @@ ra_temporary_address_body()
 ra_temporary_address_cleanup()
 {
 
-	if [ -f ${PIDFILE} ]; then
-		kill -TERM `cat ${PIDFILE}`
-		wait_term ${PIDFILE}
-	fi
-
 	$DEBUG && dump
+	terminate_rtadvd $PIDFILE
 	cleanup
 }
 
@@ -747,7 +730,7 @@ ra_defrouter_expiration_body()
 
 	# Terminate rtadvd to prevent new RA messages from coming
 	# Note that ifconfig down; kill -TERM doesn't work
-	kill -KILL `cat ${PIDFILE}`
+	kill_rtadvd $PIDFILE
 
 	# Wait until the default routers and prefix entries are expired
 	sleep $expire_time
@@ -772,6 +755,7 @@ ra_defrouter_expiration_cleanup()
 {
 
 	$DEBUG && dump
+	terminate_rtadvd $PIDFILE
 	cleanup
 }
 
@@ -811,7 +795,7 @@ ra_prefix_expiration_body()
 
 	# Terminate rtadvd to prevent new RA messages from coming
 	# Note that ifconfig down; kill -TERM doesn't work
-	kill -KILL `cat ${PIDFILE}`
+	kill_rtadvd $PIDFILE
 
 	# Wait until the default routers and prefix entries are expired
 	sleep $expire_time
@@ -837,6 +821,7 @@ ra_prefix_expiration_cleanup()
 {
 
 	$DEBUG && dump
+	terminate_rtadvd $PIDFILE
 	cleanup
 }
 

Reply via email to