svn commit: r315656 - head/tests/sys/netinet

Alan Somers asomers at FreeBSD.org
Mon Mar 20 23:07:36 UTC 2017


Author: asomers
Date: Mon Mar 20 23:07:34 2017
New Revision: 315656
URL: https://svnweb.freebsd.org/changeset/base/315656

Log:
  Fix back-to-back runs of sys/netinet/fibs_test;slaac_on_nondefault_fib6
  
  This test was failing if run twice because rtadvd takes too long to die.
  The rtadvd process from the first run was still running when the
  second run created its interfaces.  The solution is to use SIGKILL during
  the cleanup instead of SIGTERM so rtadvd will die faster.
  
  While I'm here, randomize the addresses used for the test, which makes bugs
  like this easier to spot, and fix the cleanup order to be the opposite of
  the setup order
  
  PR:		217871
  MFC after:	18 days
  X-MFC-With:	315458
  Sponsored by:	Spectra Logic Corp

Modified:
  head/tests/sys/netinet/fibs_test.sh

Modified: head/tests/sys/netinet/fibs_test.sh
==============================================================================
--- head/tests/sys/netinet/fibs_test.sh	Mon Mar 20 22:36:28 2017	(r315655)
+++ head/tests/sys/netinet/fibs_test.sh	Mon Mar 20 23:07:34 2017	(r315656)
@@ -451,12 +451,12 @@ slaac_on_nondefault_fib6_head()
 }
 slaac_on_nondefault_fib6_body()
 {
-	atf_skip "BUG217871 SLAAC on a newly created epair sometimes fails to add routes"
 	# Configure the epair interfaces to use nonrouteable RFC3849
 	# addresses and non-default FIBs
-	ADDR="2001:db8::2"
-	GATEWAY="2001:db8::1"
-	SUBNET="2001:db8:"
+	PREFIX="2001:db8:$(printf "%x" `jot -r 1 0 65535`):$(printf "%x" `jot -r 1 0 65535`)"
+	ADDR="$PREFIX::2"
+	GATEWAY="$PREFIX::1"
+	SUBNET="$PREFIX:"
 	MASK="64"
 
 	# Check system configuration
@@ -509,19 +509,23 @@ slaac_on_nondefault_fib6_body()
 }
 slaac_on_nondefault_fib6_cleanup()
 {
-	cleanup_ifaces
 	if [ -f "rtadvd.pid" ]; then
-		pkill -F rtadvd.pid
+		# rtadvd can take a long time to shutdown.  Use SIGKILL to kill
+		# it right away.  The downside to using SIGKILL is that it
+		# won't send final RAs to all interfaces, but we don't care
+		# because we're about to destroy its interface anyway.
+		pkill -kill -F rtadvd.pid
 		rm -f rtadvd.pid
 	fi
-	if [ -f "rfc6204w3.state" ] ; then
-		sysctl "net.inet6.ip6.rfc6204w3"=`cat "rfc6204w3.state"`
-		rm "rfc6204w3.state"
-	fi
+	cleanup_ifaces
 	if [ -f "forwarding.state" ] ; then
 		sysctl "net.inet6.ip6.forwarding"=`cat "forwarding.state"`
 		rm "forwarding.state"
 	fi
+	if [ -f "rfc6204w3.state" ] ; then
+		sysctl "net.inet6.ip6.rfc6204w3"=`cat "rfc6204w3.state"`
+		rm "rfc6204w3.state"
+	fi
 }
 
 # Regression test for kern/187550


More information about the svn-src-all mailing list