Skip to content

Commit 1e3ebcd

Browse files
Tests: added stream geo IPv6 tests.
1 parent 7edf3d2 commit 1e3ebcd

File tree

1 file changed

+103
-0
lines changed

1 file changed

+103
-0
lines changed

stream_geo_ipv6.t

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
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+
###############################################################################

0 commit comments

Comments
 (0)