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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 ###############################################################################