annotate proxy_unfinished.t @ 589:a9569f57da98

Tests: whitespaces fix.
author Andrey Zelenkov <zelenkov@nginx.com>
date Mon, 25 May 2015 18:42:34 +0300
parents 2cd00179f4b2
children 153969b53780
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
574
2cd00179f4b2 Tests: has_feature() introduced in Test::Nginx.
Sergey Kandaurov <pluknet@nginx.com>
parents: 397
diff changeset
34 my $t = Test::Nginx->new()->has(qw/http proxy cache sub shmem/)->plan(15)
299
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 ->write_file_expand('nginx.conf', <<'EOF');
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37 %%TEST_GLOBALS%%
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 daemon off;
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41 events {
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42 }
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 http {
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45 %%TEST_GLOBALS_HTTP%%
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 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
48 keys_zone=one:1m;
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50 server {
391
915ef26ac6eb Tests: fix proxy_unfinished.t failures with big buffers.
Maxim Dounin <mdounin@mdounin.ru>
parents: 343
diff changeset
51 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
52 server_name localhost;
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54 location / {
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55 sub_filter foo bar;
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56 sub_filter_types *;
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57 proxy_pass http://127.0.0.1:8081;
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58 }
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59
307
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
60 location /un/ {
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
61 sub_filter foo bar;
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
62 sub_filter_types *;
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
63 proxy_pass http://127.0.0.1:8081/;
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
64 proxy_buffering off;
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
65 }
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
66
299
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67 location /cache/ {
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68 proxy_pass http://127.0.0.1:8081/;
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69 proxy_cache one;
307
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
70 add_header X-Cache-Status $upstream_cache_status;
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
71 }
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 location /proxy/ {
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
74 sub_filter foo bar;
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
75 sub_filter_types *;
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
76 proxy_pass http://127.0.0.1:8080/local/;
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
77 proxy_buffer_size 1k;
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
78 proxy_buffers 4 1k;
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
79 }
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 location /local/ {
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
82 alias %%TESTDIR%%/;
299
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
83 }
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 EOF
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88
307
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
89 $t->write_file('big.html', 'X' x (1024 * 1024) . 'finished');
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
90
299
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
91 $t->run_daemon(\&http_daemon);
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92 $t->run()->waitforsocket('127.0.0.1:8081');
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
93
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
307
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
96 http_get('/cache/length');
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
97 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
98
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
99 # 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
100 # much like with Content-Length available
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
101
307
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
102 http_get('/cache/chunked');
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
103 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
104
307
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
105 # 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
106
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
107 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
108 'length no final chunk');
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
109 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
110 'chunked no final chunk');
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
111
307
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
112 # but there is final chunk in complete responses
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
113
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
114 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
115 'length final chunk');
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
116 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
117 'chunked final chunk');
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
118
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
119 # the same with proxy_buffering set to off
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
120
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
121 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
122 'unbuffered length no final chunk');
307
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
123 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
124 'unbuffered chunked no final chunk');
307
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
125
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
126 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
127 'unbuffered length final chunk');
307
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
128 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
129 'unbuffered chunked final chunk');
307
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
130
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
131 # big responses
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
132
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
133 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
134 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
135 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
136 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
137
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
138 # if disk buffering fails for some reason, there should be
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
139 # no final chunk
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
140
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
141 chmod(0000, $t->testdir() . '/proxy_temp');
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
142 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
143 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
144
299
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
145 ###############################################################################
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
146
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
147 sub http_get_11 {
307
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
148 my ($uri, %extra) = @_;
299
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 return http(
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
151 "GET $uri HTTP/1.1" . CRLF .
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
152 "Connection: close" . CRLF .
307
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
153 "Host: localhost" . CRLF . CRLF,
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
154 %extra
299
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
155 );
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
156 }
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
157
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 sub http_daemon {
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
161 my $server = IO::Socket::INET->new(
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
162 Proto => 'tcp',
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
163 LocalAddr => '127.0.0.1:8081',
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
164 Listen => 5,
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
165 Reuse => 1
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
166 )
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
167 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
168
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
169 local $SIG{PIPE} = 'IGNORE';
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
170
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
171 while (my $client = $server->accept()) {
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
172 $client->autoflush(1);
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 my $headers = '';
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
175 my $uri = '';
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 while (<$client>) {
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
178 $headers .= $_;
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
179 last if (/^\x0d?\x0a?$/);
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
180 }
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
181
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
182 $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
183
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
184 if ($uri eq '/length') {
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
185 print $client
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
186 "HTTP/1.1 200 OK" . CRLF .
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
187 "Content-Length: 100" . CRLF .
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
188 "Cache-Control: max-age=300" . CRLF .
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
189 "Connection: close" . CRLF .
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
190 CRLF .
307
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
191 "unfinished" . CRLF;
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
192
589
a9569f57da98 Tests: whitespaces fix.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 574
diff changeset
193 } elsif ($uri eq '/length/ok') {
307
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
194 print $client
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
195 "HTTP/1.1 200 OK" . CRLF .
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
196 "Content-Length: 10" . CRLF .
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
197 "Cache-Control: max-age=300" . CRLF .
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
198 "Connection: close" . CRLF .
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
199 CRLF .
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
200 "finished" . CRLF;
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
201
589
a9569f57da98 Tests: whitespaces fix.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 574
diff changeset
202 } elsif ($uri eq '/big') {
307
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
203 print $client
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
204 "HTTP/1.1 200 OK" . CRLF .
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
205 "Content-Length: 1000100" . CRLF .
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
206 "Cache-Control: max-age=300" . CRLF .
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
207 "Connection: close" . CRLF .
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
208 CRLF;
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
209 for (1 .. 10000) {
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
210 print $client ("X" x 98) . CRLF;
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
211 }
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
212 print $client "unfinished" . CRLF;
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
213
589
a9569f57da98 Tests: whitespaces fix.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 574
diff changeset
214 } elsif ($uri eq '/big/ok') {
307
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
215 print $client
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
216 "HTTP/1.1 200 OK" . CRLF .
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
217 "Content-Length: 1000010" . CRLF .
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
218 "Cache-Control: max-age=300" . CRLF .
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
219 "Connection: close" . CRLF .
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
220 CRLF;
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
221 for (1 .. 10000) {
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
222 print $client ("X" x 98) . CRLF;
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
223 }
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
224 print $client "finished" . CRLF;
299
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
225
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
226 } elsif ($uri eq '/chunked') {
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
227 print $client
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
228 "HTTP/1.1 200 OK" . CRLF .
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
229 "Transfer-Encoding: chunked" . CRLF .
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
230 "Cache-Control: max-age=300" . CRLF .
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
231 "Connection: close" . CRLF .
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
232 CRLF .
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
233 "ff" . CRLF .
307
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
234 "unfinished" . CRLF;
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
235
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
236 } elsif ($uri eq '/chunked/ok') {
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
237 print $client
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
238 "HTTP/1.1 200 OK" . CRLF .
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
239 "Transfer-Encoding: chunked" . CRLF .
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
240 "Cache-Control: max-age=300" . CRLF .
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
241 "Connection: close" . CRLF .
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
242 CRLF .
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
243 "a" . CRLF .
81c98592661f Tests: more unfinished tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 299
diff changeset
244 "finished" . CRLF .
589
a9569f57da98 Tests: whitespaces fix.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 574
diff changeset
245 CRLF . "0" . CRLF . CRLF;
299
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
246 }
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
247 }
44c42894fdfd Tests: move unfinished tests to a separate file.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
248 }
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 ###############################################################################