Mercurial > hg > nginx-tests
annotate proxy_unfinished.t @ 1021:ebdf239722b9
Tests: relaxed proxy_cache_lock.t nolock tests to fix on Solaris.
Assumed that the order of responses being arrived in nolock case may be ignored.
An important part of such case is that the only last response should be cached.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Fri, 02 Sep 2016 12:17:35 +0300 |
parents | 196d33c2bb45 |
children | b82f54728e14 |
rev | line source |
---|---|
299
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 # Tests for http proxy and prematurely closed connections. Incomplete |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 # responses shouldn't loose information about their incompleteness. |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 # In particular, incomplete responses: |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 # |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 # - shouldn't be cached |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 # |
343
e7dc8f4d0a4b
Tests: whitespace and spelling fixes.
Sergey Kandaurov <pluknet@nginx.com>
parents:
319
diff
changeset
|
12 # - if a response is sent using chunked transfer encoding, |
299
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 # final chunk shouldn't be sent |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
15 ############################################################################### |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
16 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
17 use warnings; |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 use strict; |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 use Test::More; |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 use Socket qw/ CRLF /; |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
24 BEGIN { use FindBin; chdir($FindBin::Bin); } |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
25 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
26 use lib 'lib'; |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
27 use Test::Nginx; |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
28 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
29 ############################################################################### |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
30 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 select STDERR; $| = 1; |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 select STDOUT; $| = 1; |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
33 |
1020
196d33c2bb45
Tests: removed TODO and try_run() checks for legacy versions.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
974
diff
changeset
|
34 my $t = Test::Nginx->new()->has(qw/http proxy cache sub/)->plan(15); |
598
153969b53780
Tests: expect occasional alerts on solaris in certain tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
589
diff
changeset
|
35 |
153969b53780
Tests: expect occasional alerts on solaris in certain tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
589
diff
changeset
|
36 $t->write_file_expand('nginx.conf', <<'EOF'); |
299
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
38 %%TEST_GLOBALS%% |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
39 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
40 daemon off; |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
41 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
42 events { |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
43 } |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
44 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
45 http { |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
46 %%TEST_GLOBALS_HTTP%% |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
47 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
48 proxy_cache_path %%TESTDIR%%/cache levels=1:2 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
49 keys_zone=one:1m; |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
50 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
51 server { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
52 listen 127.0.0.1:8080 sndbuf=32k; |
299
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
53 server_name localhost; |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
54 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
55 location / { |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
56 sub_filter foo bar; |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
57 sub_filter_types *; |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
58 proxy_pass http://127.0.0.1:8081; |
299
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
59 } |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
60 |
307
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
61 location /un/ { |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
62 sub_filter foo bar; |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
63 sub_filter_types *; |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
64 proxy_pass http://127.0.0.1:8081/; |
307
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
65 proxy_buffering off; |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
66 } |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
67 |
299
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
68 location /cache/ { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
69 proxy_pass http://127.0.0.1:8081/; |
299
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
70 proxy_cache one; |
307
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
71 add_header X-Cache-Status $upstream_cache_status; |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
72 } |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
73 |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
74 location /proxy/ { |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
75 sub_filter foo bar; |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
76 sub_filter_types *; |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
77 proxy_pass http://127.0.0.1:8080/local/; |
307
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
78 proxy_buffer_size 1k; |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
79 proxy_buffers 4 1k; |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
80 } |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
81 |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
82 location /local/ { |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
83 alias %%TESTDIR%%/; |
299
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
84 } |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
85 } |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
86 } |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
87 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
88 EOF |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
89 |
307
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
90 $t->write_file('big.html', 'X' x (1024 * 1024) . 'finished'); |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
91 |
299
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
92 $t->run_daemon(\&http_daemon); |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
93 $t->run()->waitforsocket('127.0.0.1:' . port(8081)); |
299
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
94 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
95 ############################################################################### |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
96 |
307
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
97 http_get('/cache/length'); |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
98 like(http_get('/cache/length'), qr/MISS/, 'unfinished not cached'); |
299
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
99 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
100 # chunked encoding has enough information to don't cache a response, |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
101 # much like with Content-Length available |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
102 |
307
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
103 http_get('/cache/chunked'); |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
104 like(http_get('/cache/chunked'), qr/MISS/, 'unfinished chunked'); |
299
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
105 |
307
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
106 # make sure there is no final chunk in unfinished responses |
299
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
107 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
108 like(http_get_11('/length'), qr/unfinished(?!.*\x0d\x0a?0\x0d\x0a?)/s, |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
109 'length no final chunk'); |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
110 like(http_get_11('/chunked'), qr/unfinished(?!.*\x0d\x0a?0\x0d\x0a?)/s, |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
111 'chunked no final chunk'); |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
112 |
307
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
113 # but there is final chunk in complete responses |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
114 |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
115 like(http_get_11('/length/ok'), qr/finished.*\x0d\x0a?0\x0d\x0a?/s, |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
116 'length final chunk'); |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
117 like(http_get_11('/chunked/ok'), qr/finished.*\x0d\x0a?0\x0d\x0a?/s, |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
118 'chunked final chunk'); |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
119 |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
120 # the same with proxy_buffering set to off |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
121 |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
122 like(http_get_11('/un/length'), qr/unfinished(?!.*\x0d\x0a?0\x0d\x0a?)/s, |
589
a9569f57da98
Tests: whitespaces fix.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
574
diff
changeset
|
123 'unbuffered length no final chunk'); |
307
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
124 like(http_get_11('/un/chunked'), qr/unfinished(?!.*\x0d\x0a?0\x0d\x0a?)/s, |
589
a9569f57da98
Tests: whitespaces fix.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
574
diff
changeset
|
125 'unbuffered chunked no final chunk'); |
307
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
126 |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
127 like(http_get_11('/un/length/ok'), qr/finished.*\x0d\x0a?0\x0d\x0a?/s, |
589
a9569f57da98
Tests: whitespaces fix.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
574
diff
changeset
|
128 'unbuffered length final chunk'); |
307
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
129 like(http_get_11('/un/chunked/ok'), qr/finished.*\x0d\x0a?0\x0d\x0a?/s, |
589
a9569f57da98
Tests: whitespaces fix.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
574
diff
changeset
|
130 'unbuffered chunked final chunk'); |
307
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
131 |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
132 # big responses |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
133 |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
134 like(http_get('/big', sleep => 0.1), qr/unfinished/s, 'big unfinished'); |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
135 like(http_get('/big/ok', sleep => 0.1), qr/finished/s, 'big finished'); |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
136 like(http_get('/un/big', sleep => 0.1), qr/unfinished/s, 'big unfinished un'); |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
137 like(http_get('/un/big/ok', sleep => 0.1), qr/finished/s, 'big finished un'); |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
138 |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
139 # if disk buffering fails for some reason, there should be |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
140 # no final chunk |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
141 |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
142 chmod(0000, $t->testdir() . '/proxy_temp'); |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
143 like(http_get_11('/proxy/big.html', sleep => 0.5), |
391
915ef26ac6eb
Tests: fix proxy_unfinished.t failures with big buffers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
343
diff
changeset
|
144 qr/X(?!.*\x0d\x0a?0\x0d\x0a?)|finished/s, 'no proxy temp'); |
307
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
145 |
939
cfddaf316233
Tests: restored proxy_temp_path access bits in proxy_unfinished.t.
Sergey Kandaurov <pluknet@nginx.com>
parents:
891
diff
changeset
|
146 chmod(0700, $t->testdir() . '/proxy_temp'); |
cfddaf316233
Tests: restored proxy_temp_path access bits in proxy_unfinished.t.
Sergey Kandaurov <pluknet@nginx.com>
parents:
891
diff
changeset
|
147 |
299
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
148 ############################################################################### |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
149 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
150 sub http_get_11 { |
307
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
151 my ($uri, %extra) = @_; |
299
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
152 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
153 return http( |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
154 "GET $uri HTTP/1.1" . CRLF . |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
155 "Connection: close" . CRLF . |
307
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
156 "Host: localhost" . CRLF . CRLF, |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
157 %extra |
299
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
158 ); |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
159 } |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
160 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
161 ############################################################################### |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
162 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
163 sub http_daemon { |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
164 my $server = IO::Socket::INET->new( |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
165 Proto => 'tcp', |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
166 LocalAddr => '127.0.0.1:' . port(8081), |
299
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
167 Listen => 5, |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
168 Reuse => 1 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
169 ) |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
170 or die "Can't create listening socket: $!\n"; |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
171 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
172 local $SIG{PIPE} = 'IGNORE'; |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
173 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
174 while (my $client = $server->accept()) { |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
175 $client->autoflush(1); |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
176 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
177 my $headers = ''; |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
178 my $uri = ''; |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
179 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
180 while (<$client>) { |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
181 $headers .= $_; |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
182 last if (/^\x0d?\x0a?$/); |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
183 } |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
184 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
185 $uri = $1 if $headers =~ /^\S+\s+([^ ]+)\s+HTTP/i; |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
186 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
187 if ($uri eq '/length') { |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
188 print $client |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
189 "HTTP/1.1 200 OK" . CRLF . |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
190 "Content-Length: 100" . CRLF . |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
191 "Cache-Control: max-age=300" . CRLF . |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
192 "Connection: close" . CRLF . |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
193 CRLF . |
307
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
194 "unfinished" . CRLF; |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
195 |
589
a9569f57da98
Tests: whitespaces fix.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
574
diff
changeset
|
196 } elsif ($uri eq '/length/ok') { |
307
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
197 print $client |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
198 "HTTP/1.1 200 OK" . CRLF . |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
199 "Content-Length: 10" . CRLF . |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
200 "Cache-Control: max-age=300" . CRLF . |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
201 "Connection: close" . CRLF . |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
202 CRLF . |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
203 "finished" . CRLF; |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
204 |
589
a9569f57da98
Tests: whitespaces fix.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
574
diff
changeset
|
205 } elsif ($uri eq '/big') { |
307
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
206 print $client |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
207 "HTTP/1.1 200 OK" . CRLF . |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
208 "Content-Length: 1000100" . CRLF . |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
209 "Cache-Control: max-age=300" . CRLF . |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
210 "Connection: close" . CRLF . |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
211 CRLF; |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
212 for (1 .. 10000) { |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
213 print $client ("X" x 98) . CRLF; |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
214 } |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
215 print $client "unfinished" . CRLF; |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
216 |
589
a9569f57da98
Tests: whitespaces fix.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
574
diff
changeset
|
217 } elsif ($uri eq '/big/ok') { |
307
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
218 print $client |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
219 "HTTP/1.1 200 OK" . CRLF . |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
220 "Content-Length: 1000010" . CRLF . |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
221 "Cache-Control: max-age=300" . CRLF . |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
222 "Connection: close" . CRLF . |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
223 CRLF; |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
224 for (1 .. 10000) { |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
225 print $client ("X" x 98) . CRLF; |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
226 } |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
227 print $client "finished" . CRLF; |
299
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
228 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
229 } elsif ($uri eq '/chunked') { |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
230 print $client |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
231 "HTTP/1.1 200 OK" . CRLF . |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
232 "Transfer-Encoding: chunked" . CRLF . |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
233 "Cache-Control: max-age=300" . CRLF . |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
234 "Connection: close" . CRLF . |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
235 CRLF . |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
236 "ff" . CRLF . |
307
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
237 "unfinished" . CRLF; |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
238 |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
239 } elsif ($uri eq '/chunked/ok') { |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
240 print $client |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
241 "HTTP/1.1 200 OK" . CRLF . |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
242 "Transfer-Encoding: chunked" . CRLF . |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
243 "Cache-Control: max-age=300" . CRLF . |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
244 "Connection: close" . CRLF . |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
245 CRLF . |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
246 "a" . CRLF . |
81c98592661f
Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
299
diff
changeset
|
247 "finished" . CRLF . |
589
a9569f57da98
Tests: whitespaces fix.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
574
diff
changeset
|
248 CRLF . "0" . CRLF . CRLF; |
299
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
249 } |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
250 } |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
251 } |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
252 |
44c42894fdfd
Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
253 ############################################################################### |