annotate stream_upstream.t @ 1021:ebdf239722b9

Tests: relaxed proxy_cache_lock.t nolock tests to fix on Solaris. Assumed that the order of responses being arrived in nolock case may be ignored. An important part of such case is that the only last response should be cached.
author Sergey Kandaurov <pluknet@nginx.com>
date Fri, 02 Sep 2016 12:17:35 +0300
parents 882267679006
children e74a9342eb96
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
556
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
6 # Stream tests for upstream module and balancers.
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8 ###############################################################################
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10 use warnings;
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use strict;
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13 use Test::More;
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
15 use IO::Select;
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
16
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17 BEGIN { use FindBin; chdir($FindBin::Bin); }
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19 use lib 'lib';
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20 use Test::Nginx;
816
77359b849cd5 Tests: stream package.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 711
diff changeset
21 use Test::Nginx::Stream qw/ stream /;
556
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23 ###############################################################################
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
25 select STDERR; $| = 1;
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
26 select STDOUT; $| = 1;
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
27
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28 my $t = Test::Nginx->new()->has(qw/stream/)->plan(4)
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29 ->write_file_expand('nginx.conf', <<'EOF');
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31 %%TEST_GLOBALS%%
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33 daemon off;
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35 events {
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36 }
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38 stream {
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39 upstream u {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
40 server 127.0.0.1:8084;
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
41 server 127.0.0.1:8085;
556
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
42 }
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44 upstream u2 {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
45 server 127.0.0.1:8086 down;
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
46 server 127.0.0.1:8086;
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
47 server 127.0.0.1:8084;
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
48 server 127.0.0.1:8085;
556
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49 }
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51 upstream u3 {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
52 server 127.0.0.1:8084;
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
53 server 127.0.0.1:8085 weight=2;
556
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
54 }
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
55
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56 upstream u4 {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
57 server 127.0.0.1:8086;
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
58 server 127.0.0.1:8084 backup;
556
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
59 }
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
60
561
cd3e32d9997e Tests: adjusted stream test timeouts, visible on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 556
diff changeset
61 proxy_connect_timeout 1s;
556
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
62
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
63 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
64 listen 127.0.0.1:8080;
556
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
65 proxy_pass u;
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
66 }
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
67
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
68 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
69 listen 127.0.0.1:8081;
556
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
70 proxy_pass u2;
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
71 }
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
72
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
73 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
74 listen 127.0.0.1:8082;
556
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
75 proxy_pass u3;
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76 }
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
77
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
78 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
79 listen 127.0.0.1:8083;
556
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
80 proxy_pass u4;
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
81 }
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
82 }
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
84 EOF
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
85
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
86 $t->run_daemon(\&stream_daemon, port(8084));
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
87 $t->run_daemon(\&stream_daemon, port(8085));
556
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
88 $t->run();
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
89
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
90 $t->waitforsocket('127.0.0.1:' . port(8084));
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
91 $t->waitforsocket('127.0.0.1:' . port(8085));
556
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
92
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
93 ###############################################################################
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
94
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
95 my @ports = my ($port4, $port5) = (port(8084), port(8085));
952
e9064d691790 Tests: converted tests to run in parallel.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 816
diff changeset
96
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
97 is(many(30, port(8080)), "$port4: 15, $port5: 15", 'balanced');
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
98 is(many(30, port(8081)), "$port4: 15, $port5: 15", 'failures');
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
99 is(many(30, port(8082)), "$port4: 10, $port5: 20", 'weight');
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
100 is(many(30, port(8083)), "$port4: 30", 'backup');
556
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
101
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
102 ###############################################################################
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
103
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
104 sub many {
952
e9064d691790 Tests: converted tests to run in parallel.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 816
diff changeset
105 my ($count, $port) = @_;
e9064d691790 Tests: converted tests to run in parallel.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 816
diff changeset
106 my (%ports);
556
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
107
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
108 for (1 .. $count) {
952
e9064d691790 Tests: converted tests to run in parallel.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 816
diff changeset
109 if (stream("127.0.0.1:$port")->io('.') =~ /(\d+)/) {
556
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
110 $ports{$1} = 0 unless defined $ports{$1};
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
111 $ports{$1}++;
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
112 }
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
113 }
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
114
952
e9064d691790 Tests: converted tests to run in parallel.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 816
diff changeset
115 my @keys = map { my $p = $_; grep { $p == $_ } keys %ports } @ports;
e9064d691790 Tests: converted tests to run in parallel.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 816
diff changeset
116 return join ', ', map { $_ . ": " . $ports{$_} } @keys;
556
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
117 }
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
118
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
119 ###############################################################################
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
120
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
121 sub stream_daemon {
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
122 my ($port) = @_;
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
123
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
124 my $server = IO::Socket::INET->new(
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
125 Proto => 'tcp',
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
126 LocalAddr => '127.0.0.1',
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
127 LocalPort => $port,
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
128 Listen => 5,
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
129 Reuse => 1
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
130 )
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
131 or die "Can't create listening socket: $!\n";
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
132
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
133 my $sel = IO::Select->new($server);
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
134
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
135 local $SIG{PIPE} = 'IGNORE';
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
136
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
137 while (my @ready = $sel->can_read) {
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
138 foreach my $fh (@ready) {
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
139 if ($server == $fh) {
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
140 my $new = $fh->accept;
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
141 $new->autoflush(1);
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
142 $sel->add($new);
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
143
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
144 } elsif (stream_handle_client($fh)) {
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
145 $sel->remove($fh);
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
146 $fh->close;
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
147 }
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
148 }
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
149 }
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
150 }
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
151
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
152 sub stream_handle_client {
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
153 my ($client) = @_;
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
154
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
155 log2c("(new connection $client)");
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
156
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
157 $client->sysread(my $buffer, 65536) or return 1;
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
158
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
159 log2i("$client $buffer");
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
160
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
161 $buffer = $client->sockport();
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
162
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
163 log2o("$client $buffer");
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
164
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
165 $client->syswrite($buffer);
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
166
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
167 return 1;
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
168 }
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
169
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
170 sub log2i { Test::Nginx::log_core('|| <<', @_); }
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
171 sub log2o { Test::Nginx::log_core('|| >>', @_); }
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
172 sub log2c { Test::Nginx::log_core('||', @_); }
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
173
97d89d9ab4ed Tests: basic stream upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
174 ###############################################################################