Mercurial > hg > nginx-tests
annotate proxy-cache.t @ 144:6e11354cae8a
Tests: rework stopping to make "open socket left" alerts visible.
Use SIGQUIT to stop nginx to make sure relevant checks are executed. Use
separate functions to stop nginx and daemons to make it possible to stop
nginx before daemons.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Wed, 15 Dec 2010 19:22:39 +0300 |
parents | 3f246a1be2b0 |
children | 2ea7cd95ff05 |
rev | line source |
---|---|
74
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 # Tests for http proxy cache. |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 ############################################################################### |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 use warnings; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 use strict; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 |
104
8bc9de6559a1
Tests: add gzip module checks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
101
diff
changeset
|
12 use Test::More; |
74
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 BEGIN { use FindBin; chdir($FindBin::Bin); } |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
15 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
16 use lib 'lib'; |
101
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
17 use Test::Nginx qw/ :DEFAULT :gzip /; |
74
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 ############################################################################### |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 select STDERR; $| = 1; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 select STDOUT; $| = 1; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 |
140
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
24 my $t = Test::Nginx->new()->has(qw/http proxy cache gzip/)->plan(10) |
121
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
120
diff
changeset
|
25 ->write_file_expand('nginx.conf', <<'EOF'); |
74
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
26 |
107
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
27 %%TEST_GLOBALS%% |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
28 |
74
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
29 master_process off; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
30 daemon off; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 events { |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
33 } |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
34 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 http { |
107
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
106
diff
changeset
|
36 %%TEST_GLOBALS_HTTP%% |
74
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
38 proxy_cache_path %%TESTDIR%%/cache levels=1:2 |
80
14cf2658592d
Tests: add more proxy_cache tests, remove obsolete clean_time.
Maxim Dounin <mdounin@mdounin.ru>
parents:
74
diff
changeset
|
39 keys_zone=NAME:10m; |
74
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
40 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
41 server { |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
42 listen 127.0.0.1:8080; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
43 server_name localhost; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
44 |
101
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
45 gzip on; |
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
46 gzip_min_length 0; |
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
47 |
74
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
48 location / { |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
49 proxy_pass http://127.0.0.1:8081; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
50 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
51 proxy_cache NAME; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
52 |
101
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
53 proxy_cache_valid 200 302 1s; |
74
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
54 proxy_cache_valid 301 1d; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
55 proxy_cache_valid any 1m; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
56 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
57 proxy_cache_min_uses 1; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
58 |
101
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
59 proxy_cache_use_stale error timeout invalid_header http_500 |
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
60 http_404; |
74
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
61 } |
140
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
62 |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
63 location /fake/ { |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
64 proxy_pass http://127.0.0.1:8082; |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
65 proxy_cache NAME; |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
66 } |
74
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
67 } |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
68 server { |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
69 listen 127.0.0.1:8081; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
70 server_name localhost; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
71 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
72 location / { |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
73 } |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
74 } |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
75 } |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
76 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
77 EOF |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
78 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
79 $t->write_file('t.html', 'SEE-THIS'); |
80
14cf2658592d
Tests: add more proxy_cache tests, remove obsolete clean_time.
Maxim Dounin <mdounin@mdounin.ru>
parents:
74
diff
changeset
|
80 $t->write_file('t2.html', 'SEE-THIS'); |
99
f92852da34aa
Tests: add test for empty cached response.
Maxim Dounin <mdounin@mdounin.ru>
parents:
80
diff
changeset
|
81 $t->write_file('empty.html', ''); |
140
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
82 $t->run_daemon(\&http_fake_daemon); |
74
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
83 $t->run(); |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
84 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
85 ############################################################################### |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
86 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
87 like(http_get('/t.html'), qr/SEE-THIS/, 'proxy request'); |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
88 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
89 $t->write_file('t.html', 'NOOP'); |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
90 like(http_get('/t.html'), qr/SEE-THIS/, 'proxy request cached'); |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
91 |
80
14cf2658592d
Tests: add more proxy_cache tests, remove obsolete clean_time.
Maxim Dounin <mdounin@mdounin.ru>
parents:
74
diff
changeset
|
92 unlike(http_head('/t2.html'), qr/SEE-THIS/, 'head request'); |
14cf2658592d
Tests: add more proxy_cache tests, remove obsolete clean_time.
Maxim Dounin <mdounin@mdounin.ru>
parents:
74
diff
changeset
|
93 like(http_get('/t2.html'), qr/SEE-THIS/, 'get after head'); |
14cf2658592d
Tests: add more proxy_cache tests, remove obsolete clean_time.
Maxim Dounin <mdounin@mdounin.ru>
parents:
74
diff
changeset
|
94 unlike(http_head('/t2.html'), qr/SEE-THIS/, 'head after get'); |
14cf2658592d
Tests: add more proxy_cache tests, remove obsolete clean_time.
Maxim Dounin <mdounin@mdounin.ru>
parents:
74
diff
changeset
|
95 |
99
f92852da34aa
Tests: add test for empty cached response.
Maxim Dounin <mdounin@mdounin.ru>
parents:
80
diff
changeset
|
96 like(http_get('/empty.html'), qr/HTTP/, 'empty get first'); |
120
598b758c68a9
Tests: empty cached responses partially fixed in 0.8.31.
Maxim Dounin <mdounin@mdounin.ru>
parents:
107
diff
changeset
|
97 like(http_get('/empty.html'), qr/HTTP/, 'empty get second'); |
598b758c68a9
Tests: empty cached responses partially fixed in 0.8.31.
Maxim Dounin <mdounin@mdounin.ru>
parents:
107
diff
changeset
|
98 |
99
f92852da34aa
Tests: add test for empty cached response.
Maxim Dounin <mdounin@mdounin.ru>
parents:
80
diff
changeset
|
99 { |
f92852da34aa
Tests: add test for empty cached response.
Maxim Dounin <mdounin@mdounin.ru>
parents:
80
diff
changeset
|
100 local $TODO = 'not fixed yet'; |
101
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
101 |
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
102 sleep(2); |
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
103 unlink $t->testdir() . '/t.html'; |
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
104 like(http_gzip_request('/t.html'), |
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
105 qr/HTTP.*1c\x0d\x0a.{28}\x0d\x0a0\x0d\x0a\x0d\x0a\z/s, |
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
106 'non-empty get stale'); |
99
f92852da34aa
Tests: add test for empty cached response.
Maxim Dounin <mdounin@mdounin.ru>
parents:
80
diff
changeset
|
107 } |
f92852da34aa
Tests: add test for empty cached response.
Maxim Dounin <mdounin@mdounin.ru>
parents:
80
diff
changeset
|
108 |
120
598b758c68a9
Tests: empty cached responses partially fixed in 0.8.31.
Maxim Dounin <mdounin@mdounin.ru>
parents:
107
diff
changeset
|
109 { |
598b758c68a9
Tests: empty cached responses partially fixed in 0.8.31.
Maxim Dounin <mdounin@mdounin.ru>
parents:
107
diff
changeset
|
110 local $TODO = 'broken in 0.8.31'; |
598b758c68a9
Tests: empty cached responses partially fixed in 0.8.31.
Maxim Dounin <mdounin@mdounin.ru>
parents:
107
diff
changeset
|
111 |
101
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
112 unlink $t->testdir() . '/empty.html'; |
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
113 like(http_gzip_request('/empty.html'), |
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
114 qr/HTTP.*14\x0d\x0a.{20}\x0d\x0a0\x0d\x0a\x0d\x0a\z/s, |
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
115 'empty get stale'); |
120
598b758c68a9
Tests: empty cached responses partially fixed in 0.8.31.
Maxim Dounin <mdounin@mdounin.ru>
parents:
107
diff
changeset
|
116 } |
101
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
117 |
140
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
118 { |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
119 local $TODO = 'patch pending'; |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
120 |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
121 http_get('/fake/unfinished'); |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
122 like(http_get('/fake/unfinished'), qr/unfinished 2/, 'unfinished not cached'); |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
123 } |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
124 |
74
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
125 ############################################################################### |
140
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
126 |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
127 sub http_fake_daemon { |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
128 my $server = IO::Socket::INET->new( |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
129 Proto => 'tcp', |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
130 LocalAddr => '127.0.0.1:8082', |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
131 Listen => 5, |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
132 Reuse => 1 |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
133 ) |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
134 or die "Can't create listening socket: $!\n"; |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
135 |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
136 my $num = 0; |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
137 |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
138 while (my $client = $server->accept()) { |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
139 $client->autoflush(1); |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
140 |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
141 while (<$client>) { |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
142 last if (/^\x0d?\x0a?$/); |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
143 } |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
144 |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
145 $num++; |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
146 print $client <<"EOF"; |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
147 HTTP/1.1 200 OK |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
148 Content-Length: 100 |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
149 Cache-Control: max-age=300 |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
150 Connection: close |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
151 |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
152 unfinished $num |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
153 EOF |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
154 } |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
155 } |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
156 |
3f246a1be2b0
Tests: unfinished responses shouldn't be cached.
Maxim Dounin <mdounin@mdounin.ru>
parents:
121
diff
changeset
|
157 ############################################################################### |