comparison slice.t @ 1007:174e900c00dc

Tests: adjusted slice.t to test with various range header lengths.
author Sergey Kandaurov <pluknet@nginx.com>
date Fri, 19 Aug 2016 18:15:57 +0300
parents 882267679006
children 196d33c2bb45
comparison
equal deleted inserted replaced
1006:e4d5e7afb6e0 1007:174e900c00dc
88 } 88 }
89 } 89 }
90 90
91 EOF 91 EOF
92 92
93 $t->write_file('t', '012345678'); 93 $t->write_file('t', '0123456789abcdef');
94 $t->run(); 94 $t->run();
95 95
96 ############################################################################### 96 ###############################################################################
97 97
98 my $r; 98 my $r;
99 99
100 like(http_get('/cache/nx'), qr/ 404 /, 'not found'); 100 like(http_get('/cache/nx'), qr/ 404 /, 'not found');
101 like(http_get('/cache/t'), qr/ 200 .*012345678$/ms, 'no range'); 101 like(http_get('/cache/t'), qr/ 200 .*0123456789abcdef$/ms, 'no range');
102 102
103 $r = get('/cache/t?single', "Range: bytes=0-0"); 103 $r = get('/cache/t?single', "Range: bytes=0-0");
104 like($r, qr/ 206 /, 'single - 206 partial reply'); 104 like($r, qr/ 206 /, 'single - 206 partial reply');
105 like($r, qr/^0$/m, 'single - correct content'); 105 like($r, qr/^0$/m, 'single - correct content');
106 like($r, qr/Status: MISS/m, 'single - cache status'); 106 like($r, qr/Status: MISS/m, 'single - cache status');
167 like($r, qr/^45$/m, 'range next - correct content'); 167 like($r, qr/^45$/m, 'range next - correct content');
168 like($r, qr/Status: HIT/m, 'range next - cache status'); 168 like($r, qr/Status: HIT/m, 'range next - cache status');
169 169
170 $r = get('/cache/t?first', "Range: bytes=2-"); 170 $r = get('/cache/t?first', "Range: bytes=2-");
171 like($r, qr/ 206 /, 'first bytes - 206 partial reply'); 171 like($r, qr/ 206 /, 'first bytes - 206 partial reply');
172 like($r, qr/^2345678$/m, 'first bytes - correct content'); 172 like($r, qr/^23456789abcdef$/m, 'first bytes - correct content');
173 like($r, qr/Status: MISS/m, 'first bytes - cache status'); 173 like($r, qr/Status: MISS/m, 'first bytes - cache status');
174 174
175 $r = get('/cache/t?first', "Range: bytes=4-"); 175 $r = get('/cache/t?first', "Range: bytes=4-");
176 like($r, qr/ 206 /, 'first bytes cached - 206 partial reply'); 176 like($r, qr/ 206 /, 'first bytes cached - 206 partial reply');
177 like($r, qr/^45678$/m, 'first bytes cached - correct content'); 177 like($r, qr/^456789abcdef$/m, 'first bytes cached - correct content');
178 like($r, qr/Status: HIT/m, 'first bytes cached - cache status'); 178 like($r, qr/Status: HIT/m, 'first bytes cached - cache status');
179 179
180 # multiple ranges 180 # multiple ranges
181 # we want 206, but 200 is also fine 181 # we want 206, but 200 is also fine
182 182
183 $r = get('/cache/t?many', "Range: bytes=3-3,4-4"); 183 $r = get('/cache/t?many', "Range: bytes=3-3,4-4");
184 like($r, qr/200 OK/, 'many - 206 partial reply'); 184 like($r, qr/200 OK/, 'many - 206 partial reply');
185 like($r, qr/^012345678$/m, 'many - correct content'); 185 like($r, qr/^0123456789abcdef$/m, 'many - correct content');
186 186
187 $r = get('/cache/t?last', "Range: bytes=-10"); 187 $r = get('/cache/t?last', "Range: bytes=-10");
188 like($r, qr/200 OK/, 'last bytes - 206 partial reply'); 188 like($r, qr/206 /, 'last bytes - 206 partial reply');
189 like($r, qr/^012345678$/m, 'last bytes - correct content'); 189 like($r, qr/^6789abcdef$/m, 'last bytes - correct content');
190 190
191 # respect not modified and range filters 191 # respect not modified and range filters
192 192
193 my ($etag) = http_get('/t') =~ /ETag: (.*)/; 193 my ($etag) = http_get('/t') =~ /ETag: (.*)/;
194 194
202 like($r, qr/ 206 /, 'if-range - 206 partial reply'); 202 like($r, qr/ 206 /, 'if-range - 206 partial reply');
203 like($r, qr/^34$/m, 'if-range - correct content'); 203 like($r, qr/^34$/m, 'if-range - correct content');
204 204
205 $r = get('/cache/t?ifb', "Range: bytes=3-4\nIf-Range: bad"); 205 $r = get('/cache/t?ifb', "Range: bytes=3-4\nIf-Range: bad");
206 like($r, qr/ 200 /, 'if-range bad - 200 ok'); 206 like($r, qr/ 200 /, 'if-range bad - 200 ok');
207 like($r, qr/^012345678$/m, 'if-range bad - correct content'); 207 like($r, qr/^0123456789abcdef$/m, 'if-range bad - correct content');
208 208
209 # first slice isn't known 209 # first slice isn't known
210 210
211 $r = get('/cache/t?skip', "Range: bytes=6-7\nIf-Range: $etag"); 211 $r = get('/cache/t?skip', "Range: bytes=6-7\nIf-Range: $etag");
212 like($r, qr/ 206 /, 'if-range skip slice - 206 partial reply'); 212 like($r, qr/ 206 /, 'if-range skip slice - 206 partial reply');