Mercurial > hg > nginx-tests
annotate proxy_set_body.t @ 549:e4ff43e00d84
Tests: refactored least_conn test.
First, start long requests to busy both backends, and ensure that subsequent
consecutive requests are balanced to the only backend with zero connections.
This change aims to get rid of false negatives due timing issues.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Fri, 17 Apr 2015 17:54:06 +0300 |
parents | f36c3532a117 |
children | e9064d691790 |
rev | line source |
---|---|
283
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 # Tests for proxy_set_body. |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 ############################################################################### |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 use warnings; |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 use strict; |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
12 use Test::More; |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 BEGIN { use FindBin; chdir($FindBin::Bin); } |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
15 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
16 use lib 'lib'; |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
17 use Test::Nginx; |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 ############################################################################### |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 select STDERR; $| = 1; |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 select STDOUT; $| = 1; |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
24 my $t = Test::Nginx->new()->has(qw/http proxy rewrite/)->plan(2) |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
25 ->write_file_expand('nginx.conf', <<'EOF'); |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
26 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
27 %%TEST_GLOBALS%% |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
28 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
29 daemon off; |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
30 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 events { |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 } |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
33 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
34 http { |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 %%TEST_GLOBALS_HTTP%% |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
36 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 server { |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
38 listen 127.0.0.1:8080; |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
39 server_name localhost; |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
40 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
41 location / { |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
42 proxy_pass http://127.0.0.1:8080/body; |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
43 proxy_set_body "body"; |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
44 } |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
45 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
46 location /p1 { |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
47 proxy_pass http://127.0.0.1:8080/x1; |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
48 proxy_set_body "body"; |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
49 } |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
50 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
51 location /p2 { |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
52 proxy_pass http://127.0.0.1:8080/body; |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
53 proxy_set_body "body two"; |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
54 } |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
55 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
56 location /x1 { |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
57 add_header X-Accel-Redirect /p2; |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
58 return 204; |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
59 } |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
60 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
61 location /body { |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
62 add_header X-Body $request_body; |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
63 proxy_pass http://127.0.0.1:8080/empty; |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
64 } |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
65 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
66 location /empty { |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
67 return 204; |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
68 } |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
69 } |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
70 } |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
71 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
72 EOF |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
73 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
74 $t->run(); |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
75 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
76 ############################################################################### |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
77 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
78 like(http_get('/'), qr/X-Body: body/, 'proxy_set_body'); |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
79 like(http_get('/p1'), qr/X-Body: body two/, 'proxy_set_body twice'); |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
80 |
36d24870ccb2
Tests: proxy_set_body tests added.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
81 ############################################################################### |