Date: Sun, 15 Jul 2018 20:34:22 +0000 (UTC) From: Michael Tuexen <tuexen@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r336315 - in head/cddl: contrib/opensolaris/cmd/dtrace/test/tst/common/ip usr.sbin/dtrace/tests/tools Message-ID: <201807152034.w6FKYMlR085937@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: tuexen Date: Sun Jul 15 20:34:22 2018 New Revision: 336315 URL: https://svnweb.freebsd.org/changeset/base/336315 Log: Fix the UDP tests for dtrace. The code imported from opensolaris was depending on ping supporting UDP for sending probes. Since this is not supported by ping on FreeBSD use a perl script instead. The remote test requires the usage of ksh93, so state that in the sheband. Enable the local test, but keep the remote test disabled, since it requires a remote machine on the LAN. Reviewed by: markj@, gnn@ Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D16268 Modified: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv4localudp.ksh head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv4remoteudp.ksh head/cddl/usr.sbin/dtrace/tests/tools/exclude.sh Modified: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv4localudp.ksh ============================================================================== --- head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv4localudp.ksh Sun Jul 15 19:25:15 2018 (r336314) +++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv4localudp.ksh Sun Jul 15 20:34:22 2018 (r336315) @@ -1,4 +1,4 @@ -#!/usr/bin/ksh +#!/usr/bin/env ksh # # CDDL HEADER START # @@ -36,14 +36,14 @@ # 4. An unlikely race causes the unlocked global send/receive # variables to be corrupted. # -# This test sends a UDP message using ping and checks that at least the +# This test sends a UDP message using perl and checks that at least the # following counts were traced: # -# 1 x ip:::send (UDP sent to ping's base UDP port) -# 1 x udp:::send (UDP sent to ping's base UDP port) +# 1 x ip:::send (UDP sent to UDP port 33434) +# 1 x udp:::send (UDP sent to UDP port 33434) # 1 x ip:::receive (UDP received) # -# No udp:::receive event is expected as the response ping -U elicits is +# No udp:::receive event is expected since the UDP packet elicts # an ICMP PORT_UNREACHABLE response rather than a UDP packet, and locally # the echo request UDP packet only reaches IP, so the udp:::receive probe # is not triggered by it. @@ -56,8 +56,25 @@ fi dtrace=$1 local=127.0.0.1 +port=33434 +DIR=/var/tmp/dtest.$$ -$dtrace -c "/sbin/ping -U $local" -qs /dev/stdin <<EOF | grep -v 'is alive' +mkdir $DIR +cd $DIR + +cat > test.pl <<-EOPERL + use IO::Socket; + my \$s = IO::Socket::INET->new( + Proto => "udp", + PeerAddr => "$local", + PeerPort => $port); + die "Could not create UDP socket $local port $port" unless \$s; + send \$s, "Hello", 0; + close \$s; + sleep(2); +EOPERL + +$dtrace -c 'perl test.pl' -qs /dev/stdin <<EODTRACE BEGIN { ipsend = udpsend = ipreceive = 0; @@ -90,4 +107,11 @@ END printf("ip:::receive - %s\n", ipreceive >= 1 ? "yes" : "no"); printf("udp:::send - %s\n", udpsend >= 1 ? "yes" : "no"); } -EOF +EODTRACE + +status=$? + +cd / +/bin/rm -rf $DIR + +exit $status Modified: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv4remoteudp.ksh ============================================================================== --- head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv4remoteudp.ksh Sun Jul 15 19:25:15 2018 (r336314) +++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv4remoteudp.ksh Sun Jul 15 20:34:22 2018 (r336315) @@ -1,4 +1,4 @@ -#!/usr/bin/ksh +#!/usr/bin/env ksh93 # # CDDL HEADER START # @@ -36,7 +36,7 @@ # 4. An unlikely race causes the unlocked global send/receive # variables to be corrupted. # -# This test sends a UDP message using ping and checks that at least the +# This test sends a UDP message using perl and checks that at least the # following counts were traced: # # 1 x ip:::send (UDP sent to ping's base UDP port) @@ -50,6 +50,8 @@ fi dtrace=$1 getaddr=./get.ipv4remote.pl +port=33434 +DIR=/var/tmp/dtest.$$ if [[ ! -x $getaddr ]]; then print -u2 "could not find or execute sub program: $getaddr" @@ -60,7 +62,22 @@ if (( $? != 0 )); then exit 4 fi -$dtrace -c "/sbin/ping -U $dest" -qs /dev/stdin <<EOF | grep -v 'is alive' +mkdir $DIR +cd $DIR + +cat > test.pl <<-EOPERL + use IO::Socket; + my \$s = IO::Socket::INET->new( + Proto => "udp", + PeerAddr => "$dest", + PeerPort => $port); + die "Could not create UDP socket $dest port $port" unless \$s; + send \$s, "Hello", 0; + close \$s; + sleep(2); +EOPERL + +$dtrace -c 'perl test.pl' -qs /dev/stdin <<EODTRACE BEGIN { ipsend = udpsend = 0; @@ -85,4 +102,11 @@ END printf("ip:::send - %s\n", ipsend >= 1 ? "yes" : "no"); printf("udp:::send - %s\n", udpsend >= 1 ? "yes" : "no"); } -EOF +EODTRACE + +status=$? + +cd / +/bin/rm -rf $DIR + +exit $status Modified: head/cddl/usr.sbin/dtrace/tests/tools/exclude.sh ============================================================================== --- head/cddl/usr.sbin/dtrace/tests/tools/exclude.sh Sun Jul 15 19:25:15 2018 (r336314) +++ head/cddl/usr.sbin/dtrace/tests/tools/exclude.sh Sun Jul 15 20:34:22 2018 (r336315) @@ -33,7 +33,6 @@ exclude EXFAIL common/funcs/tst.copyin.d exclude EXFAIL common/funcs/tst.copyinto.d exclude EXFAIL common/funcs/tst.ddi_pathname.d exclude EXFAIL common/io/tst.fds.d -exclude EXFAIL common/ip/tst.ipv4localudp.ksh exclude EXFAIL common/mdb/tst.dtracedcmd.ksh exclude EXFAIL common/misc/tst.dofmax.ksh exclude EXFAIL common/misc/tst.include.ksh
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201807152034.w6FKYMlR085937>