summaryrefslogtreecommitdiffstats
path: root/web/server/h2o/libh2o/misc/p5-Server-Starter/t/02-startfail.t
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--web/server/h2o/libh2o/misc/p5-Server-Starter/t/02-startfail.t61
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 00000000..0985534b
--- /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');
+ }
+ },
+);