Mercurial > hg > nginx-tests
comparison stream_limit_rate.t @ 952:e9064d691790
Tests: converted tests to run in parallel.
author | Andrey Zelenkov <zelenkov@nginx.com> |
---|---|
date | Tue, 21 Jun 2016 16:39:13 +0300 |
parents | b1fa8e0cc27b |
children | 882267679006 |
comparison
equal
deleted
inserted
replaced
951:9361c7eddfc1 | 952:e9064d691790 |
---|---|
44 | 44 |
45 proxy_download_rate 1011; | 45 proxy_download_rate 1011; |
46 proxy_upload_rate 1000; | 46 proxy_upload_rate 1000; |
47 | 47 |
48 server { | 48 server { |
49 listen 127.0.0.1:8081; | 49 listen 127.0.0.1:%%PORT_1%%; |
50 proxy_pass 127.0.0.1:8080; | 50 proxy_pass 127.0.0.1:%%PORT_0%%; |
51 } | 51 } |
52 | 52 |
53 server { | 53 server { |
54 listen 127.0.0.1:8082; | 54 listen 127.0.0.1:%%PORT_2%%; |
55 proxy_pass 127.0.0.1:8080; | 55 proxy_pass 127.0.0.1:%%PORT_0%%; |
56 proxy_download_rate 0; | 56 proxy_download_rate 0; |
57 proxy_upload_rate 0; | 57 proxy_upload_rate 0; |
58 } | 58 } |
59 | 59 |
60 server { | 60 server { |
61 listen 127.0.0.1:8083; | 61 listen 127.0.0.1:%%PORT_3%%; |
62 proxy_pass 127.0.0.1:8080; | 62 proxy_pass 127.0.0.1:%%PORT_0%%; |
63 proxy_download_rate 1; | 63 proxy_download_rate 1; |
64 } | 64 } |
65 | 65 |
66 server { | 66 server { |
67 listen 127.0.0.1:8084; | 67 listen 127.0.0.1:%%PORT_4%%; |
68 proxy_pass 127.0.0.1:8080; | 68 proxy_pass 127.0.0.1:%%PORT_0%%; |
69 proxy_upload_rate 1; | 69 proxy_upload_rate 1; |
70 } | 70 } |
71 | 71 |
72 server { | 72 server { |
73 listen 127.0.0.1:8085; | 73 listen 127.0.0.1:%%PORT_5%%; |
74 proxy_pass 127.0.0.1:8080; | 74 proxy_pass 127.0.0.1:%%PORT_0%%; |
75 proxy_download_rate 250; | 75 proxy_download_rate 250; |
76 } | 76 } |
77 | 77 |
78 server { | 78 server { |
79 listen 127.0.0.1:8086; | 79 listen 127.0.0.1:%%PORT_6%%; |
80 proxy_pass 127.0.0.1:8090; | 80 proxy_pass 127.0.0.1:%%PORT_7%%; |
81 proxy_upload_rate 250; | 81 proxy_upload_rate 250; |
82 } | 82 } |
83 } | 83 } |
84 | 84 |
85 EOF | 85 EOF |
86 | 86 |
87 $t->run_daemon(\&stream_daemon, 8080); | 87 $t->run_daemon(\&stream_daemon, port(0)); |
88 $t->run_daemon(\&stream_daemon, 8090); | 88 $t->run_daemon(\&stream_daemon, port(7)); |
89 $t->run(); | 89 $t->run(); |
90 | 90 |
91 $t->waitforsocket('127.0.0.1:8080'); | 91 $t->waitforsocket('127.0.0.1:' . port(0)); |
92 $t->waitforsocket('127.0.0.1:8090'); | 92 $t->waitforsocket('127.0.0.1:' . port(7)); |
93 | 93 |
94 ############################################################################### | 94 ############################################################################### |
95 | 95 |
96 my $str = '1234567890' x 100; | 96 my $str = '1234567890' x 100; |
97 | 97 |
98 my %r = response($str, peer => '127.0.0.1:8081'); | 98 my %r = response($str, peer => '127.0.0.1:' . port(1)); |
99 is($r{'data'}, $str, 'exact limit'); | 99 is($r{'data'}, $str, 'exact limit'); |
100 | 100 |
101 %r = response($str, peer => '127.0.0.1:8082'); | 101 %r = response($str, peer => '127.0.0.1:' . port(2)); |
102 is($r{'data'}, $str, 'unlimited'); | 102 is($r{'data'}, $str, 'unlimited'); |
103 | 103 |
104 SKIP: { | 104 SKIP: { |
105 skip 'unsafe on VM', 2 unless $ENV{TEST_NGINX_UNSAFE}; | 105 skip 'unsafe on VM', 2 unless $ENV{TEST_NGINX_UNSAFE}; |
106 | 106 |
107 # if interaction between backend and client is slow then proxy can add extra | 107 # if interaction between backend and client is slow then proxy can add extra |
108 # bytes to upload/download data | 108 # bytes to upload/download data |
109 | 109 |
110 %r = response($str, peer => '127.0.0.1:8083', readonce => 1); | 110 %r = response($str, peer => '127.0.0.1:' . port(3), readonce => 1); |
111 is($r{'data'}, '1', 'download - one byte'); | 111 is($r{'data'}, '1', 'download - one byte'); |
112 | 112 |
113 %r = response($str, peer => '127.0.0.1:8084'); | 113 %r = response($str, peer => '127.0.0.1:' . port(4)); |
114 is($r{'data'}, '1', 'upload - one byte'); | 114 is($r{'data'}, '1', 'upload - one byte'); |
115 | 115 |
116 } | 116 } |
117 | 117 |
118 # Five chunks are split with four 1s delays: | 118 # Five chunks are split with four 1s delays: |
119 # the first four chunks are quarters of test string | 119 # the first four chunks are quarters of test string |
120 # and the fifth one is some extra data from backend. | 120 # and the fifth one is some extra data from backend. |
121 | 121 |
122 %r = response($str, peer => '127.0.0.1:8085'); | 122 %r = response($str, peer => '127.0.0.1:' . port(5)); |
123 my $diff = time() - $r{'time'}; | 123 my $diff = time() - $r{'time'}; |
124 cmp_ok($diff, '>=', 4, 'download - time'); | 124 cmp_ok($diff, '>=', 4, 'download - time'); |
125 is($r{'data'}, $str, 'download - data'); | 125 is($r{'data'}, $str, 'download - data'); |
126 | 126 |
127 my $time = time(); | 127 my $time = time(); |
128 %r = response($str . 'close', peer => '127.0.0.1:8086'); | 128 %r = response($str . 'close', peer => '127.0.0.1:' . port(6)); |
129 $diff = time() - $time; | 129 $diff = time() - $time; |
130 cmp_ok($diff, '>=', 4, 'upload - time'); | 130 cmp_ok($diff, '>=', 4, 'upload - time'); |
131 is($r{'data'}, $str . 'close', 'upload - data'); | 131 is($r{'data'}, $str . 'close', 'upload - data'); |
132 | 132 |
133 ############################################################################### | 133 ############################################################################### |
154 | 154 |
155 ############################################################################### | 155 ############################################################################### |
156 | 156 |
157 sub stream_daemon { | 157 sub stream_daemon { |
158 my $port = shift; | 158 my $port = shift; |
159 | |
159 my $server = IO::Socket::INET->new( | 160 my $server = IO::Socket::INET->new( |
160 Proto => 'tcp', | 161 Proto => 'tcp', |
161 LocalAddr => '127.0.0.1', | 162 LocalAddr => '127.0.0.1', |
162 LocalPort => $port, | 163 LocalPort => $port, |
163 Listen => 5, | 164 Listen => 5, |
191 | 192 |
192 $client->sysread(my $buffer, 65536) or return 1; | 193 $client->sysread(my $buffer, 65536) or return 1; |
193 | 194 |
194 log2i("$client $buffer"); | 195 log2i("$client $buffer"); |
195 | 196 |
196 $buffer .= " " . time() if $client->sockport() eq 8080; | 197 $buffer .= " " . time() if $client->sockport() eq port(0); |
197 | 198 |
198 log2o("$client $buffer"); | 199 log2o("$client $buffer"); |
199 | 200 |
200 $client->syswrite($buffer); | 201 $client->syswrite($buffer); |
201 | 202 |
202 return $client->sockport() eq 8080 ? 1 : $buffer =~ /close/; | 203 return $client->sockport() eq port(0) ? 1 : $buffer =~ /close/; |
203 } | 204 } |
204 | 205 |
205 sub log2i { Test::Nginx::log_core('|| <<', @_); } | 206 sub log2i { Test::Nginx::log_core('|| <<', @_); } |
206 sub log2o { Test::Nginx::log_core('|| >>', @_); } | 207 sub log2o { Test::Nginx::log_core('|| >>', @_); } |
207 sub log2c { Test::Nginx::log_core('||', @_); } | 208 sub log2c { Test::Nginx::log_core('||', @_); } |