changeset 1321:351b95be742b

Tests: fixed grpc tests hang in accept() on internal nginx error.
author Sergey Kandaurov <pluknet@nginx.com>
date Mon, 09 Apr 2018 14:53:25 +0300
parents 8bd4b88fcac5
children d6daf03478ad
files grpc.t grpc_request_buffering.t grpc_ssl.t
diffstat 3 files changed, 42 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- 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++;
 
--- 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
--- 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