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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 ###############################################################################