annotate proxy_next_upstream.t @ 540:481d705b8610

Tests: SSL support in mail backends. Socket is now embedded into every mail module. Socket methods are wrapped where appropriate. The new "SSL" extra flag specifies to accept connection over SSL.
author Sergey Kandaurov <pluknet@nginx.com>
date Fri, 03 Apr 2015 00:11:38 +0300
parents 3d3c8b5ea8ee
children e9064d691790
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
288
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Tests for http proxy module, proxy_next_upstream directive.
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 use Test::More;
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 use lib 'lib';
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 use Test::Nginx;
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 ###############################################################################
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 select STDERR; $| = 1;
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 select STDOUT; $| = 1;
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
351
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
24 my $t = Test::Nginx->new()->has(qw/http proxy rewrite/)->plan(7);
288
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26 $t->write_file_expand('nginx.conf', <<'EOF');
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28 %%TEST_GLOBALS%%
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
30 daemon off;
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 events {
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33 }
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 http {
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36 %%TEST_GLOBALS_HTTP%%
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38 upstream u {
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 server 127.0.0.1:8081;
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40 server 127.0.0.1:8082;
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41 }
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42
351
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
43 upstream u2 {
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
44 server 127.0.0.1:8081;
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
45 server 127.0.0.1:8082;
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
46 }
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
47
288
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48 server {
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49 listen 127.0.0.1:8080;
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50 server_name localhost;
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52 location / {
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53 proxy_pass http://u;
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54 proxy_next_upstream http_500 http_404;
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55 }
351
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
56
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
57 location /all/ {
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
58 proxy_pass http://u2;
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
59 proxy_next_upstream http_500 http_404;
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
60 error_page 404 /all/404;
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
61 proxy_intercept_errors on;
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
62 }
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
63
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
64 location /all/404 {
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
65 return 200 "$upstream_addr\n";
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
66 }
288
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67 }
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69 server {
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70 listen 127.0.0.1:8081;
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71 server_name localhost;
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73 location / {
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74 return 404;
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75 }
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76 location /ok {
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
77 return 200 "AND-THIS\n";
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
78 }
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
79 location /500 {
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
80 return 500;
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
81 }
351
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
82
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
83 location /all/ {
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
84 return 404;
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
85 }
288
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
86 }
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88 server {
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89 listen 127.0.0.1:8082;
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
90 server_name localhost;
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
91
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92 location / {
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
93 return 200 "TEST-OK-IF-YOU-SEE-THIS\n";
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94 }
351
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
95
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
96 location /all/ {
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
97 return 404;
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
98 }
288
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
99 }
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
100 }
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
101
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
102 EOF
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
103
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
104 $t->run();
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
105
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
106 ###############################################################################
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
107
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
108 # check if both request fallback to a backend
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
109 # which returns valid response
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
110
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
111 like(http_get('/'), qr/SEE-THIS/, 'proxy request');
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
112 like(http_get('/'), qr/SEE-THIS/, 'second request');
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
113
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
114 # make sure backend isn't switched off after
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
115 # proxy_next_upstream http_404
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
116
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
117 like(http_get('/ok') . http_get('/ok'), qr/AND-THIS/, 'not down');
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
118
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
119 # next upstream on http_500
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
120
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
121 like(http_get('/500'), qr/SEE-THIS/, 'request 500');
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
122 like(http_get('/500'), qr/SEE-THIS/, 'request 500 second');
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
123
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
124 # make sure backend switched off with http_500
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
125
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
126 unlike(http_get('/ok') . http_get('/ok'), qr/AND-THIS/, 'down after 500');
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
127
351
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
128 # make sure all backends are tried once
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
129
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
130 like(http_get('/all/rr'),
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
131 qr/^127.0.0.1:808(1, 127.0.0.1:8082|2, 127.0.0.1:8081)$/mi,
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
132 'all tried once');
3d3c8b5ea8ee Tests: improved proxy_next_upstream tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 288
diff changeset
133
288
56157712d744 Tests: proxy_next_upstream tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
134 ###############################################################################