annotate proxy_force_ranges.t @ 1260:eadd24ccfda1

Tests: postponed startup in certain ssl certificate tests on win32. At least, some win32 hosts exhibit a round-off error or some such in the notBefore field of the certificate generated before starting nginx, such that it can be set to the value one second ahead of the current time. This manifests in spurious test failures due to certificate verify error with a failure reason "certificate is not yet valid".
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 12 Dec 2017 12:53:53 +0300
parents 0c15ba7d19b3
children 97c8280de681
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
472
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
6 # Tests for http proxy cache and range filter.
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7 # proxy_force_ranges enables partial response regardless Accept-Ranges.
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9 ###############################################################################
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use warnings;
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12 use strict;
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14 use Test::More;
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
15
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
16 BEGIN { use FindBin; chdir($FindBin::Bin); }
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18 use lib 'lib';
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19 use Test::Nginx;
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
21 ###############################################################################
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23 select STDERR; $| = 1;
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24 select STDOUT; $| = 1;
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
25
1211
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
26 my $t = Test::Nginx->new()->has(qw/http proxy cache/)->plan(6)
472
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
27 ->write_file_expand('nginx.conf', <<'EOF');
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29 %%TEST_GLOBALS%%
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31 daemon off;
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33 events {
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34 }
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36 http {
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37 %%TEST_GLOBALS_HTTP%%
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39 proxy_cache_path %%TESTDIR%%/cache levels=1:2
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40 keys_zone=NAME:1m;
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
41
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
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;
472
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44 server_name localhost;
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46 location / {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
47 proxy_pass http://127.0.0.1:8081;
472
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48 }
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49
1211
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
50 location /proxy/ {
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
51 proxy_pass http://127.0.0.1:8081/;
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
52 proxy_force_ranges on;
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
53 }
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
54
472
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
55 location /cache/ {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
56 proxy_pass http://127.0.0.1:8081/;
472
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57 proxy_cache NAME;
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58 proxy_cache_valid 200 1m;
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
59
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
60 proxy_force_ranges on;
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
61 }
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
62 }
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
63
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
64 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
65 listen 127.0.0.1:8081;
472
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
66 server_name localhost;
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
67
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
68 location / {
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
69 max_ranges 0;
1211
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
70 add_header Last-Modified "Mon, 28 Sep 1970 06:00:00 GMT";
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
71 add_header ETag '"59a5401c-8"';
472
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
72 }
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
73 }
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
74 }
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
75
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76 EOF
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
77
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
78 $t->write_file('t.html', 'SEE-THIS');
568
907e89fba9c3 Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents: 472
diff changeset
79 $t->run();
472
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
80
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
81 ###############################################################################
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
82
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83 # serving range requests requires Accept-Ranges by default
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
84
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
85 unlike(http_get_range('/t.html', 'Range: bytes=4-'), qr/^THIS/m,
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
86 'range without Accept-Ranges');
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
87
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
88 like(http_get_range('/cache/t.html', 'Range: bytes=4-'), qr/^THIS/m,
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
89 'uncached range');
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
90 like(http_get_range('/cache/t.html', 'Range: bytes=4-'), qr/^THIS/m,
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
91 'cached range');
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
92 like(http_get_range('/cache/t.html', 'Range: bytes=0-2,4-'), qr/^SEE.*^THIS/ms,
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
93 'cached multipart range');
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
94
1211
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
95 # If-Range HTTP-date request
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
96
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
97 TODO: {
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
98 local $TODO = 'not yet' unless $t->has_version('1.13.5');
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
99
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
100 like(http_get_range('/proxy/t.html',
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
101 "Range: bytes=4-\nIf-Range: Mon, 28 Sep 1970 06:00:00 GMT"),
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
102 qr/^THIS/m, 'if-range last-modified proxy');
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
103
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
104 }
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
105
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
106 # If-Range entity-tag request
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
107
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
108 like(http_get_range('/proxy/t.html',
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
109 "Range: bytes=4-\nIf-Range: \"59a5401c-8\""),
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
110 qr/^THIS/m, 'if-range etag proxy');
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
111
472
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
112 ###############################################################################
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
113
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
114 sub http_get_range {
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
115 my ($url, $extra) = @_;
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
116 return http(<<EOF);
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
117 GET $url HTTP/1.1
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
118 Host: localhost
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
119 Connection: close
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
120 $extra
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
121
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
122 EOF
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
123 }
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
124
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
125 ###############################################################################