Mercurial > hg > nginx-tests
annotate mirror_proxy.t @ 1381:97c8280de681
Tests: removed TODO and try_run() checks for legacy versions.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Mon, 08 Oct 2018 15:30:39 +0300 |
parents | c0dbb94fa36c |
children | 8b7ab9245916 |
rev | line source |
---|---|
1208
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
2 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
3 # (C) Sergey Kandaurov |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
5 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
6 # Tests for http mirror module and it's interaction with proxy. |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
7 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
9 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
11 use strict; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
12 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
14 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
16 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
19 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
20 ############################################################################### |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
21 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
22 select STDERR; $| = 1; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
23 select STDOUT; $| = 1; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
24 |
1366
e16eecc84b49
Tests: added mirror test with subrequest delayed in limit_req.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1208
diff
changeset
|
25 my $t = Test::Nginx->new()->has(qw/http proxy mirror rewrite limit_req/); |
1208
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
26 |
1381
97c8280de681
Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1368
diff
changeset
|
27 $t->write_file_expand('nginx.conf', <<'EOF')->plan(7); |
1208
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
28 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
29 %%TEST_GLOBALS%% |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
30 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
31 daemon off; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
32 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
33 events { |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
34 } |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
35 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
36 http { |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
37 %%TEST_GLOBALS_HTTP%% |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
38 |
1366
e16eecc84b49
Tests: added mirror test with subrequest delayed in limit_req.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1208
diff
changeset
|
39 limit_req_zone $uri zone=slow:1m rate=30r/m; |
e16eecc84b49
Tests: added mirror test with subrequest delayed in limit_req.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1208
diff
changeset
|
40 log_format test $request_uri:$request_body; |
1208
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
41 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
42 server { |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
43 listen 127.0.0.1:8080; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
44 server_name localhost; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
45 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
46 location / { |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
47 mirror /mirror; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
48 proxy_pass http://127.0.0.1:8081; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
49 } |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
50 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
51 location /off { |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
52 mirror /mirror/off; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
53 mirror_request_body off; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
54 proxy_pass http://127.0.0.1:8081; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
55 } |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
56 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
57 location /mirror { |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
58 internal; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
59 proxy_pass http://127.0.0.1:8082; |
1366
e16eecc84b49
Tests: added mirror test with subrequest delayed in limit_req.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1208
diff
changeset
|
60 limit_req zone=slow burst=1; |
1208
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
61 } |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
62 } |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
63 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
64 server { |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
65 listen 127.0.0.1:8081; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
66 listen 127.0.0.1:8082; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
67 server_name localhost; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
68 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
69 location / { |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
70 client_body_timeout 1s; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
71 proxy_pass http://127.0.0.1:$server_port/return204; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
72 access_log %%TESTDIR%%/test.log test; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
73 add_header X-Body $request_body; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
74 } |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
75 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
76 location /return204 { |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
77 return 204; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
78 } |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
79 } |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
80 } |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
81 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
82 EOF |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
83 |
1381
97c8280de681
Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1368
diff
changeset
|
84 $t->run(); |
1208
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
85 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
86 ############################################################################### |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
87 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
88 like(http_post('/'), qr/X-Body: 1234567890\x0d?$/m, 'mirror proxy'); |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
89 like(http_post('/off'), qr/X-Body: 1234567890\x0d?$/m, 'mirror_request_body'); |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
90 |
1366
e16eecc84b49
Tests: added mirror test with subrequest delayed in limit_req.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1208
diff
changeset
|
91 # delayed subrequest should not affect main request processing nor stuck itself |
e16eecc84b49
Tests: added mirror test with subrequest delayed in limit_req.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1208
diff
changeset
|
92 |
1367
c6721d7bf1a0
Tests: skip mirror test with limit_req on win32, it hangs.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1366
diff
changeset
|
93 SKIP: { |
c6721d7bf1a0
Tests: skip mirror test with limit_req on win32, it hangs.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1366
diff
changeset
|
94 skip 'hang on win32', 1 if $^O eq 'MSWin32' and !$ENV{TEST_NGINX_UNSAFE}; |
c6721d7bf1a0
Tests: skip mirror test with limit_req on win32, it hangs.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1366
diff
changeset
|
95 |
1366
e16eecc84b49
Tests: added mirror test with subrequest delayed in limit_req.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1208
diff
changeset
|
96 TODO: { |
e16eecc84b49
Tests: added mirror test with subrequest delayed in limit_req.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1208
diff
changeset
|
97 local $TODO = 'not yet'; |
e16eecc84b49
Tests: added mirror test with subrequest delayed in limit_req.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1208
diff
changeset
|
98 |
e16eecc84b49
Tests: added mirror test with subrequest delayed in limit_req.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1208
diff
changeset
|
99 like(http_post('/delay?1'), qr/X-Body: 1234567890\x0d?$/m, 'mirror delay'); |
e16eecc84b49
Tests: added mirror test with subrequest delayed in limit_req.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1208
diff
changeset
|
100 |
e16eecc84b49
Tests: added mirror test with subrequest delayed in limit_req.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1208
diff
changeset
|
101 } |
e16eecc84b49
Tests: added mirror test with subrequest delayed in limit_req.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1208
diff
changeset
|
102 |
1367
c6721d7bf1a0
Tests: skip mirror test with limit_req on win32, it hangs.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1366
diff
changeset
|
103 } |
c6721d7bf1a0
Tests: skip mirror test with limit_req on win32, it hangs.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1366
diff
changeset
|
104 |
1368
c0dbb94fa36c
Tests: adjusted todo_alerts() in mirror_proxy.t on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1367
diff
changeset
|
105 $t->todo_alerts() unless $^O eq 'MSWin32'; |
1208
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
106 $t->stop(); |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
107 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
108 my $log = $t->read_file('test.log'); |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
109 like($log, qr!^/:1234567890$!m, 'log - request body'); |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
110 like($log, qr!^/mirror:1234567890$!m, 'log - request body in mirror'); |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
111 like($log, qr!^/off:1234567890$!m, 'log - mirror_request_body off'); |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
112 like($log, qr!^/mirror/off:-$!m,, 'log - mirror_request_body off in mirror'); |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
113 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
114 ############################################################################### |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
115 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
116 sub http_post { |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
117 my ($url) = @_; |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
118 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
119 http(<<EOF); |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
120 POST $url HTTP/1.0 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
121 Host: localhost |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
122 Content-Length: 10 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
123 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
124 1234567890 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
125 EOF |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
126 } |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
127 |
a6453cf5786a
Tests: http mirror module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
128 ############################################################################### |