annotate range.t @ 1974:b5036a0f9ae0 default tip

Tests: improved compatibility when using recent "openssl" app. Starting with OpenSSL 3.0, "openssl genrsa" generates encrypted keys in PKCS#8 format instead of previously used PKCS#1 format. Further, since OpenSSL 1.1.0 such keys are using PBKDF2 hmacWithSHA256. Such keys are not supported by old SSL libraries, notably by OpenSSL before 1.0.0 (OpenSSL 0.9.8 only supports hmacWithSHA1) and by BoringSSL before May 21, 2019 (support for hmacWithSHA256 was added in 302a4dee6c), and trying to load such keys into nginx compiled with an old SSL library results in "unsupported prf" errors. To facilitate testing with old SSL libraries, keys are now generated with "openssl genrsa -traditional" if the flag is available.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 06 May 2024 00:04:26 +0300
parents 882267679006
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
33
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Tests for range filter module.
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 use Test::More;
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 use lib 'lib';
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 use Test::Nginx;
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 ###############################################################################
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 select STDERR; $| = 1;
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 select STDOUT; $| = 1;
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
345
8e8636a4fe61 Tests: more range filter tests for satisfiable ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 344
diff changeset
24 my $t = Test::Nginx->new()->has(qw/http charset/)->plan(41);
33
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26 $t->write_file_expand('nginx.conf', <<'EOF');
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27
107
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
28 %%TEST_GLOBALS%%
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
29
249
6a0d934950bc Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 179
diff changeset
30 daemon off;
33
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 events {
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33 }
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 http {
107
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
36 %%TEST_GLOBALS_HTTP%%
35
7bf0e8a1d66c Tests: always define temp paths.
Maxim Dounin <mdounin@mdounin.ru>
parents: 33
diff changeset
37
33
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38 charset_map B A {
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 58 59; # X -> Y
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40 }
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
43 listen 127.0.0.1:8080;
33
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44 server_name localhost;
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46 location /t2.html {
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 charset A;
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48 source_charset B;
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49 }
344
b6d566531746 Tests: tests for range filter bound with "max_ranges".
Sergey Kandaurov <pluknet@nginx.com>
parents: 249
diff changeset
50
b6d566531746 Tests: tests for range filter bound with "max_ranges".
Sergey Kandaurov <pluknet@nginx.com>
parents: 249
diff changeset
51 location /t3.html {
b6d566531746 Tests: tests for range filter bound with "max_ranges".
Sergey Kandaurov <pluknet@nginx.com>
parents: 249
diff changeset
52 max_ranges 2;
b6d566531746 Tests: tests for range filter bound with "max_ranges".
Sergey Kandaurov <pluknet@nginx.com>
parents: 249
diff changeset
53 }
b6d566531746 Tests: tests for range filter bound with "max_ranges".
Sergey Kandaurov <pluknet@nginx.com>
parents: 249
diff changeset
54
b6d566531746 Tests: tests for range filter bound with "max_ranges".
Sergey Kandaurov <pluknet@nginx.com>
parents: 249
diff changeset
55 location /t4.html {
b6d566531746 Tests: tests for range filter bound with "max_ranges".
Sergey Kandaurov <pluknet@nginx.com>
parents: 249
diff changeset
56 max_ranges 0;
b6d566531746 Tests: tests for range filter bound with "max_ranges".
Sergey Kandaurov <pluknet@nginx.com>
parents: 249
diff changeset
57 }
33
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58 }
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59 }
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61 EOF
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63 $t->write_file('t1.html',
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64 join('', map { sprintf "X%03dXXXXXX", $_ } (0 .. 99)));
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65 $t->write_file('t2.html',
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66 join('', map { sprintf "X%03dXXXXXX", $_ } (0 .. 99)));
344
b6d566531746 Tests: tests for range filter bound with "max_ranges".
Sergey Kandaurov <pluknet@nginx.com>
parents: 249
diff changeset
67 $t->write_file('t3.html',
b6d566531746 Tests: tests for range filter bound with "max_ranges".
Sergey Kandaurov <pluknet@nginx.com>
parents: 249
diff changeset
68 join('', map { sprintf "X%03dXXXXXX", $_ } (0 .. 99)));
b6d566531746 Tests: tests for range filter bound with "max_ranges".
Sergey Kandaurov <pluknet@nginx.com>
parents: 249
diff changeset
69 $t->write_file('t4.html',
b6d566531746 Tests: tests for range filter bound with "max_ranges".
Sergey Kandaurov <pluknet@nginx.com>
parents: 249
diff changeset
70 join('', map { sprintf "X%03dXXXXXX", $_ } (0 .. 99)));
33
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71 $t->run();
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73 ###############################################################################
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75 my $t1;
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
77 $t1 = http_get_range('/t1.html', 'Range: bytes=0-8');
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 345
diff changeset
78 like($t1, qr/ 206 /, 'range request - 206 partial reply');
33
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
79 like($t1, qr/Content-Length: 9/, 'range request - correct length');
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
80 like($t1, qr/Content-Range: bytes 0-8\/1000/, 'range request - content range');
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
81 like($t1, qr/^X000XXXXX$/m, 'range request - correct content');
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
82
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
83 $t1 = http_get_range('/t1.html', 'Range: bytes=-10');
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 345
diff changeset
84 like($t1, qr/ 206 /, 'final bytes - 206 partial reply');
33
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
85 like($t1, qr/Content-Length: 10/, 'final bytes - content length');
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
86 like($t1, qr/Content-Range: bytes 990-999\/1000/,
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87 'final bytes - content range');
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88 like($t1, qr/^X099XXXXXX$/m, 'final bytes - correct content');
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
90 $t1 = http_get_range('/t1.html', 'Range: bytes=990-');
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 345
diff changeset
91 like($t1, qr/ 206 /, 'final bytes explicit - 206 partial reply');
33
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92 like($t1, qr/Content-Length: 10/, 'final bytes explicit - content length');
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
93 like($t1, qr/Content-Range: bytes 990-999\/1000/,
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94 'final bytes explicit - content range');
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
95 like($t1, qr/^X099XXXXXX$/m, 'final bytes explicit - correct content');
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
96
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
97 $t1 = http_get_range('/t1.html', 'Range: bytes=990-1990');
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 345
diff changeset
98 like($t1, qr/ 206 /, 'more than length - 206 partial reply');
33
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
99 like($t1, qr/Content-Length: 10/, 'more than length - content length');
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
100 like($t1, qr/Content-Range: bytes 990-999\/1000/,
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
101 'more than length - content range');
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
102 like($t1, qr/^X099XXXXXX$/m, 'more than length - correct content');
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
103
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
104 $t1 = http_get_range('/t2.html', 'Range: bytes=990-1990');
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 345
diff changeset
105 like($t1, qr/ 206 /, 'recoded - 206 partial reply');
33
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
106 like($t1, qr/Content-Length: 10/, 'recoded - content length');
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
107 like($t1, qr/Content-Range: bytes 990-999\/1000/, 'recoded - content range');
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
108 like($t1, qr/^Y099YYYYYY$/m, 'recoded - correct content');
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
109
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
110 $t1 = http_get_range('/t1.html', 'Range: bytes=0-9, -10, 10-19');
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 345
diff changeset
111 like($t1, qr/ 206 /, 'multipart - 206 partial reply');
33
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
112 like($t1, qr/Content-Type: multipart\/byteranges; boundary=/,
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
113 'multipart - content type');
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
114 like($t1, qr/X000XXXXXX/m, 'multipart - content 0-9');
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
115 like($t1, qr/^X099XXXXXX\x0d?$/m, 'multipart - content -10 aka 990-999');
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
116 like($t1, qr/X001XXXXXX\x0d?$/m, 'multipart - content 10-19');
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
117
170
c5696c97c735 Tests: range not satisfiable tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
118 $t1 = http_get_range('/t1.html', 'Range: bytes=0-9, -10, 100000-, 10-19');
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 345
diff changeset
119 like($t1, qr/ 206 /, 'multipart big - 206 partial reply');
170
c5696c97c735 Tests: range not satisfiable tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
120 like($t1, qr/Content-Type: multipart\/byteranges; boundary=/,
590
dc2f8aac0553 Tests: whitespace fixes.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 491
diff changeset
121 'multipart big - content type');
170
c5696c97c735 Tests: range not satisfiable tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
122 like($t1, qr/X000XXXXXX/m, 'multipart big - content 0-9');
c5696c97c735 Tests: range not satisfiable tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
123 like($t1, qr/^X099XXXXXX\x0d?$/m, 'multipart big - content -10 aka 990-999');
c5696c97c735 Tests: range not satisfiable tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
124 like($t1, qr/X001XXXXXX\x0d?$/m, 'multipart big - content 10-19');
c5696c97c735 Tests: range not satisfiable tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
125
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 345
diff changeset
126 like(http_get_range('/t1.html', 'Range: bytes=100000-'), qr/ 416 /,
345
8e8636a4fe61 Tests: more range filter tests for satisfiable ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 344
diff changeset
127 'not satisfiable - too big first byte pos');
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 345
diff changeset
128 like(http_get_range('/t1.html', 'Range: bytes=alpha'), qr/ 416 /,
345
8e8636a4fe61 Tests: more range filter tests for satisfiable ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 344
diff changeset
129 'not satisfiable - alpha in first byte pos');
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 345
diff changeset
130 like(http_get_range('/t1.html', 'Range: bytes=10-alpha'), qr/ 416 /,
345
8e8636a4fe61 Tests: more range filter tests for satisfiable ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 344
diff changeset
131 'not satisfiable - alpha in last byte pos');
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 345
diff changeset
132 like(http_get_range('/t1.html', 'Range: bytes=10'), qr/ 416 /,
345
8e8636a4fe61 Tests: more range filter tests for satisfiable ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 344
diff changeset
133 'not satisfiable - no hyphen');
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 345
diff changeset
134 like(http_get_range('/t1.html', 'Range: bytes=10-11 12-'), qr/ 416 /,
345
8e8636a4fe61 Tests: more range filter tests for satisfiable ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 344
diff changeset
135 'not satisfiable - no comma');
8e8636a4fe61 Tests: more range filter tests for satisfiable ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 344
diff changeset
136
8e8636a4fe61 Tests: more range filter tests for satisfiable ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 344
diff changeset
137 # last-byte-pos is taken to be equal to one less than the current length
8e8636a4fe61 Tests: more range filter tests for satisfiable ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 344
diff changeset
138 # of the entity-body in bytes -- rfc2616 sec 14.35.
8e8636a4fe61 Tests: more range filter tests for satisfiable ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 344
diff changeset
139
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 345
diff changeset
140 like(http_get_range('/t1.html', 'Range: bytes=0-10001'), qr/ 206 /,
345
8e8636a4fe61 Tests: more range filter tests for satisfiable ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 344
diff changeset
141 'satisfiable - last byte pos adjusted');
8e8636a4fe61 Tests: more range filter tests for satisfiable ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 344
diff changeset
142
8e8636a4fe61 Tests: more range filter tests for satisfiable ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 344
diff changeset
143 # total size of all ranges is greater than source response size
8e8636a4fe61 Tests: more range filter tests for satisfiable ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 344
diff changeset
144
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 345
diff changeset
145 like(http_get_range('/t1.html', 'Range: bytes=0-10001, 0-0'), qr/ 200 /,
345
8e8636a4fe61 Tests: more range filter tests for satisfiable ranges.
Sergey Kandaurov <pluknet@nginx.com>
parents: 344
diff changeset
146 'not satisfiable - malicious byte ranges');
170
c5696c97c735 Tests: range not satisfiable tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
147
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 345
diff changeset
148 like(http_get_range('/t3.html', 'Range: bytes=0-9, -10'), qr/ 206 /,
344
b6d566531746 Tests: tests for range filter bound with "max_ranges".
Sergey Kandaurov <pluknet@nginx.com>
parents: 249
diff changeset
149 'max_ranges not reached');
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 345
diff changeset
150 like(http_get_range('/t3.html', 'Range: bytes=0-9, -10, 10000-'), qr/ 206 /,
344
b6d566531746 Tests: tests for range filter bound with "max_ranges".
Sergey Kandaurov <pluknet@nginx.com>
parents: 249
diff changeset
151 'max_ranges not reached bad range');
b6d566531746 Tests: tests for range filter bound with "max_ranges".
Sergey Kandaurov <pluknet@nginx.com>
parents: 249
diff changeset
152 unlike(http_get_range('/t3.html', 'Range: bytes=0-9, -10, 10-19'),
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 345
diff changeset
153 qr/ 206 /, 'max_ranges reached');
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 345
diff changeset
154 unlike(http_get_range('/t4.html', 'Range: bytes=0-9'), qr/ 206 /,
344
b6d566531746 Tests: tests for range filter bound with "max_ranges".
Sergey Kandaurov <pluknet@nginx.com>
parents: 249
diff changeset
155 'max_ranges zero');
b6d566531746 Tests: tests for range filter bound with "max_ranges".
Sergey Kandaurov <pluknet@nginx.com>
parents: 249
diff changeset
156
33
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
157 ###############################################################################
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
158
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
159 sub http_get_range {
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
160 my ($url, $extra) = @_;
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
161 return http(<<EOF);
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
162 GET $url HTTP/1.1
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
163 Host: localhost
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
164 Connection: close
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
165 $extra
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
166
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
167 EOF
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
168 }
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
169
4f57d57543e1 Tests: range filter tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
170 ###############################################################################