annotate proxy_force_ranges.t @ 1427:eb1d883305ea

Tests: avoid edge cases in upstream random two test. Unavailable servers contribute to the number of attempts, if selected, before the balancer would fall back to the default round-robin method. This means that it's quite possible to get server with more connections. To facilitate with selecting two alive servers, down server was removed from the upstream configuration at the cost of slightly worse coverage.
author Sergey Kandaurov <pluknet@nginx.com>
date Thu, 10 Jan 2019 17:42:34 +0300
parents 97c8280de681
children f026c41335b2
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 like(http_get_range('/proxy/t.html',
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
98 "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
99 qr/^THIS/m, 'if-range last-modified proxy');
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
100
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
101 # If-Range entity-tag request
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
102
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
103 like(http_get_range('/proxy/t.html',
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
104 "Range: bytes=4-\nIf-Range: \"59a5401c-8\""),
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
105 qr/^THIS/m, 'if-range etag proxy');
0c15ba7d19b3 Tests: If-Range tests with proxy.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
106
472
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
107 ###############################################################################
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
108
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
109 sub http_get_range {
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
110 my ($url, $extra) = @_;
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
111 return http(<<EOF);
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
112 GET $url HTTP/1.1
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
113 Host: localhost
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
114 Connection: close
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
115 $extra
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
116
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
117 EOF
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
118 }
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
119
c8e790dcbe19 Tests: proxy_force_ranges tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
120 ###############################################################################