Mercurial > hg > nginx-tests
annotate proxy-store.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 | 1d3c82227a05 |
children | 1c0ec30614c6 |
rev | line source |
---|---|
46
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 # Tests for proxy_store functionality. |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 ############################################################################### |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 use warnings; |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 use strict; |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 |
90
1d3c82227a05
Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
89
diff
changeset
|
12 use Test::More tests => 7; |
46
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 BEGIN { use FindBin; chdir($FindBin::Bin); } |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
15 |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
16 use lib 'lib'; |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
17 use Test::Nginx; |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 ############################################################################### |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 select STDERR; $| = 1; |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 select STDOUT; $| = 1; |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
24 my $t = Test::Nginx->new(); |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
25 |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
26 $t->write_file_expand('nginx.conf', <<'EOF'); |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
27 |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
28 master_process off; |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
29 daemon off; |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
30 |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 events { |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 } |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
33 |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
34 http { |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 access_log off; |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
36 root %%TESTDIR%%; |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
38 client_body_temp_path %%TESTDIR%%/client_body_temp; |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
39 fastcgi_temp_path %%TESTDIR%%/fastcgi_temp; |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
40 proxy_temp_path %%TESTDIR%%/proxy_temp; |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
41 |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
42 server { |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
43 listen 127.0.0.1:8080; |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
44 server_name localhost; |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
45 |
89
abbe4b123795
Tests: simplify proxy-store tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
88
diff
changeset
|
46 location /store- { |
abbe4b123795
Tests: simplify proxy-store tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
88
diff
changeset
|
47 proxy_pass http://127.0.0.1:8080/; |
87
f2d09159a8f3
Tests: proxy_store leaving temporary files bug test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
64
diff
changeset
|
48 proxy_store on; |
f2d09159a8f3
Tests: proxy_store leaving temporary files bug test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
64
diff
changeset
|
49 } |
90
1d3c82227a05
Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
89
diff
changeset
|
50 location /ssi.html { |
1d3c82227a05
Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
89
diff
changeset
|
51 ssi on; |
1d3c82227a05
Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
89
diff
changeset
|
52 } |
47
bb6d65d833cd
Tests: test for X-Accel-Expires switching off proxy_store.
Maxim Dounin <mdounin@mdounin.ru>
parents:
46
diff
changeset
|
53 location /index-nostore.html { |
bb6d65d833cd
Tests: test for X-Accel-Expires switching off proxy_store.
Maxim Dounin <mdounin@mdounin.ru>
parents:
46
diff
changeset
|
54 add_header X-Accel-Expires 0; |
bb6d65d833cd
Tests: test for X-Accel-Expires switching off proxy_store.
Maxim Dounin <mdounin@mdounin.ru>
parents:
46
diff
changeset
|
55 } |
87
f2d09159a8f3
Tests: proxy_store leaving temporary files bug test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
64
diff
changeset
|
56 location /index-big.html { |
f2d09159a8f3
Tests: proxy_store leaving temporary files bug test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
64
diff
changeset
|
57 limit_rate 200k; |
f2d09159a8f3
Tests: proxy_store leaving temporary files bug test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
64
diff
changeset
|
58 } |
46
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
59 } |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
60 } |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
61 |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
62 EOF |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
63 |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
64 $t->write_file('index.html', 'SEE-THIS'); |
47
bb6d65d833cd
Tests: test for X-Accel-Expires switching off proxy_store.
Maxim Dounin <mdounin@mdounin.ru>
parents:
46
diff
changeset
|
65 $t->write_file('index-nostore.html', 'SEE-THIS'); |
87
f2d09159a8f3
Tests: proxy_store leaving temporary files bug test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
64
diff
changeset
|
66 $t->write_file('index-big.html', 'x' x (100 << 10)); |
90
1d3c82227a05
Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
89
diff
changeset
|
67 $t->write_file('ssi.html', |
1d3c82227a05
Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
89
diff
changeset
|
68 '<!--#include virtual="/store-index-big.html?1" -->' . |
1d3c82227a05
Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
89
diff
changeset
|
69 '<!--#include virtual="/store-index-big.html?2" -->' |
1d3c82227a05
Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
89
diff
changeset
|
70 ); |
46
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
71 $t->run(); |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
72 |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
73 ############################################################################### |
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
74 |
89
abbe4b123795
Tests: simplify proxy-store tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
88
diff
changeset
|
75 like(http_get('/store-index.html'), qr/SEE-THIS/, 'proxy request'); |
abbe4b123795
Tests: simplify proxy-store tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
88
diff
changeset
|
76 ok(-e $t->testdir() . '/store-index.html', 'result stored'); |
46
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
77 |
89
abbe4b123795
Tests: simplify proxy-store tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
88
diff
changeset
|
78 like(http_get('/store-index-nostore.html'), qr/SEE-THIS/, |
abbe4b123795
Tests: simplify proxy-store tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
88
diff
changeset
|
79 'proxy request with x-accel-expires'); |
47
bb6d65d833cd
Tests: test for X-Accel-Expires switching off proxy_store.
Maxim Dounin <mdounin@mdounin.ru>
parents:
46
diff
changeset
|
80 |
bb6d65d833cd
Tests: test for X-Accel-Expires switching off proxy_store.
Maxim Dounin <mdounin@mdounin.ru>
parents:
46
diff
changeset
|
81 TODO: { |
bb6d65d833cd
Tests: test for X-Accel-Expires switching off proxy_store.
Maxim Dounin <mdounin@mdounin.ru>
parents:
46
diff
changeset
|
82 local $TODO = 'patch under review'; |
bb6d65d833cd
Tests: test for X-Accel-Expires switching off proxy_store.
Maxim Dounin <mdounin@mdounin.ru>
parents:
46
diff
changeset
|
83 |
89
abbe4b123795
Tests: simplify proxy-store tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
88
diff
changeset
|
84 ok(!-e $t->testdir() . '/store-index-nostore.html', 'result not stored'); |
47
bb6d65d833cd
Tests: test for X-Accel-Expires switching off proxy_store.
Maxim Dounin <mdounin@mdounin.ru>
parents:
46
diff
changeset
|
85 } |
bb6d65d833cd
Tests: test for X-Accel-Expires switching off proxy_store.
Maxim Dounin <mdounin@mdounin.ru>
parents:
46
diff
changeset
|
86 |
bb6d65d833cd
Tests: test for X-Accel-Expires switching off proxy_store.
Maxim Dounin <mdounin@mdounin.ru>
parents:
46
diff
changeset
|
87 ok(scalar @{[ glob $t->testdir() . '/proxy_temp/*' ]} == 0, 'no temp files'); |
bb6d65d833cd
Tests: test for X-Accel-Expires switching off proxy_store.
Maxim Dounin <mdounin@mdounin.ru>
parents:
46
diff
changeset
|
88 |
89
abbe4b123795
Tests: simplify proxy-store tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
88
diff
changeset
|
89 http_get('/store-index-big.html', aborted => 1, sleep => 0.1); |
87
f2d09159a8f3
Tests: proxy_store leaving temporary files bug test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
64
diff
changeset
|
90 sleep(1); |
f2d09159a8f3
Tests: proxy_store leaving temporary files bug test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
64
diff
changeset
|
91 |
f2d09159a8f3
Tests: proxy_store leaving temporary files bug test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
64
diff
changeset
|
92 ok(scalar @{[ glob $t->testdir() . '/proxy_temp/*' ]} == 0, |
f2d09159a8f3
Tests: proxy_store leaving temporary files bug test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
64
diff
changeset
|
93 'no temp files after aborted request'); |
f2d09159a8f3
Tests: proxy_store leaving temporary files bug test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
64
diff
changeset
|
94 |
90
1d3c82227a05
Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
89
diff
changeset
|
95 TODO: { |
1d3c82227a05
Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
89
diff
changeset
|
96 local $TODO = 'not fixed yet'; |
1d3c82227a05
Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
89
diff
changeset
|
97 |
1d3c82227a05
Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
89
diff
changeset
|
98 http_get('/ssi.html', aborted => 1, sleep => 0.1); |
1d3c82227a05
Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
89
diff
changeset
|
99 sleep(1); |
1d3c82227a05
Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
89
diff
changeset
|
100 |
1d3c82227a05
Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
89
diff
changeset
|
101 ok(scalar @{[ glob $t->testdir() . '/proxy_temp/*' ]} == 0, |
1d3c82227a05
Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
89
diff
changeset
|
102 'no temp files after aborted ssi'); |
1d3c82227a05
Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
89
diff
changeset
|
103 |
1d3c82227a05
Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
89
diff
changeset
|
104 } |
1d3c82227a05
Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents:
89
diff
changeset
|
105 |
46
239a346b4913
Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
106 ############################################################################### |