diff options
-rw-r--r-- | t/httpd-corner.psgi | 2 | ||||
-rw-r--r-- | t/httpd-corner.t | 19 |
2 files changed, 13 insertions, 8 deletions
diff --git a/t/httpd-corner.psgi b/t/httpd-corner.psgi index bf38d1ff..18e556be 100644 --- a/t/httpd-corner.psgi +++ b/t/httpd-corner.psgi @@ -87,7 +87,7 @@ my $app = sub { }); } elsif ($path eq '/pid') { $code = 200; - push @$body, $$; + push @$body, "$$\n"; } [ $code, $h, $body ] diff --git a/t/httpd-corner.t b/t/httpd-corner.t index b063d9fa..cc36c7e1 100644 --- a/t/httpd-corner.t +++ b/t/httpd-corner.t @@ -76,17 +76,22 @@ my $spawn_httpd = sub { $spawn_httpd->(); if ('test worker death') { my $conn = conn_for($sock, 'killed worker'); - $conn->write("GET /pid HTTP/1.0\r\n\r\n"); - ok($conn->read(my $buf, 8192), 'read response'); - my ($head, $body) = split(/\r\n\r\n/, $buf); - like($body, qr/\A[0-9]+\z/, '/pid response'); - my $pid = $body; + $conn->write("GET /pid HTTP/1.1\r\nHost:example.com\r\n\r\n"); + my $pid; + while (defined(my $line = $conn->getline)) { + next unless $line eq "\r\n"; + chomp($pid = $conn->getline); + last; + } + like($pid, qr/\A[0-9]+\z/, '/pid response'); is(kill('KILL', $pid), 1, 'killed worker'); + is($conn->getline, undef, 'worker died and EOF-ed client'); $conn = conn_for($sock, 'respawned worker'); $conn->write("GET /pid HTTP/1.0\r\n\r\n"); - ok($conn->read($buf, 8192), 'read response'); - ($head, $body) = split(/\r\n\r\n/, $buf); + ok($conn->read(my $buf, 8192), 'read response'); + my ($head, $body) = split(/\r\n\r\n/, $buf); + chomp($body); like($body, qr/\A[0-9]+\z/, '/pid response'); isnt($body, $pid, 'respawned worker'); } |