summaryrefslogtreecommitdiffstats
path: root/web/server/h2o/libh2o/misc/p5-Server-Starter/t/11-specified-fd.t
blob: 7e3b820be6165655b126cf0e23a1644423df02d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
use strict;
use warnings;

use File::Temp ();
use Test::TCP;
use Test::More tests => 4;

use Server::Starter qw(start_server);

$SIG{PIPE} = sub {};

test_tcp(
    server => sub {
        my $port = shift;
        start_server(
            port        => "$port=0",
            exec        => [
                $^X, qw(t/11-specified-fd-server.pl)
            ],
        );
        exit 0;
    },
    client => sub {
        my ($port, $server_pid) = @_;
        my $buf;
        #sleep 1;
        my $sock = IO::Socket::INET->new(
            PeerAddr => "127.0.0.1:$port",
            Proto    => 'tcp',
        );
        ok($sock, 'connect');
        # check response and get pid
        is($sock->syswrite("hello"), 5, 'write');
        ok($sock->sysread($buf, 1048576), 'read');
        undef $sock;
        like($buf, qr/^\d+:hello$/, 'read');
        kill $server_pid;
    },
);