annotate slice.t @ 1021:ebdf239722b9

Tests: relaxed proxy_cache_lock.t nolock tests to fix on Solaris. Assumed that the order of responses being arrived in nolock case may be ignored. An important part of such case is that the only last response should be cached.
author Sergey Kandaurov <pluknet@nginx.com>
date Fri, 02 Sep 2016 12:17:35 +0300
parents 196d33c2bb45
children 1173800a4a19
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
796
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
6 # Tests for slice filter.
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8 ###############################################################################
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10 use warnings;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use strict;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13 use Test::More;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
16
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17 use lib 'lib';
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20 ###############################################################################
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
21
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22 select STDERR; $| = 1;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23 select STDOUT; $| = 1;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24
1020
196d33c2bb45 Tests: removed TODO and try_run() checks for legacy versions.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1007
diff changeset
25 my $t = Test::Nginx->new()->has(qw/http proxy cache fastcgi slice/)
796
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
26 ->plan(72);
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
27
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28 $t->write_file_expand('nginx.conf', <<'EOF');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30 %%TEST_GLOBALS%%
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32 daemon off;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34 events {
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35 }
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37 http {
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38 %%TEST_GLOBALS_HTTP%%
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40 proxy_cache_path %%TESTDIR%%/cache keys_zone=NAME:1m;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
41 proxy_cache_key $uri$is_args$args$slice_range;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
42
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43 fastcgi_cache_path %%TESTDIR%%/cache2 keys_zone=NAME2:1m;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44 fastcgi_cache_key $uri$is_args$args$slice_range;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
47 listen 127.0.0.1:8080;
796
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48 server_name localhost;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50 location / { }
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52 location /cache/ {
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
53 slice 2;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
54
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
55 proxy_pass http://127.0.0.1:8081/;
796
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57 proxy_cache NAME;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
59 proxy_set_header Range $slice_range;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
60
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
61 proxy_cache_valid 200 206 1h;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
62
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
63 add_header X-Cache-Status $upstream_cache_status;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
64 }
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
65
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
66 location /fastcgi {
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
67 slice 2;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
68
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
69 fastcgi_pass 127.0.0.1:8082;
796
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
70
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
71 fastcgi_cache NAME2;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
72
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
73 fastcgi_param Range $slice_range;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
74
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
75 fastcgi_cache_valid 200 206 1h;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
77 fastcgi_force_ranges on;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
78
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
79 add_header X-Cache-Status $upstream_cache_status;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
80 }
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
81 }
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
82
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
84 listen 127.0.0.1:8081;
796
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
85 server_name localhost;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
86
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
87 location / { }
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
88 }
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
89 }
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
90
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
91 EOF
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
92
1007
174e900c00dc Tests: adjusted slice.t to test with various range header lengths.
Sergey Kandaurov <pluknet@nginx.com>
parents: 974
diff changeset
93 $t->write_file('t', '0123456789abcdef');
796
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
94 $t->run();
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
95
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
96 ###############################################################################
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
97
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
98 my $r;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
99
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
100 like(http_get('/cache/nx'), qr/ 404 /, 'not found');
1007
174e900c00dc Tests: adjusted slice.t to test with various range header lengths.
Sergey Kandaurov <pluknet@nginx.com>
parents: 974
diff changeset
101 like(http_get('/cache/t'), qr/ 200 .*0123456789abcdef$/ms, 'no range');
796
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
102
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
103 $r = get('/cache/t?single', "Range: bytes=0-0");
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
104 like($r, qr/ 206 /, 'single - 206 partial reply');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
105 like($r, qr/^0$/m, 'single - correct content');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
106 like($r, qr/Status: MISS/m, 'single - cache status');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
107
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
108 $r = get('/cache/t?single', "Range: bytes=0-0");
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
109 like($r, qr/ 206 /, 'single cached - 206 partial reply');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
110 like($r, qr/^0$/m, 'single cached - correct content');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
111 like($r, qr/Status: HIT/m, 'single cached - cache status');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
112
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
113 $r = get('/cache/t?single', "Range: bytes=1-1");
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
114 like($r, qr/ 206 /, 'single next - 206 partial reply');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
115 like($r, qr/^1$/m, 'single next - correct content');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
116 like($r, qr/Status: HIT/m, 'single next - cache status');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
117
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
118 $r = get('/cache/t?single', "Range: bytes=2-2");
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
119 like($r, qr/ 206 /, 'slice next - 206 partial reply');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
120 like($r, qr/^2$/m, 'slice next - correct content');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
121 like($r, qr/Status: MISS/m, 'slice next - cache status');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
122
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
123 $r = get('/cache/t?single', "Range: bytes=2-2");
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
124 like($r, qr/ 206 /, 'slice next cached - 206 partial reply');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
125 like($r, qr/^2$/m, 'slice next cached - correct content');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
126 like($r, qr/Status: HIT/m, 'slice next cached - cache status');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
127
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
128 $r = get('/cache/t?median', "Range: bytes=2-2");
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
129 like($r, qr/ 206 /, 'slice median - 206 partial reply');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
130 like($r, qr/^2$/m, 'slice median - correct content');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
131 like($r, qr/Status: MISS/m, 'slice median - cache status');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
132
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
133 $r = get('/cache/t?median', "Range: bytes=0-0");
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
134 like($r, qr/ 206 /, 'before median - 206 partial reply');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
135 like($r, qr/^0$/m, 'before median - correct content');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
136 like($r, qr/Status: MISS/m, 'before median - cache status');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
137
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
138 # range span to multiple slices
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
139
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
140 $r = get('/cache/t?range', "Range: bytes=1-2");
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
141 like($r, qr/ 206 /, 'slice range - 206 partial reply');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
142 like($r, qr/^12$/m, 'slice range - correct content');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
143 like($r, qr/Status: MISS/m, 'slice range - cache status');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
144
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
145 $r = get('/cache/t?range', "Range: bytes=0-0");
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
146 like($r, qr/ 206 /, 'slice 1st - 206 partial reply');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
147 like($r, qr/^0$/m, 'slice 1st - correct content');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
148 like($r, qr/Status: HIT/m, 'slice 1st - cache status');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
149
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
150 $r = get('/cache/t?range', "Range: bytes=2-2");
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
151 like($r, qr/ 206 /, 'slice 2nd - 206 partial reply');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
152 like($r, qr/^2$/m, 'slice 2nd - correct content');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
153 like($r, qr/Status: HIT/m, 'slice 2nd - cache status');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
154
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
155 $r = get('/cache/t?mrange', "Range: bytes=3-4");
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
156 like($r, qr/ 206 /, 'range median - 206 partial reply');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
157 like($r, qr/^34$/m, 'range median - correct content');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
158 like($r, qr/Status: MISS/m, 'range median - cache status');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
159
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
160 $r = get('/cache/t?mrange', "Range: bytes=2-3");
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
161 like($r, qr/ 206 /, 'range prev - 206 partial reply');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
162 like($r, qr/^23$/m, 'range prev - correct content');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
163 like($r, qr/Status: HIT/m, 'range prev - cache status');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
164
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
165 $r = get('/cache/t?mrange', "Range: bytes=4-5");
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
166 like($r, qr/ 206 /, 'range next - 206 partial reply');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
167 like($r, qr/^45$/m, 'range next - correct content');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
168 like($r, qr/Status: HIT/m, 'range next - cache status');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
169
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
170 $r = get('/cache/t?first', "Range: bytes=2-");
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
171 like($r, qr/ 206 /, 'first bytes - 206 partial reply');
1007
174e900c00dc Tests: adjusted slice.t to test with various range header lengths.
Sergey Kandaurov <pluknet@nginx.com>
parents: 974
diff changeset
172 like($r, qr/^23456789abcdef$/m, 'first bytes - correct content');
796
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
173 like($r, qr/Status: MISS/m, 'first bytes - cache status');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
174
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
175 $r = get('/cache/t?first', "Range: bytes=4-");
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
176 like($r, qr/ 206 /, 'first bytes cached - 206 partial reply');
1007
174e900c00dc Tests: adjusted slice.t to test with various range header lengths.
Sergey Kandaurov <pluknet@nginx.com>
parents: 974
diff changeset
177 like($r, qr/^456789abcdef$/m, 'first bytes cached - correct content');
796
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
178 like($r, qr/Status: HIT/m, 'first bytes cached - cache status');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
179
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
180 # multiple ranges
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
181 # we want 206, but 200 is also fine
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
182
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
183 $r = get('/cache/t?many', "Range: bytes=3-3,4-4");
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
184 like($r, qr/200 OK/, 'many - 206 partial reply');
1007
174e900c00dc Tests: adjusted slice.t to test with various range header lengths.
Sergey Kandaurov <pluknet@nginx.com>
parents: 974
diff changeset
185 like($r, qr/^0123456789abcdef$/m, 'many - correct content');
796
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
186
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
187 $r = get('/cache/t?last', "Range: bytes=-10");
1007
174e900c00dc Tests: adjusted slice.t to test with various range header lengths.
Sergey Kandaurov <pluknet@nginx.com>
parents: 974
diff changeset
188 like($r, qr/206 /, 'last bytes - 206 partial reply');
174e900c00dc Tests: adjusted slice.t to test with various range header lengths.
Sergey Kandaurov <pluknet@nginx.com>
parents: 974
diff changeset
189 like($r, qr/^6789abcdef$/m, 'last bytes - correct content');
796
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
190
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
191 # respect not modified and range filters
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
192
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
193 my ($etag) = http_get('/t') =~ /ETag: (.*)/;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
194
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
195 like(get('/cache/t?inm', "If-None-Match: $etag"), qr/ 304 /, 'inm');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
196 like(get('/cache/t?inm', "If-None-Match: bad"), qr/ 200 /, 'inm bad');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
197
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
198 like(get('/cache/t?im', "If-Match: $etag"), qr/ 200 /, 'im');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
199 like(get('/cache/t?im', "If-Match: bad"), qr/ 412 /, 'im bad');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
200
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
201 $r = get('/cache/t?if', "Range: bytes=3-4\nIf-Range: $etag");
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
202 like($r, qr/ 206 /, 'if-range - 206 partial reply');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
203 like($r, qr/^34$/m, 'if-range - correct content');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
204
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
205 $r = get('/cache/t?ifb', "Range: bytes=3-4\nIf-Range: bad");
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
206 like($r, qr/ 200 /, 'if-range bad - 200 ok');
1007
174e900c00dc Tests: adjusted slice.t to test with various range header lengths.
Sergey Kandaurov <pluknet@nginx.com>
parents: 974
diff changeset
207 like($r, qr/^0123456789abcdef$/m, 'if-range bad - correct content');
796
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
208
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
209 # first slice isn't known
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
210
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
211 $r = get('/cache/t?skip', "Range: bytes=6-7\nIf-Range: $etag");
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
212 like($r, qr/ 206 /, 'if-range skip slice - 206 partial reply');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
213 like($r, qr/^67$/m, 'if-range skip slice - correct content');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
214
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
215 $r = get('/cache/t?skip', "Range: bytes=6-7\nIf-Range: $etag");
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
216 like($r, qr/ 206 /, 'if-range skip slice - cached - 206 partial reply');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
217 like($r, qr/^67$/m, 'if-range skip slice - cached - correct content');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
218 like($r, qr/HIT/, 'if-range skip bytes - cached - cache status');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
219
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
220 $r = get('/cache/t?skip', "Range: bytes=2-3");
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
221 like($r, qr/ 206 /, 'if-range skip slice - skipped - 206 partial reply');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
222 like($r, qr/^23$/m, 'if-range skip slice - skipped - correct content');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
223 like($r, qr/MISS/, 'if-range skip bytes - skipped - cache status');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
224
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
225 SKIP: {
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
226 eval { require FCGI; };
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
227 skip 'FCGI not installed', 5 if $@;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
228 skip 'win32', 5 if $^O eq 'MSWin32';
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
229
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
230 $t->run_daemon(\&fastcgi_daemon);
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
231 $t->waitforsocket('127.0.0.1:' . port(8082));
796
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
232
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
233 like(http_get('/fastcgi'), qr/200 OK.*MISS.*^012345678$/ms, 'fastcgi');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
234 like(http_get('/fastcgi'), qr/200 OK.*HIT.*^012345678$/ms,
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
235 'fastcgi cached');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
236
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
237 like(get("/fastcgi?1", "Range: bytes=0-0"), qr/ 206 .*MISS.*^0$/ms,
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
238 'fastcgi slice');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
239 like(get("/fastcgi?1", "Range: bytes=1-1"), qr/ 206 .*HIT.*^1$/ms,
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
240 'fastcgi slice cached');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
241 like(get("/fastcgi?1", "Range: bytes=2-2"), qr/ 206 .*MISS.*^2$/ms,
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
242 'fastcgi slice next');
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
243 }
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
244
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
245 ###############################################################################
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
246
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
247 sub get {
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
248 my ($url, $extra) = @_;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
249 return http(<<EOF);
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
250 GET $url HTTP/1.1
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
251 Host: localhost
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
252 Connection: close
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
253 $extra
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
254
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
255 EOF
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
256 }
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
257
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
258 ###############################################################################
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
259
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
260 sub fastcgi_daemon {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
261 my $socket = FCGI::OpenSocket('127.0.0.1:' . port(8082), 5);
796
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
262 my $request = FCGI::Request(\*STDIN, \*STDOUT, \*STDERR, \%ENV,
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
263 $socket);
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
264
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
265 my $body = '012345678';
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
266 my $len = length($body);
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
267
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
268 while ($request->Accept() >= 0) {
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
269 my ($start, $stop) = $ENV{Range} =~ /bytes=(\d+)-(\d+)/;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
270 my $body = substr($body, $start, ($stop - $start) + 1);
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
271 $stop = $len - 1 if $stop > $len - 1;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
272
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
273 print <<EOF;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
274 Status: 206
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
275 Content-Type: text/html
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
276 Content-Range: bytes $start-$stop/$len
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
277
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
278 EOF
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
279
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
280 print $body;
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
281 }
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
282
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
283 FCGI::CloseSocket($socket);
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
284 }
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
285
92375c379a0a Tests: slice filter tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
286 ###############################################################################