Mercurial > hg > nginx-tests
annotate proxy_protocol_port.t @ 1260:eadd24ccfda1
Tests: postponed startup in certain ssl certificate tests on win32.
At least, some win32 hosts exhibit a round-off error or some such in the
notBefore field of the certificate generated before starting nginx, such
that it can be set to the value one second ahead of the current time.
This manifests in spurious test failures due to certificate verify error
with a failure reason "certificate is not yet valid".
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Tue, 12 Dec 2017 12:53:53 +0300 |
parents | 766bcbb632ee |
children |
rev | line source |
---|---|
934
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
2 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
3 # (C) Andrey Zelenkov |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
5 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
6 # Tests for proxy_protocol_port variable. |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
7 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
9 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
11 use strict; |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
12 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
14 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
15 use Socket qw/ CRLF /; |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
16 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
17 BEGIN { use FindBin; chdir($FindBin::Bin); } |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
18 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
19 use lib 'lib'; |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
20 use Test::Nginx; |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
21 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
22 ############################################################################### |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
23 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
24 select STDERR; $| = 1; |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
25 select STDOUT; $| = 1; |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
26 |
1170
cf14cfe9ec8c
Tests: dropped obsolete ipv6 prerequisite.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
27 my $t = Test::Nginx->new()->has(qw/http realip/) |
934
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
28 ->write_file_expand('nginx.conf', <<'EOF'); |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
29 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
30 %%TEST_GLOBALS%% |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
31 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
32 daemon off; |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
33 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
34 events { |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
35 } |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
36 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
37 http { |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
38 %%TEST_GLOBALS_HTTP%% |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
39 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
40 log_format port $proxy_protocol_port; |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
41 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
42 server { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
961
diff
changeset
|
43 listen 127.0.0.1:8080 proxy_protocol; |
934
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
44 server_name localhost; |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
45 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
46 add_header X-PP-Port $proxy_protocol_port; |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
47 add_header X-Remote-Port $remote_port; |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
48 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
49 location /pp { |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
50 real_ip_header proxy_protocol; |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
51 error_page 404 =200 /t; |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
52 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
53 location /pp/real { |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
54 set_real_ip_from 127.0.0.1/32; |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
55 } |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
56 } |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
57 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
58 location /log { |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
59 access_log %%TESTDIR%%/port.log port; |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
60 } |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
61 } |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
62 } |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
63 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
64 EOF |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
65 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
66 $t->write_file('t', 'SEE-THIS'); |
1251
766bcbb632ee
Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1170
diff
changeset
|
67 $t->run()->plan(8); |
934
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
68 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
69 ############################################################################### |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
70 |
961
4993ece8620e
Tests: avoid unexpected match in proxy_protocol_port.t at all.
Sergey Kandaurov <pluknet@nginx.com>
parents:
959
diff
changeset
|
71 my $tcp4 = 'PROXY TCP4 192.0.2.1 192.0.2.2 123 5678' . CRLF; |
4993ece8620e
Tests: avoid unexpected match in proxy_protocol_port.t at all.
Sergey Kandaurov <pluknet@nginx.com>
parents:
959
diff
changeset
|
72 my $tcp6 = 'PROXY TCP6 2001:Db8::1 2001:Db8::2 123 5678' . CRLF; |
934
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
73 my $unk = 'PROXY UNKNOWN 1 2 3 4 5 6' . CRLF; |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
74 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
75 # realip |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
76 |
961
4993ece8620e
Tests: avoid unexpected match in proxy_protocol_port.t at all.
Sergey Kandaurov <pluknet@nginx.com>
parents:
959
diff
changeset
|
77 like(pp_get('/pp', $tcp4), qr/X-PP-Port: 123\x0d/, 'pp port tcp4'); |
4993ece8620e
Tests: avoid unexpected match in proxy_protocol_port.t at all.
Sergey Kandaurov <pluknet@nginx.com>
parents:
959
diff
changeset
|
78 like(pp_get('/pp', $tcp6), qr/X-PP-Port: 123\x0d/, 'pp port tcp6'); |
934
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
79 unlike(pp_get('/pp', $unk), qr/X-PP-Port/, 'pp port unknown'); |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
80 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
81 # remote_port |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
82 |
961
4993ece8620e
Tests: avoid unexpected match in proxy_protocol_port.t at all.
Sergey Kandaurov <pluknet@nginx.com>
parents:
959
diff
changeset
|
83 like(pp_get('/pp/real', $tcp4), qr/X-Remote-Port: 123\x0d/, 'remote port tcp4'); |
4993ece8620e
Tests: avoid unexpected match in proxy_protocol_port.t at all.
Sergey Kandaurov <pluknet@nginx.com>
parents:
959
diff
changeset
|
84 unlike(pp_get('/pp', $tcp4), qr/X-Remote-Port: 123\x0d/, 'no remote port tcp4'); |
4993ece8620e
Tests: avoid unexpected match in proxy_protocol_port.t at all.
Sergey Kandaurov <pluknet@nginx.com>
parents:
959
diff
changeset
|
85 like(pp_get('/pp/real', $tcp6), qr/X-Remote-Port: 123\x0d/, 'remote port tcp6'); |
4993ece8620e
Tests: avoid unexpected match in proxy_protocol_port.t at all.
Sergey Kandaurov <pluknet@nginx.com>
parents:
959
diff
changeset
|
86 unlike(pp_get('/pp', $tcp6), qr/X-Remote-Port: 123\x0d/, 'no remote port tcp6'); |
934
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
87 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
88 # log |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
89 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
90 pp_get('/log', $tcp4); |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
91 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
92 $t->stop(); |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
93 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
94 my $log = $t->read_file('/port.log'); |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
95 chomp $log; |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
96 |
961
4993ece8620e
Tests: avoid unexpected match in proxy_protocol_port.t at all.
Sergey Kandaurov <pluknet@nginx.com>
parents:
959
diff
changeset
|
97 is($log, 123, 'pp port log'); |
934
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
98 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
99 ############################################################################### |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
100 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
101 sub pp_get { |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
102 my ($url, $proxy) = @_; |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
103 return http($proxy . <<EOF); |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
104 GET $url HTTP/1.0 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
105 Host: localhost |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
106 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
107 EOF |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
108 } |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
109 |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
110 ############################################################################### |