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('||', @_); }