diff options
author | 2014-03-24 14:58:42 +0000 | |
---|---|---|
committer | 2014-03-24 14:58:42 +0000 | |
commit | 91f110e064cd7c194e59e019b83bb7496c1c84d4 (patch) | |
tree | 3e8e577405dba7e94b43cbf21c22f21aaa5ab949 /gnu/usr.bin/perl/dist/IO/t/cachepropagate-unix.t | |
parent | do not call purge_task every 10 secs, it is only needed once at startup and (diff) | |
download | wireguard-openbsd-91f110e064cd7c194e59e019b83bb7496c1c84d4.tar.xz wireguard-openbsd-91f110e064cd7c194e59e019b83bb7496c1c84d4.zip |
Import perl-5.18.2
OK espie@ sthen@ deraadt@
Diffstat (limited to 'gnu/usr.bin/perl/dist/IO/t/cachepropagate-unix.t')
-rw-r--r-- | gnu/usr.bin/perl/dist/IO/t/cachepropagate-unix.t | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/gnu/usr.bin/perl/dist/IO/t/cachepropagate-unix.t b/gnu/usr.bin/perl/dist/IO/t/cachepropagate-unix.t new file mode 100644 index 00000000000..e3e438ea1ca --- /dev/null +++ b/gnu/usr.bin/perl/dist/IO/t/cachepropagate-unix.t @@ -0,0 +1,102 @@ +#!/usr/bin/perl + +use warnings; +use strict; + +use File::Temp qw(tempdir); +use File::Spec::Functions; +use IO::Socket; +use IO::Socket::UNIX; +use Socket; +use Config; +use Test::More; + +plan skip_all => "UNIX domain sockets not implemented on $^O" + if ($^O =~ m/^(?:qnx|nto|vos|MSWin32|VMS)$/); + +plan tests => 15; + +my $socketpath = catfile(tempdir( CLEANUP => 1 ), 'testsock'); + +# start testing stream sockets: +my $listener = IO::Socket::UNIX->new(Type => SOCK_STREAM, + Listen => 1, + Local => $socketpath); +ok(defined($listener), 'stream socket created'); + +my $p = $listener->protocol(); +ok(defined($p), 'protocol defined'); +my $d = $listener->sockdomain(); +ok(defined($d), 'domain defined'); +my $s = $listener->socktype(); +ok(defined($s), 'type defined'); + +SKIP: { + skip "fork not available", 4 + unless $Config{d_fork} || $Config{d_pseudofork}; + + my $cpid = fork(); + if (0 == $cpid) { + # the child: + sleep(1); + my $connector = IO::Socket::UNIX->new(Peer => $socketpath); + exit(0); + } else { + ok(defined($cpid), 'spawned a child'); + } + + my $new = $listener->accept(); + + is($new->sockdomain(), $d, 'domain match'); + SKIP: { + skip "no Socket::SO_PROTOCOL", 1 if !defined(eval { Socket::SO_PROTOCOL }); + skip "SO_PROTOCOL defined but not implemented", 1 + if !defined $new->sockopt(Socket::SO_PROTOCOL); + is($new->protocol(), $p, 'protocol match'); + } + SKIP: { + skip "no Socket::SO_TYPE", 1 if !defined(eval { Socket::SO_TYPE }); + skip "SO_TYPE defined but not implemented", 1 + if !defined $new->sockopt(Socket::SO_TYPE); + is($new->socktype(), $s, 'type match'); + } + + unlink($socketpath); + wait(); +} + +undef $TODO; +SKIP: { + skip "datagram unix sockets not supported on $^O", 7 + if $^O eq "haiku"; + # now test datagram sockets: + $listener = IO::Socket::UNIX->new(Type => SOCK_DGRAM, + Local => $socketpath); + ok(defined($listener), 'datagram socket created'); + + $p = $listener->protocol(); + ok(defined($p), 'protocol defined'); + $d = $listener->sockdomain(); + ok(defined($d), 'domain defined'); + $s = $listener->socktype(); + ok(defined($s), 'type defined'); + + my $new = IO::Socket::UNIX->new_from_fd($listener->fileno(), 'r+'); + + is($new->sockdomain(), $d, 'domain match'); + SKIP: { + skip "no Socket::SO_PROTOCOL", 1 if !defined(eval { Socket::SO_PROTOCOL }); + skip "SO_PROTOCOL defined but not implemented", 1 + if !defined $new->sockopt(Socket::SO_PROTOCOL); + is($new->protocol(), $p, 'protocol match'); + } + SKIP: { + skip "AIX: getsockopt(SO_TYPE) is badly broken on UDP/UNIX sockets", 1 + if $^O eq "aix"; + skip "no Socket::SO_TYPE", 1 if !defined(eval { Socket::SO_TYPE }); + skip "SO_TYPE defined but not implemented", 1 + if !defined $new->sockopt(Socket::SO_TYPE); + is($new->socktype(), $s, 'type match'); + } +} +unlink($socketpath); |