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 ###############################################################################