Mercurial > hg > nginx-tests
annotate stream_upstream.t @ 974:882267679006
Tests: simplified parallel modifications in tests.
Mail tests were simplified in c227348453db.
author | Andrey Zelenkov <zelenkov@nginx.com> |
---|---|
date | Tue, 12 Jul 2016 17:39:03 +0300 |
parents | e9064d691790 |
children | e74a9342eb96 |
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 ############################################################################### |