# HG changeset patch # User Sergey Kandaurov # Date 1523274805 -10800 # Node ID 351b95be742be77254b5d08f6ac211405a310ed2 # Parent 8bd4b88fcac526385b1267a8f6a2bb9afc5346d1 Tests: fixed grpc tests hang in accept() on internal nginx error. diff --git a/grpc.t b/grpc.t --- a/grpc.t +++ b/grpc.t @@ -463,7 +463,20 @@ sub grpc { { name => 'te', value => 'trailers', mode => 2 }]}); if (!$extra{reuse}) { - $client = $server->accept() or return; + eval { + local $SIG{ALRM} = sub { die "timeout\n" }; + alarm(5); + + $client = $server->accept() or return; + + alarm(0); + }; + alarm(0); + if ($@) { + log_in("died: $@"); + return undef; + } + log2c("(new connection $client)"); $n++; diff --git a/grpc_request_buffering.t b/grpc_request_buffering.t --- a/grpc_request_buffering.t +++ b/grpc_request_buffering.t @@ -102,7 +102,20 @@ sub grpc { { name => 'content-length', value => '5' }]}); if (!$extra{reuse}) { - $client = $server->accept() or return; + eval { + local $SIG{ALRM} = sub { die "timeout\n" }; + alarm(5); + + $client = $server->accept() or return; + + alarm(0); + }; + alarm(0); + if ($@) { + log_in("died: $@"); + return undef; + } + log2c("(new connection $client)"); $client->sysread(my $buf, 24) == 24 or return; # preface diff --git a/grpc_ssl.t b/grpc_ssl.t --- a/grpc_ssl.t +++ b/grpc_ssl.t @@ -241,7 +241,20 @@ sub grpc { { name => 'te', value => 'trailers', mode => 2 }]}); if (!$extra{reuse}) { - $client = $server->accept() or return; + eval { + local $SIG{ALRM} = sub { die "timeout\n" }; + alarm(5); + + $client = $server->accept() or return; + + alarm(0); + }; + alarm(0); + if ($@) { + log_in("died: $@"); + return undef; + } + log2c("(new connection $client)"); $client->sysread(my $buf, 24) == 24 or return; # preface