comparison slice.t @ 1129:1173800a4a19

Tests: added slice filter tests in named location. Prodded by Mindaugas Rasiukevicius.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 14 Feb 2017 13:04:38 +0300
parents 196d33c2bb45
children 0c15ba7d19b3
comparison
equal deleted inserted replaced
1128:bef8be8a6224 1129:1173800a4a19
13 use Test::More; 13 use Test::More;
14 14
15 BEGIN { use FindBin; chdir($FindBin::Bin); } 15 BEGIN { use FindBin; chdir($FindBin::Bin); }
16 16
17 use lib 'lib'; 17 use lib 'lib';
18 use Test::Nginx; 18 use Test::Nginx qw/ :DEFAULT http_end /;
19 19
20 ############################################################################### 20 ###############################################################################
21 21
22 select STDERR; $| = 1; 22 select STDERR; $| = 1;
23 select STDOUT; $| = 1; 23 select STDOUT; $| = 1;
24 24
25 my $t = Test::Nginx->new()->has(qw/http proxy cache fastcgi slice/) 25 my $t = Test::Nginx->new()->has(qw/http proxy cache fastcgi slice rewrite/)
26 ->plan(72); 26 ->plan(74);
27 27
28 $t->write_file_expand('nginx.conf', <<'EOF'); 28 $t->write_file_expand('nginx.conf', <<'EOF');
29 29
30 %%TEST_GLOBALS%% 30 %%TEST_GLOBALS%%
31 31
36 36
37 http { 37 http {
38 %%TEST_GLOBALS_HTTP%% 38 %%TEST_GLOBALS_HTTP%%
39 39
40 proxy_cache_path %%TESTDIR%%/cache keys_zone=NAME:1m; 40 proxy_cache_path %%TESTDIR%%/cache keys_zone=NAME:1m;
41 proxy_cache_path %%TESTDIR%%/cach3 keys_zone=NAME3:1m;
41 proxy_cache_key $uri$is_args$args$slice_range; 42 proxy_cache_key $uri$is_args$args$slice_range;
42 43
43 fastcgi_cache_path %%TESTDIR%%/cache2 keys_zone=NAME2:1m; 44 fastcgi_cache_path %%TESTDIR%%/cache2 keys_zone=NAME2:1m;
44 fastcgi_cache_key $uri$is_args$args$slice_range; 45 fastcgi_cache_key $uri$is_args$args$slice_range;
45 46
76 77
77 fastcgi_force_ranges on; 78 fastcgi_force_ranges on;
78 79
79 add_header X-Cache-Status $upstream_cache_status; 80 add_header X-Cache-Status $upstream_cache_status;
80 } 81 }
82
83 location /cache-redirect {
84 error_page 404 = @fallback;
85 }
86
87 location @fallback {
88 slice 2;
89
90 proxy_pass http://127.0.0.1:8081/t$is_args$args;
91
92 proxy_cache NAME3;
93
94 proxy_set_header Range $slice_range;
95
96 proxy_cache_valid 200 206 1h;
97 }
81 } 98 }
82 99
83 server { 100 server {
84 listen 127.0.0.1:8081; 101 listen 127.0.0.1:8081;
85 server_name localhost; 102 server_name localhost;
86 103
87 location / { } 104 location / {
105 if ($http_range = "") {
106 set $limit_rate 100;
107 }
108 }
88 } 109 }
89 } 110 }
90 111
91 EOF 112 EOF
92 113
238 'fastcgi slice'); 259 'fastcgi slice');
239 like(get("/fastcgi?1", "Range: bytes=1-1"), qr/ 206 .*HIT.*^1$/ms, 260 like(get("/fastcgi?1", "Range: bytes=1-1"), qr/ 206 .*HIT.*^1$/ms,
240 'fastcgi slice cached'); 261 'fastcgi slice cached');
241 like(get("/fastcgi?1", "Range: bytes=2-2"), qr/ 206 .*MISS.*^2$/ms, 262 like(get("/fastcgi?1", "Range: bytes=2-2"), qr/ 206 .*MISS.*^2$/ms,
242 'fastcgi slice next'); 263 'fastcgi slice next');
264 }
265
266 # slicing in named location
267
268 my $s = http_get('/cache-redirect', start => 1);
269 # loop protection used with limit_rate, exit loop if subrequest has lost range
270 unless ($t->has_version('1.11.10')) {
271 select undef, undef, undef, 0.2;
272 $t->write_file('/cache-redirect', '');
273 }
274 $r = http_end($s);
275
276 TODO: {
277 local $TODO = 'not yet' unless $t->has_version('1.11.10');
278
279 like($r, qr/ 200 .*^0123456789abcdef$/ms, 'in named location');
280 is(scalar @{[ glob $t->testdir() . '/cach3/*' ]}, 8,
281 'in named location - cache entries');
282
243 } 283 }
244 284
245 ############################################################################### 285 ###############################################################################
246 286
247 sub get { 287 sub get {