diff lib/Test/Nginx/Stream.pm @ 868:d2cb9ed7412e

Tests: stream udp tests.
author Andrey Zelenkov <zelenkov@nginx.com>
date Tue, 15 Mar 2016 16:20:29 +0300
parents 77359b849cd5
children c380b4b7e2e4
line wrap: on
line diff
--- a/lib/Test/Nginx/Stream.pm
+++ b/lib/Test/Nginx/Stream.pm
@@ -11,7 +11,7 @@ use warnings;
 use strict;
 
 use base qw/ Exporter /;
-our @EXPORT_OK = qw/ stream /;
+our @EXPORT_OK = qw/ stream dgram /;
 
 use Test::More qw//;
 use IO::Select;
@@ -23,6 +23,16 @@ sub stream {
 	return Test::Nginx::Stream->new(@_);
 }
 
+sub dgram {
+	unshift(@_, "PeerAddr") if @_ == 1;
+
+	return Test::Nginx::Stream->new(
+		Proto => "udp",
+		PeerAddr => '127.0.0.1:8080',
+		@_
+	);
+}
+
 sub new {
 	my $self = {};
 	bless $self, shift @_;
@@ -88,11 +98,17 @@ sub io {
 
 	my ($data, %extra) = @_;
 	my $length = $extra{length};
+	my $read = $extra{read};
+
+	$read = 1 if !defined $read
+		&& $self->{_socket}->socktype() == &SOCK_DGRAM;
 
 	$self->write($data);
 
 	$data = '';
 	while (1) {
+		last if defined $read && --$read < 0;
+
 		my $buf = $self->read();
 		last unless length($buf);