Mercurial > hg > nginx-tests
changeset 1018:2120f5808c32
Tests: added stream geo IPv6 tests.
author | Andrey Zelenkov <zelenkov@nginx.com> |
---|---|
date | Fri, 26 Aug 2016 16:32:22 +0300 |
parents | 82bdc838ba94 |
children | 41139d6f8b7b |
files | stream_geo_ipv6.t |
diffstat | 1 files changed, 103 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/stream_geo_ipv6.t Fri Aug 26 16:32:22 2016 +0300 @@ -0,0 +1,103 @@ +#!/usr/bin/perl + +# (C) Andrey Zelenkov +# (C) Nginx, Inc. + +# Stream tests for geo module with IPv6. + +############################################################################### + +use warnings; +use strict; + +use Test::More; + +BEGIN { use FindBin; chdir($FindBin::Bin); } + +use lib 'lib'; +use Test::Nginx; +use Test::Nginx::Stream qw/ stream /; + +############################################################################### + +select STDERR; $| = 1; +select STDOUT; $| = 1; + +my $t = Test::Nginx->new()->has(qw/stream stream_return stream_map stream_geo/) + ->has(qw/ipv6/)->write_file_expand('nginx.conf', <<'EOF'); + +%%TEST_GLOBALS%% + +daemon off; + +events { +} + +stream { + geo $geo { + ::1/128 loopback; + 2001:0db8::/32 test; + ::/0 world; + } + + geo $geo_delete { + ::1/128 loopback; + 2001:0db8::/32 test; + ::/0 world; + delete ::1/128; + } + + map $server_port $var { + %%PORT_8080%% "::1"; + %%PORT_8081%% "::ffff:192.0.2.1"; + } + + geo $var $geo_var { + default default; + 192.0.2.1 test; + } + + geo $var $geo_var_ranges { + ranges; + default default; + 127.0.0.1-127.0.0.2 loopback; + 192.0.2.0-192.0.2.1 test; + } + + server { + listen 127.0.0.1:8080; + proxy_pass [::1]:%%PORT_8080%%; + } + + server { + listen [::1]:%%PORT_8080%%; + return "geo:$geo + geo_delete:$geo_delete + geo_var:$geo_var + geo_var_ranges:$geo_var_ranges"; + } + + server { + listen 127.0.0.1:8081; + return "geo_var:$geo_var + geo_var_ranges:$geo_var_ranges"; + } +} + +EOF + +$t->try_run('no stream geo and/or inet6 support')->plan(6); + +############################################################################### + +my %data = stream()->read() =~ /(\w+):(\w+)/g; +is($data{geo}, 'loopback', 'geo ipv6'); +is($data{geo_delete}, 'world', 'geo ipv6 delete'); +is($data{geo_var}, 'default', 'geo ipv6 from variable'); +is($data{geo_var_ranges}, 'default', 'geo ipv6 from variable range'); + +%data = stream('127.0.0.1:' . port(8081))->read() =~ /(\w+):(\w+)/g; +is($data{geo_var}, 'test', 'geo ipv6 ipv4-mapped from variable'); +is($data{geo_var_ranges}, 'test', 'geo ipv6 ipv4-mapped from variable range'); + +###############################################################################