diff options
Diffstat (limited to 'web/server/h2o/libh2o/misc/p5-Server-Starter/t/02-startfail.t')
-rw-r--r-- | web/server/h2o/libh2o/misc/p5-Server-Starter/t/02-startfail.t | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/web/server/h2o/libh2o/misc/p5-Server-Starter/t/02-startfail.t b/web/server/h2o/libh2o/misc/p5-Server-Starter/t/02-startfail.t new file mode 100644 index 000000000..0985534b2 --- /dev/null +++ b/web/server/h2o/libh2o/misc/p5-Server-Starter/t/02-startfail.t @@ -0,0 +1,61 @@ +use strict; +use warnings; + +use Test::TCP; +use Test::More tests => 9; + +use Server::Starter qw(start_server); + +test_tcp( + server => sub { + my $port = shift; + start_server( + port => $port, + exec => [ $^X, qw(t/02-startfail-server.pl) ], + ); + }, + client => sub { + my ($port, $server_pid) = @_; + my $buf; + sleep 3; + { + my $sock = IO::Socket::INET->new( + PeerAddr => "127.0.0.1:$port", + Proto => 'tcp', + ); + ok($sock, 'connect'); + # check generation + ok($sock->sysread($buf, 1048576), 'read'); + is($buf, 2, 'check generation'); + } + # request restart, that will fail + kill 'HUP', $server_pid; + sleep 1; + { + my $sock = IO::Socket::INET->new( + PeerAddr => "127.0.0.1:$port", + Proto => 'tcp', + ); + ok($sock, 'connect'); + ok( + $sock->sysread($buf, 1048576), + 'read while worker is failing to reboot', + ); + is($buf, 2, 'check generation'); + } + # wait until server succeds in reboot + sleep 5; + { + my $sock = IO::Socket::INET->new( + PeerAddr => "127.0.0.1:$port", + Proto => 'tcp', + ); + ok($sock, 'connect'); + ok( + $sock->sysread($buf, 1048576), + 'read after worker succeeds to reboot', + ); + is($buf, 5, 'check generation'); + } + }, +); |