svn commit: r336316 - head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip

Michael Tuexen tuexen at FreeBSD.org
Sun Jul 15 20:41:17 UTC 2018


Author: tuexen
Date: Sun Jul 15 20:41:16 2018
New Revision: 336316
URL: https://svnweb.freebsd.org/changeset/base/336316

Log:
  Don't require a local sshd for the local TCP state dtrace test
  
  This change is similar to the one done in r286171 for
  tst.ipv4localtcp.ksh. This not only reduces the requirements on the
  system used for testing but results also in a graceful teardown of
  the TCP connection.
  
  Reviewed by:		gnn@
  Sponsored by:		Netflix, Inc.
  Differential Revision:	https://reviews.freebsd.org/D16276

Modified:
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.localtcpstate.ksh

Modified: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.localtcpstate.ksh
==============================================================================
--- head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.localtcpstate.ksh	Sun Jul 15 20:34:22 2018	(r336315)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.localtcpstate.ksh	Sun Jul 15 20:41:16 2018	(r336316)
@@ -36,12 +36,11 @@
 # 1. A change to the ip stack breaking expected probe behavior,
 #    which is the reason we are testing.
 # 2. The lo0 interface missing or not up.
-# 3. The local ssh service is not online.
-# 4. An unlikely race causes the unlocked global send/receive
+# 3. An unlikely race causes the unlocked global send/receive
 #    variables to be corrupted.
 #
-# This test performs a TCP connection to the ssh service (port 22) and
-# checks that at least the following packet counts were traced:
+# This test performs a TCP connection and checks that at least the
+# following packet counts were traced:
 #
 # 3 x ip:::send (2 during the TCP handshake, then a FIN)
 # 4 x tcp:::send (2 during the TCP handshake, 1 message then a FIN)
@@ -63,12 +62,25 @@ fi
 
 dtrace=$1
 local=127.0.0.1
-tcpport=22
 DIR=/var/tmp/dtest.$$
 
+tcpport=1024
+bound=5000
+while [ $tcpport -lt $bound ]; do
+	nc -z $local $tcpport >/dev/null || break
+	tcpport=$(($tcpport + 1))
+done
+if [ $tcpport -eq $bound ]; then
+	echo "couldn't find an available TCP port"
+	exit 1
+fi
+
 mkdir $DIR
 cd $DIR
 
+# nc will exit when the connection is closed.
+nc -l $local $tcpport &
+
 cat > test.pl <<-EOPERL
 	use IO::Socket;
 	my \$s = IO::Socket::INET->new(
@@ -77,7 +89,6 @@ cat > test.pl <<-EOPERL
 	    PeerPort => $tcpport,
 	    Timeout => 3);
 	die "Could not connect to host $local port $tcpport" unless \$s;
-	print \$s "testing state machine transitions";
 	close \$s;
 	sleep(2);
 EOPERL


More information about the svn-src-all mailing list