annotate range_if_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
173
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Tests for range filter module with If-Range header.
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 use Test::More;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 use lib 'lib';
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 use Test::Nginx;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 ###############################################################################
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 select STDERR; $| = 1;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 select STDOUT; $| = 1;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24 my $t = Test::Nginx->new()->has(qw/http/)->plan(8);
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26 $t->write_file_expand('nginx.conf', <<'EOF');
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28 %%TEST_GLOBALS%%
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29
249
6a0d934950bc Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 242
diff changeset
30 daemon off;
173
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 events {
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33 }
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 http {
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36 %%TEST_GLOBALS_HTTP%%
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
39 listen 127.0.0.1:8080;
173
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40 server_name localhost;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42 location /t2.html {
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43 add_header Last-Modified "";
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44 }
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46 location /t3.html {
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 add_header Last-Modified "Mon, 28 Sep 1970 06:00:00 GMT";
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48 }
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49 }
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50 }
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52 EOF
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54 $t->write_file('t1.html',
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55 join('', map { sprintf "X%03dXXXXXX", $_ } (0 .. 99)));
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56 $t->write_file('t2.html',
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57 join('', map { sprintf "X%03dXXXXXX", $_ } (0 .. 99)));
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58 $t->write_file('t3.html',
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59 join('', map { sprintf "X%03dXXXXXX", $_ } (0 .. 99)));
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60 $t->run();
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62 ###############################################################################
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64 my $t1;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66 # If-Range
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68 $t1 = http_get_range('/t1.html', "Range: bytes=0-9\nIf-Range: wrong");
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69 like($t1, qr/200 OK/, 'if-range wrong');
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70 like($t1, qr/Last-Modified: /, 'if-range wrong - last modified');
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72 $t1 =~ m/Last-Modified: (.*)/m;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73 my $last = $1;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75 $t1 = http_get_range('/t1.html', "Range: bytes=0-9\nIf-Range: $last");
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 317
diff changeset
76 like($t1, qr/ 206 /, 'if-range');
173
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
77
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
78 # If-Range + add_header Last-Modified ""
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
79
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
80 $t1 = http_get_range('/t2.html', "Range: bytes=0-9\nIf-Range: wrong");
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
81 like($t1, qr/200 OK/, 'if-range notime');
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
82 unlike($t1, qr/Last-Modified: /, 'if-range notime - no last modified');
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
83
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84 # If-Range + add_header Last-Modified "Mon, 28 Sep 1970 06:00:00 GMT"
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
85
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
86 $t1 = http_get_range('/t3.html', "Range: bytes=0-9\nIf-Range: wrong");
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87 like($t1, qr/200 OK/, 'if-range time wrong');
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88 like($t1, qr/Last-Modified: Mon, 28 Sep 1970 06:00:00 GMT/,
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89 'if-range time wrong - last modified');
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
90
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
91 $t1 = http_get_range('/t3.html',
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92 "Range: bytes=0-9\nIf-Range: Mon, 28 Sep 1970 06:00:00 GMT");
491
d5bf5942a8b2 Tests: disambiguated parsing of the status code.
Sergey Kandaurov <pluknet@nginx.com>
parents: 317
diff changeset
93 like($t1, qr/ 206 /, 'if-range time');
173
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
95 ###############################################################################
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
96
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
97 sub http_get_range {
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
98 my ($url, $extra) = @_;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
99 return http(<<EOF);
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
100 GET $url HTTP/1.1
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
101 Host: localhost
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
102 Connection: close
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
103 $extra
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
104
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
105 EOF
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
106 }
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
107
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
108 ###############################################################################