svn commit: r347126 - stable/12/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip
Michael Tuexen
tuexen at FreeBSD.org
Sat May 4 13:58:46 UTC 2019
Author: tuexen
Date: Sat May 4 13:58:45 2019
New Revision: 347126
URL: https://svnweb.freebsd.org/changeset/base/347126
Log:
MFC r346854:
Some test scripts use ncat --sctp --listen port to run an SCTP discard
server in the background. However, when running in the background,
stdin is closed and ncat initiates a graceful shutdown of the SCTP
association. This is not expected by the client. Therefore, the
ncat-based discard server is replaced by a perl-based one.
In addition, to remove the dependency from ncat, which needs to be
installed via the nmap port, also the code testing for a free SCTP port
is changed to use the perl-based client.
Finally, remove some debug output from the report generated.
Reviewed by: lwhsu@
Differential Revision: https://reviews.freebsd.org/D20086
Modified:
stable/12/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv4localsctp.ksh
stable/12/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.localsctpstate.ksh
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv4localsctp.ksh
==============================================================================
--- stable/12/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv4localsctp.ksh Sat May 4 13:55:51 2019 (r347125)
+++ stable/12/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv4localsctp.ksh Sat May 4 13:58:45 2019 (r347126)
@@ -58,36 +58,52 @@ DIR=/var/tmp/dtest.$$
sctpport=1024
bound=5000
-while [ $sctpport -lt $bound ]; do
- ncat --sctp -z $local $sctpport > /dev/null || break
- sctpport=$(($sctpport + 1))
-done
-if [ $sctpport -eq $bound ]; then
- echo "couldn't find an available SCTP port"
- exit 1
-fi
mkdir $DIR
cd $DIR
-# ncat will exit when the association is closed.
-ncat --sctp --listen $local $sctpport &
-
-cat > test.pl <<-EOPERL
+cat > client.pl <<-EOPERL
use IO::Socket;
my \$s = IO::Socket::INET->new(
Type => SOCK_STREAM,
Proto => "sctp",
LocalAddr => "$local",
PeerAddr => "$local",
- PeerPort => $sctpport,
+ PeerPort => \$ARGV[0],
Timeout => 3);
- die "Could not connect to host $local port $sctpport \$@" unless \$s;
+ die "Could not connect to host $local port \$ARGV[0] \$@" unless \$s;
close \$s;
- sleep(2);
+ sleep(\$ARGV[1]);
EOPERL
-$dtrace -c 'perl test.pl' -qs /dev/stdin <<EODTRACE
+while [ $sctpport -lt $bound ]; do
+ perl client.pl $sctpport 0 2>&- || break
+ sctpport=$(($sctpport + 1))
+done
+if [ $sctpport -eq $bound ]; then
+ echo "couldn't find an available SCTP port"
+ exit 1
+fi
+
+cat > server.pl <<-EOPERL
+ use IO::Socket;
+ my \$l = IO::Socket::INET->new(
+ Type => SOCK_STREAM,
+ Proto => "sctp",
+ LocalAddr => "$local",
+ LocalPort => $sctpport,
+ Listen => 1,
+ Reuse => 1);
+ die "Could not listen on $local port $sctpport \$@" unless \$l;
+ my \$c = \$l->accept();
+ close \$l;
+ while (<\$c>) {};
+ close \$c;
+EOPERL
+
+perl server.pl &
+
+$dtrace -c "perl client.pl $sctpport 2" -qs /dev/stdin <<EODTRACE
BEGIN
{
ipsend = sctpsend = ipreceive = sctpreceive = 0;
@@ -122,10 +138,10 @@ sctp:::receive
END
{
printf("Minimum SCTP events seen\n\n");
- printf("ip:::send (%d) - %s\n", ipsend, ipsend >= 7 ? "yes" : "no");
- printf("ip:::receive (%d) - %s\n", ipreceive, ipreceive >= 7 ? "yes" : "no");
- printf("sctp:::send (%d) - %s\n", sctpsend, sctpsend >= 7 ? "yes" : "no");
- printf("sctp:::receive (%d) - %s\n", sctpreceive, sctpreceive >= 7 ? "yes" : "no");
+ printf("ip:::send - %s\n", ipsend >= 7 ? "yes" : "no");
+ printf("ip:::receive - %s\n", ipreceive >= 7 ? "yes" : "no");
+ printf("sctp:::send - %s\n", sctpsend >= 7 ? "yes" : "no");
+ printf("sctp:::receive - %s\n", sctpreceive >= 7 ? "yes" : "no");
}
EODTRACE
Modified: stable/12/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.localsctpstate.ksh
==============================================================================
--- stable/12/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.localsctpstate.ksh Sat May 4 13:55:51 2019 (r347125)
+++ stable/12/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.localsctpstate.ksh Sat May 4 13:58:45 2019 (r347126)
@@ -61,36 +61,52 @@ DIR=/var/tmp/dtest.$$
sctpport=1024
bound=5000
-while [ $sctpport -lt $bound ]; do
- ncat --sctp -z $local $sctpport > /dev/null || break
- sctpport=$(($sctpport + 1))
-done
-if [ $sctpport -eq $bound ]; then
- echo "couldn't find an available SCTP port"
- exit 1
-fi
mkdir $DIR
cd $DIR
-# ncat will exit when the association is closed.
-ncat --sctp --listen $local $sctpport &
-
-cat > test.pl <<-EOPERL
+cat > client.pl <<-EOPERL
use IO::Socket;
my \$s = IO::Socket::INET->new(
Type => SOCK_STREAM,
Proto => "sctp",
LocalAddr => "$local",
PeerAddr => "$local",
- PeerPort => $sctpport,
+ PeerPort => \$ARGV[0],
Timeout => 3);
- die "Could not connect to host $local port $sctpport \$@" unless \$s;
+ die "Could not connect to host $local port \$ARGV[0] \$@" unless \$s;
close \$s;
- sleep(2);
+ sleep(\$ARGV[1]);
EOPERL
-$dtrace -c 'perl test.pl' -qs /dev/stdin <<EODTRACE
+while [ $sctpport -lt $bound ]; do
+ perl client.pl $sctpport 0 2>&- || break
+ sctpport=$(($sctpport + 1))
+done
+if [ $sctpport -eq $bound ]; then
+ echo "couldn't find an available SCTP port"
+ exit 1
+fi
+
+cat > server.pl <<-EOPERL
+ use IO::Socket;
+ my \$l = IO::Socket::INET->new(
+ Type => SOCK_STREAM,
+ Proto => "sctp",
+ LocalAddr => "$local",
+ LocalPort => $sctpport,
+ Listen => 1,
+ Reuse => 1);
+ die "Could not listen on $local port $sctpport \$@" unless \$l;
+ my \$c = \$l->accept();
+ close \$l;
+ while (<\$c>) {};
+ close \$c;
+EOPERL
+
+perl server.pl &
+
+$dtrace -c "perl client.pl $sctpport 2" -qs /dev/stdin <<EODTRACE
BEGIN
{
ipsend = sctpsend = ipreceive = sctpreceive = 0;
More information about the svn-src-all
mailing list