Mercurial > hg > nginx-tests
annotate proxy_cache_range.t @ 386:1b205a3332de
Tests: adjusted limit_req rate value.
This shortens excessive test execution time due to unnecessarily delayed
backend connection after client connection close, which is usually observed
when the client connection is closed before the request is proxied to backend.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Wed, 26 Mar 2014 22:50:22 +0400 |
parents | 30364c578416 |
children | 847ea345becb |
rev | line source |
---|---|
371
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 # Tests for http proxy cache and range filter. |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 ############################################################################### |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 use warnings; |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 use strict; |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
12 use Test::More; |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 BEGIN { use FindBin; chdir($FindBin::Bin); } |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
15 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
16 use lib 'lib'; |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
17 use Test::Nginx; |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 ############################################################################### |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 select STDERR; $| = 1; |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 select STDOUT; $| = 1; |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
24 plan(skip_all => 'win32') if $^O eq 'MSWin32'; |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
25 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
26 my $t = Test::Nginx->new()->has(qw/http proxy cache/)->plan(5) |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
27 ->write_file_expand('nginx.conf', <<'EOF'); |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
28 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
29 %%TEST_GLOBALS%% |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
30 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 daemon off; |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
33 events { |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
34 } |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
36 http { |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 %%TEST_GLOBALS_HTTP%% |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
38 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
39 proxy_cache_path %%TESTDIR%%/cache levels=1:2 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
40 keys_zone=NAME:1m; |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
41 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
42 server { |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
43 listen 127.0.0.1:8080; |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
44 server_name localhost; |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
45 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
46 location / { |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
47 proxy_pass http://127.0.0.1:8081; |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
48 proxy_cache NAME; |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
49 proxy_cache_valid 200 1m; |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
50 } |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
51 } |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
52 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
53 server { |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
54 listen 127.0.0.1:8081; |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
55 server_name localhost; |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
56 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
57 location / { |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
58 } |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
59 } |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
60 } |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
61 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
62 EOF |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
63 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
64 $t->write_file('t.html', 'SEE-THIS'); |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
65 $t->run(); |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
66 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
67 ############################################################################### |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
68 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
69 { |
382
30364c578416
Tests: adjusted TODO for single range not-yet-cached requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
372
diff
changeset
|
70 local $TODO = 'not yet' unless $t->has_version('1.5.13'); |
371
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
71 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
72 like(http_get_range('/t.html?1', 'Range: bytes=4-'), qr/^THIS/m, |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
73 'range on first request'); |
382
30364c578416
Tests: adjusted TODO for single range not-yet-cached requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
372
diff
changeset
|
74 } |
30364c578416
Tests: adjusted TODO for single range not-yet-cached requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
372
diff
changeset
|
75 |
30364c578416
Tests: adjusted TODO for single range not-yet-cached requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
372
diff
changeset
|
76 { |
30364c578416
Tests: adjusted TODO for single range not-yet-cached requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
372
diff
changeset
|
77 local $TODO = 'not yet'; |
30364c578416
Tests: adjusted TODO for single range not-yet-cached requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
372
diff
changeset
|
78 |
371
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
79 like(http_get_range('/t.html?2', 'Range: bytes=0-2,4-'), qr/^SEE.*^THIS/ms, |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
80 'multipart range on first request'); |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
81 } |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
82 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
83 like(http_get_range('/t.html?1', 'Range: bytes=4-'), qr/^THIS/m, |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
84 'cached range'); |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
85 like(http_get_range('/t.html?1', 'Range: bytes=0-2,4-'), qr/^SEE.*^THIS/ms, |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
86 'cached multipart range'); |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
87 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
88 like(`grep -F '[alert]' ${\($t->testdir())}/error.log`, qr/^$/s, 'no alerts'); |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
89 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
90 ############################################################################### |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
91 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
92 sub http_get_range { |
372 | 93 my ($url, $extra) = @_; |
94 return http(<<EOF); | |
371
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
95 GET $url HTTP/1.1 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
96 Host: localhost |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
97 Connection: close |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
98 $extra |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
99 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
100 EOF |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
101 } |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
102 |
6fb6fea36560
Tests: proxy cache and range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
103 ############################################################################### |