Mercurial > hg > nginx-tests
annotate proxy_protocol_port.t @ 1248:70192b1baf01
Tests: added exception test to stream_js.t using 'require'.
The stream js tests introduced in edf5a3c9e36a fail on njs 0.1.14. It doesn't
currently provide an easy way to check its version, whilst we are obligated to
gracefully handle such cases somehow. With such an addition of 'require', now
the tests are skipped instead on the previous versions.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Tue, 21 Nov 2017 13:16:39 +0300 |
parents | cf14cfe9ec8c |
children | 766bcbb632ee |
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'); |
d5762cd27ad9
Tests: added tests for proxy_protocol_port variable.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
67 $t->try_run('no proxy_protocol_port')->plan(8); |
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 ############################################################################### |