Mercurial > hg > nginx-tests
comparison stream_geo_ipv6.t @ 1018:2120f5808c32
Tests: added stream geo IPv6 tests.
author | Andrey Zelenkov <zelenkov@nginx.com> |
---|---|
date | Fri, 26 Aug 2016 16:32:22 +0300 |
parents | |
children | cf14cfe9ec8c |
comparison
equal
deleted
inserted
replaced
1017:82bdc838ba94 | 1018:2120f5808c32 |
---|---|
1 #!/usr/bin/perl | |
2 | |
3 # (C) Andrey Zelenkov | |
4 # (C) Nginx, Inc. | |
5 | |
6 # Stream tests for geo module with IPv6. | |
7 | |
8 ############################################################################### | |
9 | |
10 use warnings; | |
11 use strict; | |
12 | |
13 use Test::More; | |
14 | |
15 BEGIN { use FindBin; chdir($FindBin::Bin); } | |
16 | |
17 use lib 'lib'; | |
18 use Test::Nginx; | |
19 use Test::Nginx::Stream qw/ stream /; | |
20 | |
21 ############################################################################### | |
22 | |
23 select STDERR; $| = 1; | |
24 select STDOUT; $| = 1; | |
25 | |
26 my $t = Test::Nginx->new()->has(qw/stream stream_return stream_map stream_geo/) | |
27 ->has(qw/ipv6/)->write_file_expand('nginx.conf', <<'EOF'); | |
28 | |
29 %%TEST_GLOBALS%% | |
30 | |
31 daemon off; | |
32 | |
33 events { | |
34 } | |
35 | |
36 stream { | |
37 geo $geo { | |
38 ::1/128 loopback; | |
39 2001:0db8::/32 test; | |
40 ::/0 world; | |
41 } | |
42 | |
43 geo $geo_delete { | |
44 ::1/128 loopback; | |
45 2001:0db8::/32 test; | |
46 ::/0 world; | |
47 delete ::1/128; | |
48 } | |
49 | |
50 map $server_port $var { | |
51 %%PORT_8080%% "::1"; | |
52 %%PORT_8081%% "::ffff:192.0.2.1"; | |
53 } | |
54 | |
55 geo $var $geo_var { | |
56 default default; | |
57 192.0.2.1 test; | |
58 } | |
59 | |
60 geo $var $geo_var_ranges { | |
61 ranges; | |
62 default default; | |
63 127.0.0.1-127.0.0.2 loopback; | |
64 192.0.2.0-192.0.2.1 test; | |
65 } | |
66 | |
67 server { | |
68 listen 127.0.0.1:8080; | |
69 proxy_pass [::1]:%%PORT_8080%%; | |
70 } | |
71 | |
72 server { | |
73 listen [::1]:%%PORT_8080%%; | |
74 return "geo:$geo | |
75 geo_delete:$geo_delete | |
76 geo_var:$geo_var | |
77 geo_var_ranges:$geo_var_ranges"; | |
78 } | |
79 | |
80 server { | |
81 listen 127.0.0.1:8081; | |
82 return "geo_var:$geo_var | |
83 geo_var_ranges:$geo_var_ranges"; | |
84 } | |
85 } | |
86 | |
87 EOF | |
88 | |
89 $t->try_run('no stream geo and/or inet6 support')->plan(6); | |
90 | |
91 ############################################################################### | |
92 | |
93 my %data = stream()->read() =~ /(\w+):(\w+)/g; | |
94 is($data{geo}, 'loopback', 'geo ipv6'); | |
95 is($data{geo_delete}, 'world', 'geo ipv6 delete'); | |
96 is($data{geo_var}, 'default', 'geo ipv6 from variable'); | |
97 is($data{geo_var_ranges}, 'default', 'geo ipv6 from variable range'); | |
98 | |
99 %data = stream('127.0.0.1:' . port(8081))->read() =~ /(\w+):(\w+)/g; | |
100 is($data{geo_var}, 'test', 'geo ipv6 ipv4-mapped from variable'); | |
101 is($data{geo_var_ranges}, 'test', 'geo ipv6 ipv4-mapped from variable range'); | |
102 | |
103 ############################################################################### |