comparison 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
comparison
equal deleted inserted replaced
867:89898b20f258 868:d2cb9ed7412e
9 9
10 use warnings; 10 use warnings;
11 use strict; 11 use strict;
12 12
13 use base qw/ Exporter /; 13 use base qw/ Exporter /;
14 our @EXPORT_OK = qw/ stream /; 14 our @EXPORT_OK = qw/ stream dgram /;
15 15
16 use Test::More qw//; 16 use Test::More qw//;
17 use IO::Select; 17 use IO::Select;
18 use IO::Socket; 18 use IO::Socket;
19 19
20 use Test::Nginx; 20 use Test::Nginx;
21 21
22 sub stream { 22 sub stream {
23 return Test::Nginx::Stream->new(@_); 23 return Test::Nginx::Stream->new(@_);
24 }
25
26 sub dgram {
27 unshift(@_, "PeerAddr") if @_ == 1;
28
29 return Test::Nginx::Stream->new(
30 Proto => "udp",
31 PeerAddr => '127.0.0.1:8080',
32 @_
33 );
24 } 34 }
25 35
26 sub new { 36 sub new {
27 my $self = {}; 37 my $self = {};
28 bless $self, shift @_; 38 bless $self, shift @_;
86 sub io { 96 sub io {
87 my $self = shift; 97 my $self = shift;
88 98
89 my ($data, %extra) = @_; 99 my ($data, %extra) = @_;
90 my $length = $extra{length}; 100 my $length = $extra{length};
101 my $read = $extra{read};
102
103 $read = 1 if !defined $read
104 && $self->{_socket}->socktype() == &SOCK_DGRAM;
91 105
92 $self->write($data); 106 $self->write($data);
93 107
94 $data = ''; 108 $data = '';
95 while (1) { 109 while (1) {
110 last if defined $read && --$read < 0;
111
96 my $buf = $self->read(); 112 my $buf = $self->read();
97 last unless length($buf); 113 last unless length($buf);
98 114
99 $data .= $buf; 115 $data .= $buf;
100 last if defined $length && length($data) >= $length; 116 last if defined $length && length($data) >= $length;