diff lib/Test/Nginx/Stream.pm @ 935:25a4b2fdd3fb

Tests: I/O timeout options introduced in Stream. Some tests wait for unreachable response for 5 seconds before timeout that lead to unnecessary delay.
author Andrey Zelenkov <zelenkov@nginx.com>
date Tue, 24 May 2016 12:58:26 +0300
parents c380b4b7e2e4
children 9361c7eddfc1
line wrap: on
line diff
--- a/lib/Test/Nginx/Stream.pm
+++ b/lib/Test/Nginx/Stream.pm
@@ -58,13 +58,13 @@ sub new {
 }
 
 sub write {
-	my ($self, $message) = @_;
+	my ($self, $message, %extra) = @_;
 	my $s = $self->{_socket};
 
 	local $SIG{PIPE} = 'IGNORE';
 
 	$s->blocking(0);
-	while (IO::Select->new($s)->can_write(1.5)) {
+	while (IO::Select->new($s)->can_write($extra{write_timeout} || 1.5)) {
 		my $n = $s->syswrite($message);
 		log_out(substr($message, 0, $n));
 		last unless $n;
@@ -79,13 +79,13 @@ sub write {
 }
 
 sub read {
-	my ($self) = @_;
+	my ($self, %extra) = @_;
 	my ($s, $buf);
 
 	$s = $self->{_socket};
 
 	$s->blocking(0);
-	if (IO::Select->new($s)->can_read(5)) {
+	if (IO::Select->new($s)->can_read($extra{read_timeout} || 5)) {
 		$s->sysread($buf, 1024);
 	};
 
@@ -103,13 +103,13 @@ sub io {
 	$read = 1 if !defined $read
 		&& $self->{_socket}->socktype() == &SOCK_DGRAM;
 
-	$self->write($data);
+	$self->write($data, %extra);
 
 	$data = '';
 	while (1) {
 		last if defined $read && --$read < 0;
 
-		my $buf = $self->read();
+		my $buf = $self->read(%extra);
 		last unless defined $buf and length($buf);
 
 		$data .= $buf;