Mercurial > hg > nginx-tests
annotate proxy_merge_headers.t @ 1263:ea3c7659b6c1
Tests: handled early pidfile write on win32 in the run() routine.
In addition to the present waiting for pidfile, which is insufficient on win32
due to the CreateProcess model, and may lead to rare startup races, search now
for the certain error message which indicates started worker process.
This change allows tolerating moderate hiccups on win32 hosts.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Tue, 19 Dec 2017 19:55:01 +0300 |
parents | 196d33c2bb45 |
children | 5ad8f0b5fa0f |
rev | line source |
---|---|
182
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 # Tests for proxy_set_header inheritance. |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 ############################################################################### |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 use warnings; |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 use strict; |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
12 use Test::More; |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 BEGIN { use FindBin; chdir($FindBin::Bin); } |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
15 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
16 use lib 'lib'; |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
17 use Test::Nginx; |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 ############################################################################### |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 select STDERR; $| = 1; |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 select STDOUT; $| = 1; |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 |
1020
196d33c2bb45
Tests: removed TODO and try_run() checks for legacy versions.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
974
diff
changeset
|
24 my $t = Test::Nginx->new()->has(qw/http proxy cache rewrite/)->plan(7) |
182
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
25 ->write_file_expand('nginx.conf', <<'EOF'); |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
26 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
27 %%TEST_GLOBALS%% |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
28 |
249
6a0d934950bc
Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
241
diff
changeset
|
29 daemon off; |
182
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
30 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 events { |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 } |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
33 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
34 http { |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 %%TEST_GLOBALS_HTTP%% |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
36 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 proxy_cache_path %%TESTDIR%%/cache levels=1:2 |
503
071e8941e3bf
Tests: reduce shared memory zone sizes.
Maxim Dounin <mdounin@mdounin.ru>
parents:
249
diff
changeset
|
38 keys_zone=NAME:1m; |
182
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
39 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
40 proxy_set_header X-Blah "blah"; |
228
5c9e43547b71
Tests: proxy_hide_header/proxy_pass_header inheritance tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
223
diff
changeset
|
41 proxy_hide_header X-Hidden; |
182
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
42 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
43 server { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
44 listen 127.0.0.1:8080; |
182
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
45 server_name localhost; |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
46 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
47 proxy_cache NAME; |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
48 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
49 location / { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
50 proxy_pass http://127.0.0.1:8081; |
228
5c9e43547b71
Tests: proxy_hide_header/proxy_pass_header inheritance tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
223
diff
changeset
|
51 |
5c9e43547b71
Tests: proxy_hide_header/proxy_pass_header inheritance tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
223
diff
changeset
|
52 location /nested/ { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
53 proxy_pass http://127.0.0.1:8081; |
228
5c9e43547b71
Tests: proxy_hide_header/proxy_pass_header inheritance tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
223
diff
changeset
|
54 proxy_pass_header X-Pad; |
5c9e43547b71
Tests: proxy_hide_header/proxy_pass_header inheritance tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
223
diff
changeset
|
55 } |
182
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
56 } |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
57 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
58 location /no/ { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
59 proxy_pass http://127.0.0.1:8081; |
182
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
60 proxy_cache off; |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
61 } |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
62 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
63 location /setbody/ { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
64 proxy_pass http://127.0.0.1:8081; |
182
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
65 proxy_set_body "body"; |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
66 } |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
67 } |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
68 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
69 server { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
70 listen 127.0.0.1:8081; |
182
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
71 server_name localhost; |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
72 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
73 location / { |
228
5c9e43547b71
Tests: proxy_hide_header/proxy_pass_header inheritance tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
223
diff
changeset
|
74 add_header X-Hidden "hidden"; |
5c9e43547b71
Tests: proxy_hide_header/proxy_pass_header inheritance tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
223
diff
changeset
|
75 add_header X-Pad "passed"; |
182
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
76 return 200 "ims=$http_if_modified_since;blah=$http_x_blah;"; |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
77 } |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
78 } |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
79 } |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
80 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
81 EOF |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
82 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
83 $t->run(); |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
84 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
85 ############################################################################### |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
86 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
87 like(http_get_ims('/'), qr/ims=;blah=blah;/, |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
88 'if-modified-since cleared with cache'); |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
89 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
90 like(http_get_ims('/no/'), qr/ims=blah;blah=blah;/, |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
91 'if-modified-since preserved without cache'); |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
92 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
93 like(http_get_ims('/setbody/'), qr/blah=blah;/, |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
94 'proxy_set_header inherited with proxy_set_body'); |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
95 |
228
5c9e43547b71
Tests: proxy_hide_header/proxy_pass_header inheritance tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
223
diff
changeset
|
96 unlike(http_get('/'), qr/X-Pad/, 'proxy_pass_header default'); |
5c9e43547b71
Tests: proxy_hide_header/proxy_pass_header inheritance tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
223
diff
changeset
|
97 like(http_get('/nested/'), qr/X-Pad/, 'proxy_pass_header nested'); |
5c9e43547b71
Tests: proxy_hide_header/proxy_pass_header inheritance tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
223
diff
changeset
|
98 unlike(http_get('/'), qr/X-Hidden/, 'proxy_hide_header inherited'); |
5c9e43547b71
Tests: proxy_hide_header/proxy_pass_header inheritance tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
223
diff
changeset
|
99 unlike(http_get('/nested/'), qr/X-Hidden/, 'proxy_hide_header nested'); |
5c9e43547b71
Tests: proxy_hide_header/proxy_pass_header inheritance tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
223
diff
changeset
|
100 |
182
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
101 ############################################################################### |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
102 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
103 sub http_get_ims { |
589
a9569f57da98
Tests: whitespaces fix.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
574
diff
changeset
|
104 my ($url) = @_; |
a9569f57da98
Tests: whitespaces fix.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
574
diff
changeset
|
105 return http(<<EOF); |
182
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
106 GET $url HTTP/1.0 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
107 Host: localhost |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
108 Connection: close |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
109 If-Modified-Since: blah |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
110 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
111 EOF |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
112 } |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
113 |
23f81eb0a817
Tests: proxy_set_header/fastcgi_param/scgi_param tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
114 ############################################################################### |