Mercurial > hg > nginx-tests
annotate proxy-cache.t @ 103:4ae2198b97ec
Tests: limit_req tests for 0.8.18 changes and bug.
1. Make sure rejected requests are not counted, as leaky bucket algorithm
suggests (finally correctly done in 0.8.18).
2. Make sure negative excess values are handled properly (bug appeared in
0.8.18, fixed in 0.8.19).
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Fri, 09 Oct 2009 21:05:42 +0400 |
parents | 6303927c18d2 |
children | 8bc9de6559a1 |
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 |
101
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
12 use Test::More tests => 9; |
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 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
24 my $t = Test::Nginx->new(); |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
25 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
26 $t->write_file_expand('nginx.conf', <<'EOF'); |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
27 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
28 master_process off; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
29 daemon off; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
30 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 events { |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 } |
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 http { |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 access_log off; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
36 root %%TESTDIR%%; |
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 client_body_temp_path %%TESTDIR%%/client_body_temp; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
39 fastcgi_temp_path %%TESTDIR%%/fastcgi_temp; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
40 proxy_temp_path %%TESTDIR%%/proxy_temp; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
41 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
42 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
|
43 keys_zone=NAME:10m; |
74
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
44 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
45 server { |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
46 listen 127.0.0.1:8080; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
47 server_name localhost; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
48 |
101
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
49 gzip on; |
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
50 gzip_min_length 0; |
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
51 |
74
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
52 location / { |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
53 proxy_pass http://127.0.0.1:8081; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
54 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
55 proxy_cache NAME; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
56 |
101
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
57 proxy_cache_valid 200 302 1s; |
74
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
58 proxy_cache_valid 301 1d; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
59 proxy_cache_valid any 1m; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
60 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
61 proxy_cache_min_uses 1; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
62 |
101
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
63 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
|
64 http_404; |
74
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
65 } |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
66 } |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
67 server { |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
68 listen 127.0.0.1:8081; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
69 server_name localhost; |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
70 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
71 location / { |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
72 } |
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 EOF |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
77 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
78 $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
|
79 $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
|
80 $t->write_file('empty.html', ''); |
74
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
81 $t->run(); |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
82 |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
83 ############################################################################### |
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 like(http_get('/t.html'), qr/SEE-THIS/, 'proxy request'); |
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 $t->write_file('t.html', 'NOOP'); |
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
88 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
|
89 |
80
14cf2658592d
Tests: add more proxy_cache tests, remove obsolete clean_time.
Maxim Dounin <mdounin@mdounin.ru>
parents:
74
diff
changeset
|
90 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
|
91 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
|
92 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
|
93 |
99
f92852da34aa
Tests: add test for empty cached response.
Maxim Dounin <mdounin@mdounin.ru>
parents:
80
diff
changeset
|
94 like(http_get('/empty.html'), qr/HTTP/, 'empty get first'); |
f92852da34aa
Tests: add test for empty cached response.
Maxim Dounin <mdounin@mdounin.ru>
parents:
80
diff
changeset
|
95 { |
f92852da34aa
Tests: add test for empty cached response.
Maxim Dounin <mdounin@mdounin.ru>
parents:
80
diff
changeset
|
96 local $TODO = 'not fixed yet'; |
f92852da34aa
Tests: add test for empty cached response.
Maxim Dounin <mdounin@mdounin.ru>
parents:
80
diff
changeset
|
97 like(http_get('/empty.html'), qr/HTTP/, 'empty get second'); |
101
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
98 |
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
99 sleep(2); |
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
100 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
|
101 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
|
102 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
|
103 'non-empty get stale'); |
99
f92852da34aa
Tests: add test for empty cached response.
Maxim Dounin <mdounin@mdounin.ru>
parents:
80
diff
changeset
|
104 } |
f92852da34aa
Tests: add test for empty cached response.
Maxim Dounin <mdounin@mdounin.ru>
parents:
80
diff
changeset
|
105 |
101
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
106 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
|
107 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
|
108 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
|
109 'empty get stale'); |
6303927c18d2
Tests: proxy cache tests for problems with duplicate final chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
99
diff
changeset
|
110 |
74
3afbba94c8eb
Tests: basic proxy_cache tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
111 ############################################################################### |