annotate proxy_next_upstream_tries.t @ 589:a9569f57da98

Tests: whitespaces fix.
author Andrey Zelenkov <zelenkov@nginx.com>
date Mon, 25 May 2015 18:42:34 +0300
parents 907e89fba9c3
children ef1c363dd648
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
462
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
6 # Tests for http proxy module, proxy_next_upstream_tries
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7 # and proxy_next_upstream_timeout directives.
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9 ###############################################################################
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use warnings;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12 use strict;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14 use Test::More;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
15
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
16 BEGIN { use FindBin; chdir($FindBin::Bin); }
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18 use lib 'lib';
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19 use Test::Nginx;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
21 ###############################################################################
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23 select STDERR; $| = 1;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24 select STDOUT; $| = 1;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
25
568
907e89fba9c3 Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents: 494
diff changeset
26 my $t = Test::Nginx->new()->has(qw/http proxy rewrite/)->plan(8);
462
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
27
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28 $t->write_file_expand('nginx.conf', <<'EOF');
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30 %%TEST_GLOBALS%%
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32 daemon off;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34 events {
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35 }
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37 http {
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38 %%TEST_GLOBALS_HTTP%%
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40 upstream u {
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
41 server 127.0.0.1:8081;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
42 server 127.0.0.1:8081;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43 server 127.0.0.1:8081;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44 }
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46 upstream u2 {
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
47 server 127.0.0.1:8081;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48 server 127.0.0.1:8081 backup;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49 server 127.0.0.1:8081 backup;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50 }
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52 server {
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
53 listen 127.0.0.1:8080;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
54 server_name localhost;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
55
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56 proxy_next_upstream http_404;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57 proxy_intercept_errors on;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58 error_page 404 /404;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
59
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
60 location /tries {
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
61 proxy_pass http://u;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
62 proxy_next_upstream_tries 2;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
63 }
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
64
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
65 location /tries/backup {
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
66 proxy_pass http://u2;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
67 proxy_next_upstream_tries 2;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
68 }
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
69
479
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
70 location /tries/resolver {
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
71 resolver 127.0.0.1:8083;
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
72 resolver_timeout 1s;
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
73
494
623863fcb1d1 Tests: simplified proxy_next_upstream_tries.t tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 493
diff changeset
74 proxy_pass http://$host:8081;
479
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
75 proxy_next_upstream_tries 2;
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
76 }
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
77
493
d456ed8a18de Tests: added proxy_next_upstream_tries.t tests with zero value.
Sergey Kandaurov <pluknet@nginx.com>
parents: 492
diff changeset
78 location /tries/zero {
d456ed8a18de Tests: added proxy_next_upstream_tries.t tests with zero value.
Sergey Kandaurov <pluknet@nginx.com>
parents: 492
diff changeset
79 proxy_pass http://u;
d456ed8a18de Tests: added proxy_next_upstream_tries.t tests with zero value.
Sergey Kandaurov <pluknet@nginx.com>
parents: 492
diff changeset
80 proxy_next_upstream_tries 0;
d456ed8a18de Tests: added proxy_next_upstream_tries.t tests with zero value.
Sergey Kandaurov <pluknet@nginx.com>
parents: 492
diff changeset
81 }
d456ed8a18de Tests: added proxy_next_upstream_tries.t tests with zero value.
Sergey Kandaurov <pluknet@nginx.com>
parents: 492
diff changeset
82
462
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83 location /timeout {
494
623863fcb1d1 Tests: simplified proxy_next_upstream_tries.t tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 493
diff changeset
84 proxy_pass http://u/w;
492
799487ee9aee Tests: adjusted proxy_next_upstream_timeout values.
Sergey Kandaurov <pluknet@nginx.com>
parents: 485
diff changeset
85 proxy_next_upstream_timeout 1900ms;
462
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
86 }
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
87
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
88 location /timeout/backup {
494
623863fcb1d1 Tests: simplified proxy_next_upstream_tries.t tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 493
diff changeset
89 proxy_pass http://u2/w;
492
799487ee9aee Tests: adjusted proxy_next_upstream_timeout values.
Sergey Kandaurov <pluknet@nginx.com>
parents: 485
diff changeset
90 proxy_next_upstream_timeout 1900ms;
462
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
91 }
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
92
479
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
93 location /timeout/resolver {
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
94 resolver 127.0.0.1:8083;
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
95 resolver_timeout 1s;
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
96
494
623863fcb1d1 Tests: simplified proxy_next_upstream_tries.t tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 493
diff changeset
97 proxy_pass http://$host:8081/w;
492
799487ee9aee Tests: adjusted proxy_next_upstream_timeout values.
Sergey Kandaurov <pluknet@nginx.com>
parents: 485
diff changeset
98 proxy_next_upstream_timeout 1900ms;
479
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
99 }
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
100
493
d456ed8a18de Tests: added proxy_next_upstream_tries.t tests with zero value.
Sergey Kandaurov <pluknet@nginx.com>
parents: 492
diff changeset
101 location /timeout/zero {
494
623863fcb1d1 Tests: simplified proxy_next_upstream_tries.t tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 493
diff changeset
102 proxy_pass http://u/w;
493
d456ed8a18de Tests: added proxy_next_upstream_tries.t tests with zero value.
Sergey Kandaurov <pluknet@nginx.com>
parents: 492
diff changeset
103 proxy_next_upstream_timeout 0;
d456ed8a18de Tests: added proxy_next_upstream_tries.t tests with zero value.
Sergey Kandaurov <pluknet@nginx.com>
parents: 492
diff changeset
104 }
d456ed8a18de Tests: added proxy_next_upstream_tries.t tests with zero value.
Sergey Kandaurov <pluknet@nginx.com>
parents: 492
diff changeset
105
462
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
106 location /404 {
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
107 return 200 x${upstream_status}x;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
108 }
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
109 }
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
110 }
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
111
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
112 EOF
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
113
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
114 $t->run_daemon(\&http_daemon, 8081);
479
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
115 $t->run_daemon(\&dns_daemon, 8083, $t);
568
907e89fba9c3 Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents: 494
diff changeset
116 $t->run();
462
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
117
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
118 $t->waitforsocket('127.0.0.1:8081');
479
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
119 $t->waitforfile($t->testdir . '/8083');
462
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
120
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
121 ###############################################################################
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
122
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
123 like(http_get('/tries'), qr/x404, 404x/, 'tries');
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
124 like(http_get('/tries/backup'), qr/x404, 404x/, 'tries backup');
479
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
125 like(http_get('/tries/resolver'), qr/x404, 404x/, 'tries resolved');
493
d456ed8a18de Tests: added proxy_next_upstream_tries.t tests with zero value.
Sergey Kandaurov <pluknet@nginx.com>
parents: 492
diff changeset
126 like(http_get('/tries/zero'), qr/x404, 404, 404x/, 'tries zero');
d456ed8a18de Tests: added proxy_next_upstream_tries.t tests with zero value.
Sergey Kandaurov <pluknet@nginx.com>
parents: 492
diff changeset
127
492
799487ee9aee Tests: adjusted proxy_next_upstream_timeout values.
Sergey Kandaurov <pluknet@nginx.com>
parents: 485
diff changeset
128 # two tries fit into 1.9s
462
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
129
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
130 like(http_get('/timeout'), qr/x404, 404x/, 'timeout');
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
131 like(http_get('/timeout/backup'), qr/x404, 404x/, 'timeout backup');
479
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
132 like(http_get('/timeout/resolver'), qr/x404, 404x/, 'timeout resolved');
493
d456ed8a18de Tests: added proxy_next_upstream_tries.t tests with zero value.
Sergey Kandaurov <pluknet@nginx.com>
parents: 492
diff changeset
133 like(http_get('/timeout/zero'), qr/x404, 404, 404x/, 'timeout zero');
d456ed8a18de Tests: added proxy_next_upstream_tries.t tests with zero value.
Sergey Kandaurov <pluknet@nginx.com>
parents: 492
diff changeset
134
462
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
135 ###############################################################################
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
136
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
137 sub http_daemon {
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
138 my ($port) = @_;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
139
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
140 my $server = IO::Socket::INET->new(
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
141 Proto => 'tcp',
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
142 LocalHost => '127.0.0.1',
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
143 LocalPort => $port,
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
144 Listen => 5,
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
145 Reuse => 1
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
146 )
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
147 or die "Can't create listening socket: $!\n";
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
148
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
149 local $SIG{PIPE} = 'IGNORE';
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
150
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
151 while (my $client = $server->accept()) {
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
152 $client->autoflush(1);
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
153
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
154 my $headers = '';
494
623863fcb1d1 Tests: simplified proxy_next_upstream_tries.t tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 493
diff changeset
155 my $uri = '';
462
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
156
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
157 while (<$client>) {
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
158 $headers .= $_;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
159 last if (/^\x0d?\x0a?$/);
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
160 }
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
161
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
162 next if $headers eq '';
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
163
494
623863fcb1d1 Tests: simplified proxy_next_upstream_tries.t tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 493
diff changeset
164 $uri = $1 if $headers =~ /^\S+\s+([^ ]+)\s+HTTP/i;
623863fcb1d1 Tests: simplified proxy_next_upstream_tries.t tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 493
diff changeset
165
623863fcb1d1 Tests: simplified proxy_next_upstream_tries.t tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 493
diff changeset
166 if ($uri eq '/w') {
462
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
167 Test::Nginx::log_core('||', "$port: sleep(1)");
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
168 select undef, undef, undef, 1;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
169 }
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
170
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
171 Test::Nginx::log_core('||', "$port: response, 404");
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
172 print $client <<EOF;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
173 HTTP/1.1 404 Not Found
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
174 Connection: close
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
175
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
176 EOF
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
177
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
178 } continue {
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
179 close $client;
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
180 }
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
181 }
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
182
479
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
183 sub reply_handler {
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
184 my ($recv_data) = @_;
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
185
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
186 my (@name, @rdata);
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
187
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
188 use constant NOERROR => 0;
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
189 use constant A => 1;
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
190 use constant IN => 1;
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
191
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
192 # default values
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
193
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
194 my ($hdr, $rcode, $ttl) = (0x8180, NOERROR, 3600);
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
195
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
196 # decode name
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
197
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
198 my ($len, $offset) = (undef, 12);
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
199 while (1) {
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
200 $len = unpack("\@$offset C", $recv_data);
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
201 last if $len == 0;
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
202 $offset++;
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
203 push @name, unpack("\@$offset A$len", $recv_data);
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
204 $offset += $len;
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
205 }
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
206
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
207 $offset -= 1;
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
208 my ($id, $type, $class) = unpack("n x$offset n2", $recv_data);
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
209
485
cbfe90b632e8 Tests: removed stray semicolon, no functional changes.
Sergey Kandaurov <pluknet@nginx.com>
parents: 484
diff changeset
210 @rdata = map { rd_addr($ttl, '127.0.0.1') } (1 .. 3) if $type == A;
479
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
211
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
212 $len = @name;
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
213 pack("n6 (w/a*)$len x n2", $id, $hdr | $rcode, 1, scalar @rdata,
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
214 0, 0, @name, $type, $class) . join('', @rdata);
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
215 }
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
216
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
217 sub rd_addr {
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
218 my ($ttl, $addr) = @_;
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
219
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
220 my $code = 'split(/\./, $addr)';
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
221
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
222 return pack 'n3N', 0xc00c, A, IN, $ttl if $addr eq '';
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
223
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
224 pack 'n3N nC4', 0xc00c, A, IN, $ttl, eval "scalar $code", eval($code);
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
225 }
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
226
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
227 sub dns_daemon {
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
228 my ($port, $t) = @_;
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
229
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
230 my ($data, $recv_data);
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
231 my $socket = IO::Socket::INET->new(
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
232 LocalAddr => '127.0.0.1',
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
233 LocalPort => $port,
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
234 Proto => 'udp',
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
235 )
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
236 or die "Can't create listening socket: $!\n";
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
237
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
238 # signal we are ready
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
239
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
240 open my $fh, '>', $t->testdir() . '/' . $port;
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
241 close $fh;
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
242
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
243 while (1) {
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
244 $socket->recv($recv_data, 65536);
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
245 $data = reply_handler($recv_data);
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
246 $socket->send($data);
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
247 }
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
248 }
b8f10ffa02cd Tests: proxy_next_upstream_tries tests with resolved upstream.
Sergey Kandaurov <pluknet@nginx.com>
parents: 462
diff changeset
249
462
cb0662e12d6e Tests: proxy_next_upstream_{tries,timeout} tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
250 ###############################################################################