Mercurial > hg > nginx-tests
changeset 978:04cb1849005a
Tests: basic tests for stream geo module.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Wed, 13 Jul 2016 13:25:33 +0300 |
parents | 6abe7be6d2c1 |
children | ef6be3201851 |
files | lib/Test/Nginx.pm stream_geo.t |
diffstat | 2 files changed, 108 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/lib/Test/Nginx.pm Wed Jul 13 13:25:33 2016 +0300 +++ b/lib/Test/Nginx.pm Wed Jul 13 13:25:33 2016 +0300 @@ -166,6 +166,8 @@ stream => '--with-stream((?!\S)|=dynamic)', stream_access => '(?s)^(?!.*--without-stream_access_module)', + stream_geo + => '(?s)^(?!.*--without-stream_geo_module)', stream_limit_conn => '(?s)^(?!.*--without-stream_limit_conn_module)', stream_map
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/stream_geo.t Wed Jul 13 13:25:33 2016 +0300 @@ -0,0 +1,106 @@ +#!/usr/bin/perl + +# (C) Maxim Dounin +# (C) Sergey Kandaurov +# (C) Nginx, Inc. + +# Tests for stream geo module. + +############################################################################### + +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/); + +$t->write_file_expand('nginx.conf', <<'EOF'); + +%%TEST_GLOBALS%% + +daemon off; + +events { +} + +stream { + geo $geo { + 127.0.0.0/8 loopback; + 192.0.2.0/24 test; + 0.0.0.0/0 world; + } + + geo $remote_addr $geo_from_addr { + 127.0.0.0/8 loopback; + 192.0.2.0/24 test; + } + + map $server_port $var { + %%PORT_8080%% "192.0.2.1"; + %%PORT_8081%% "10.0.0.1"; + } + + geo $var $geo_from_var { + default default; + 127.0.0.0/8 loopback; + 192.0.2.0/24 test; + } + + geo $var $geo_world { + 127.0.0.0/8 loopback; + 192.0.2.0/24 test; + 0.0.0.0/0 world; + } + + geo $geo_ranges { + ranges; + default default; + 127.0.0.0-127.255.255.255 loopback; + 192.0.2.0-192.0.2.255 test; + } + + server { + listen 127.0.0.1:8080; + return $geo:$geo_from_addr:$geo_from_var:$geo_ranges; + } + + server { + listen 127.0.0.1:8081; + return $geo_from_var; + } + + server { + listen 127.0.0.1:8082; + return $geo_world; + } +} + +EOF + +$t->try_run('no stream geo'); +$t->plan(6); + +############################################################################### + +my @data = split /:/, stream()->read(); +is($data[0], 'loopback', 'geo'); +is($data[1], 'loopback', 'geo from addr'); +is($data[2], 'test', 'geo from var'); +is($data[3], 'loopback', 'geo ranges'); + +is(stream('127.0.0.1:' . port(8081))->read(), 'default', 'geo default'); +is(stream('127.0.0.1:' . port(8082))->read(), 'world', 'geo world'); + +###############################################################################