comparison http_header_buffers.t @ 1144:66c7dee0431c

Tests: some more large_client_header_buffers tests.
author Maxim Dounin <mdounin@mdounin.ru>
date Thu, 02 Mar 2017 05:21:11 +0300
parents b9d9c962255f
children
comparison
equal deleted inserted replaced
1143:b9d9c962255f 1144:66c7dee0431c
22 ############################################################################### 22 ###############################################################################
23 23
24 select STDERR; $| = 1; 24 select STDERR; $| = 1;
25 select STDOUT; $| = 1; 25 select STDOUT; $| = 1;
26 26
27 my $t = Test::Nginx->new()->has(qw/http rewrite/)->plan(8) 27 my $t = Test::Nginx->new()->has(qw/http rewrite/)->plan(10)
28 ->write_file_expand('nginx.conf', <<'EOF'); 28 ->write_file_expand('nginx.conf', <<'EOF');
29 29
30 %%TEST_GLOBALS%% 30 %%TEST_GLOBALS%%
31 31
32 daemon off; 32 daemon off;
147 147
148 like(http( 148 like(http(
149 "GET / HTTP/1.1" . CRLF . 149 "GET / HTTP/1.1" . CRLF .
150 "Host: foo" . CRLF . 150 "Host: foo" . CRLF .
151 "X-Foo: " . ("1234567890" x 20) . CRLF . 151 "X-Foo: " . ("1234567890" x 20) . CRLF .
152 "X-Foo: " . ("1234567890" x 20) . CRLF .
153 "X-Foo: " . ("1234567890" x 20) . CRLF .
152 CRLF . 154 CRLF .
153 "GET / HTTP/1.1" . CRLF . 155 "GET / HTTP/1.1" . CRLF .
154 "Host: foo" . CRLF . 156 "Host: foo" . CRLF .
155 "Connection: close" . CRLF . 157 "Connection: close" . CRLF .
156 "X-Foo: foo" . ("1234567890" x 20) . "bar" . CRLF . 158 "X-Foo: foo" . ("1234567890" x 20) . "bar" . CRLF .
158 ), qr/X-Foo: foo(1234567890){20}bar/, 'long header after pipelining'); 160 ), qr/X-Foo: foo(1234567890){20}bar/, 'long header after pipelining');
159 161
160 like(http( 162 like(http(
161 "GET / HTTP/1.1" . CRLF . 163 "GET / HTTP/1.1" . CRLF .
162 "Host: foo" . CRLF . 164 "Host: foo" . CRLF .
165 "X-Foo: " . ("1234567890" x 20) . CRLF .
166 "X-Foo: " . ("1234567890" x 20) . CRLF .
163 "X-Foo: " . ("1234567890" x 20) . CRLF . 167 "X-Foo: " . ("1234567890" x 20) . CRLF .
164 CRLF . 168 CRLF .
165 "GET /foo" . ("1234567890" x 20) . "bar HTTP/1.1" . CRLF . 169 "GET /foo" . ("1234567890" x 20) . "bar HTTP/1.1" . CRLF .
166 "Host: foo" . CRLF . 170 "Host: foo" . CRLF .
167 "Connection: close" . CRLF . 171 "Connection: close" . CRLF .
173 177
174 like(http( 178 like(http(
175 "GET / HTTP/1.1" . CRLF . 179 "GET / HTTP/1.1" . CRLF .
176 "Host: foo" . CRLF . 180 "Host: foo" . CRLF .
177 "X-Foo: " . ("1234567890" x 20) . CRLF . 181 "X-Foo: " . ("1234567890" x 20) . CRLF .
182 "X-Foo: " . ("1234567890" x 20) . CRLF .
183 "X-Foo: " . ("1234567890" x 20) . CRLF .
178 CRLF, 184 CRLF,
179 sleep => 0.1, body => 185 sleep => 0.1, body =>
180 "GET / HTTP/1.1" . CRLF . 186 "GET / HTTP/1.1" . CRLF .
181 "Host: foo" . CRLF . 187 "Host: foo" . CRLF .
182 "Connection: close" . CRLF . 188 "Connection: close" . CRLF .
186 192
187 like(http( 193 like(http(
188 "GET / HTTP/1.1" . CRLF . 194 "GET / HTTP/1.1" . CRLF .
189 "Host: foo" . CRLF . 195 "Host: foo" . CRLF .
190 "X-Foo: " . ("1234567890" x 20) . CRLF . 196 "X-Foo: " . ("1234567890" x 20) . CRLF .
197 "X-Foo: " . ("1234567890" x 20) . CRLF .
198 "X-Foo: " . ("1234567890" x 20) . CRLF .
191 CRLF, 199 CRLF,
192 sleep => 0.1, body => 200 sleep => 0.1, body =>
193 "GET /foo" . ("1234567890" x 20) . "bar HTTP/1.1" . CRLF . 201 "GET /foo" . ("1234567890" x 20) . "bar HTTP/1.1" . CRLF .
194 "Host: foo" . CRLF . 202 "Host: foo" . CRLF .
195 "Connection: close" . CRLF . 203 "Connection: close" . CRLF .
196 CRLF 204 CRLF
197 ), qr!X-URI: /foo(1234567890){20}bar!, 'long request line after keepalive'); 205 ), qr!X-URI: /foo(1234567890){20}bar!, 'long request line after keepalive');
198 206
199 ############################################################################### 207 # the same as the above, but with pipelining and then keepalive;
208 # this ensures that previously allocated buffers are properly cleaned
209 # up when we set keepalive handler, including hc->free
210
211 like(http(
212 "GET / HTTP/1.1" . CRLF .
213 "Host: foo" . CRLF .
214 "X-Foo: " . ("1234567890" x 20) . CRLF .
215 "X-Foo: " . ("1234567890" x 20) . CRLF .
216 "X-Foo: " . ("1234567890" x 20) . CRLF .
217 CRLF .
218 "GET / HTTP/1.1" . CRLF .
219 "Host: foo" . CRLF .
220 "X-Foo: " . ("1234567890" x 20) . CRLF .
221 CRLF,
222 sleep => 0.1, body =>
223 "GET / HTTP/1.1" . CRLF .
224 "Host: foo" . CRLF .
225 "Connection: close" . CRLF .
226 "X-Foo: foo" . ("1234567890" x 20) . "bar" . CRLF .
227 CRLF
228 ), qr/X-Foo: foo(1234567890){20}bar/, 'long header after both');
229
230 like(http(
231 "GET / HTTP/1.1" . CRLF .
232 "Host: foo" . CRLF .
233 "X-Foo: " . ("1234567890" x 20) . CRLF .
234 "X-Foo: " . ("1234567890" x 20) . CRLF .
235 "X-Foo: " . ("1234567890" x 20) . CRLF .
236 CRLF .
237 "GET / HTTP/1.1" . CRLF .
238 "Host: foo" . CRLF .
239 "X-Foo: " . ("1234567890" x 20) . CRLF .
240 CRLF,
241 sleep => 0.1, body =>
242 "GET /foo" . ("1234567890" x 20) . "bar HTTP/1.1" . CRLF .
243 "Host: foo" . CRLF .
244 "Connection: close" . CRLF .
245 CRLF
246 ), qr!X-URI: /foo(1234567890){20}bar!, 'long request line after both');
247
248 ###############################################################################