Mercurial > hg > nginx-tests
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'); |