Mercurial > hg > ngx_http_catch_body_filter_module
annotate t/buffering.t @ 3:d7b8639a8857
Tests for "proxy_request_buffering off".
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 09 Feb 2015 16:33:13 +0300 |
parents | |
children | 01a36878bf36 |
rev | line source |
---|---|
3
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 # Tests for "proxy_request_buffering off". |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 ############################################################################### |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 use warnings; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 use strict; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
12 use Test::More; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 use Test::Nginx; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
15 use Socket qw/ CRLF /; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
16 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
17 ############################################################################### |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 select STDERR; $| = 1; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 select STDOUT; $| = 1; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 my $t = Test::Nginx->new()->has(qw/http proxy rewrite/)->plan(1) |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 ->write_file_expand('nginx.conf', <<'EOF'); |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
24 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
25 %%TEST_GLOBALS%% |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
26 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
27 daemon off; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
28 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
29 events { |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
30 } |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 http { |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
33 %%TEST_GLOBALS_HTTP%% |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
34 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 server { |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
36 listen 127.0.0.1:8080; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 server_name localhost; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
38 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
39 location / { |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
40 proxy_pass http://127.0.0.1:8080/catch; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
41 proxy_request_buffering off; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
42 add_header X-Request-Time $request_time always; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
43 } |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
44 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
45 location /catch { |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
46 proxy_pass http://127.0.0.1:8080/proxy; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
47 proxy_request_buffering off; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
48 catch_body on; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
49 } |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
50 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
51 location /proxy { |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
52 proxy_pass http://127.0.0.1:8080/empty; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
53 } |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
54 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
55 location /empty { |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
56 return 200 "test response body\n"; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
57 } |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
58 } |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
59 } |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
60 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
61 EOF |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
62 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
63 $t->write_file('index.html', 'SEE-THIS'); |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
64 $t->run(); |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
65 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
66 ############################################################################### |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
67 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
68 # buffering switched off - expect immediate reject, |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
69 # before we'll send second part of the body |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
70 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
71 like(get_sleep('/', '12345X', '123456'), |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
72 qr/403 Forbidden.*X-Request-Time: 0/ms, |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
73 'unbuffered request rejected'); |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
74 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
75 ############################################################################### |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
76 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
77 sub get_sleep { |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
78 my $uri = shift; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
79 my $first = shift; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
80 my $second = shift; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
81 my $length = length($first) + length($second); |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
82 return http( |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
83 "GET $uri HTTP/1.1" . CRLF |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
84 . "Host: localhost" . CRLF |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
85 . "Connection: close" . CRLF |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
86 . "Content-Length: $length" . CRLF . CRLF |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
87 . $first, |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
88 sleep => 1.1, |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
89 body => $second |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
90 ); |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
91 } |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
92 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
93 ############################################################################### |