Mercurial > hg > ngx_http_catch_body_filter_module
annotate t/buffering.t @ 5:ae29daca3f0e default tip
Explicit use of "proxy_request_buffering on" in tests.
This allows to avoid spurious tests failures in test runs with request
buffering switched off by default.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Fri, 06 Mar 2015 17:44:38 +0300 |
parents | 01a36878bf36 |
children |
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 |
4 | 22 my $t = Test::Nginx->new()->has(qw/http proxy rewrite/) |
3
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; |
5
ae29daca3f0e
Explicit use of "proxy_request_buffering on" in tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
4
diff
changeset
|
53 proxy_request_buffering on; |
3
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 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
56 location /empty { |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
57 return 200 "test response body\n"; |
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 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
62 EOF |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
63 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
64 $t->write_file('index.html', 'SEE-THIS'); |
4 | 65 $t->try_run('no catch_body')->plan(1); |
3
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 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
69 # buffering switched off - expect immediate reject, |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
70 # before we'll send second part of the body |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
71 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
72 like(get_sleep('/', '12345X', '123456'), |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
73 qr/403 Forbidden.*X-Request-Time: 0/ms, |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
74 'unbuffered request rejected'); |
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 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
78 sub get_sleep { |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
79 my $uri = shift; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
80 my $first = shift; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
81 my $second = shift; |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
82 my $length = length($first) + length($second); |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
83 return http( |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
84 "GET $uri HTTP/1.1" . CRLF |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
85 . "Host: localhost" . CRLF |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
86 . "Connection: close" . CRLF |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
87 . "Content-Length: $length" . CRLF . CRLF |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
88 . $first, |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
89 sleep => 1.1, |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
90 body => $second |
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 |
d7b8639a8857
Tests for "proxy_request_buffering off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
94 ############################################################################### |