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
This commit is contained in:
parent
d7aeb429a0
commit
dc9f20b3f3
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=336315
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/ksh
|
#!/usr/bin/env ksh
|
||||||
#
|
#
|
||||||
# CDDL HEADER START
|
# CDDL HEADER START
|
||||||
#
|
#
|
||||||
@ -36,14 +36,14 @@
|
|||||||
# 4. An unlikely race causes the unlocked global send/receive
|
# 4. An unlikely race causes the unlocked global send/receive
|
||||||
# variables to be corrupted.
|
# 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:
|
# following counts were traced:
|
||||||
#
|
#
|
||||||
# 1 x ip:::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 ping's base UDP port)
|
# 1 x udp:::send (UDP sent to UDP port 33434)
|
||||||
# 1 x ip:::receive (UDP received)
|
# 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
|
# 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
|
# the echo request UDP packet only reaches IP, so the udp:::receive probe
|
||||||
# is not triggered by it.
|
# is not triggered by it.
|
||||||
@ -56,8 +56,25 @@ fi
|
|||||||
|
|
||||||
dtrace=$1
|
dtrace=$1
|
||||||
local=127.0.0.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
|
BEGIN
|
||||||
{
|
{
|
||||||
ipsend = udpsend = ipreceive = 0;
|
ipsend = udpsend = ipreceive = 0;
|
||||||
@ -90,4 +107,11 @@ END
|
|||||||
printf("ip:::receive - %s\n", ipreceive >= 1 ? "yes" : "no");
|
printf("ip:::receive - %s\n", ipreceive >= 1 ? "yes" : "no");
|
||||||
printf("udp:::send - %s\n", udpsend >= 1 ? "yes" : "no");
|
printf("udp:::send - %s\n", udpsend >= 1 ? "yes" : "no");
|
||||||
}
|
}
|
||||||
EOF
|
EODTRACE
|
||||||
|
|
||||||
|
status=$?
|
||||||
|
|
||||||
|
cd /
|
||||||
|
/bin/rm -rf $DIR
|
||||||
|
|
||||||
|
exit $status
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/ksh
|
#!/usr/bin/env ksh93
|
||||||
#
|
#
|
||||||
# CDDL HEADER START
|
# CDDL HEADER START
|
||||||
#
|
#
|
||||||
@ -36,7 +36,7 @@
|
|||||||
# 4. An unlikely race causes the unlocked global send/receive
|
# 4. An unlikely race causes the unlocked global send/receive
|
||||||
# variables to be corrupted.
|
# 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:
|
# following counts were traced:
|
||||||
#
|
#
|
||||||
# 1 x ip:::send (UDP sent to ping's base UDP port)
|
# 1 x ip:::send (UDP sent to ping's base UDP port)
|
||||||
@ -50,6 +50,8 @@ fi
|
|||||||
|
|
||||||
dtrace=$1
|
dtrace=$1
|
||||||
getaddr=./get.ipv4remote.pl
|
getaddr=./get.ipv4remote.pl
|
||||||
|
port=33434
|
||||||
|
DIR=/var/tmp/dtest.$$
|
||||||
|
|
||||||
if [[ ! -x $getaddr ]]; then
|
if [[ ! -x $getaddr ]]; then
|
||||||
print -u2 "could not find or execute sub program: $getaddr"
|
print -u2 "could not find or execute sub program: $getaddr"
|
||||||
@ -60,7 +62,22 @@ if (( $? != 0 )); then
|
|||||||
exit 4
|
exit 4
|
||||||
fi
|
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
|
BEGIN
|
||||||
{
|
{
|
||||||
ipsend = udpsend = 0;
|
ipsend = udpsend = 0;
|
||||||
@ -85,4 +102,11 @@ END
|
|||||||
printf("ip:::send - %s\n", ipsend >= 1 ? "yes" : "no");
|
printf("ip:::send - %s\n", ipsend >= 1 ? "yes" : "no");
|
||||||
printf("udp:::send - %s\n", udpsend >= 1 ? "yes" : "no");
|
printf("udp:::send - %s\n", udpsend >= 1 ? "yes" : "no");
|
||||||
}
|
}
|
||||||
EOF
|
EODTRACE
|
||||||
|
|
||||||
|
status=$?
|
||||||
|
|
||||||
|
cd /
|
||||||
|
/bin/rm -rf $DIR
|
||||||
|
|
||||||
|
exit $status
|
||||||
|
@ -33,7 +33,6 @@ exclude EXFAIL common/funcs/tst.copyin.d
|
|||||||
exclude EXFAIL common/funcs/tst.copyinto.d
|
exclude EXFAIL common/funcs/tst.copyinto.d
|
||||||
exclude EXFAIL common/funcs/tst.ddi_pathname.d
|
exclude EXFAIL common/funcs/tst.ddi_pathname.d
|
||||||
exclude EXFAIL common/io/tst.fds.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/mdb/tst.dtracedcmd.ksh
|
||||||
exclude EXFAIL common/misc/tst.dofmax.ksh
|
exclude EXFAIL common/misc/tst.dofmax.ksh
|
||||||
exclude EXFAIL common/misc/tst.include.ksh
|
exclude EXFAIL common/misc/tst.include.ksh
|
||||||
|
Loading…
Reference in New Issue
Block a user