Mercurial > hg > nginx-tests
diff stream_geo.t @ 1014:61fbb879446a
Tests: geo delete tests.
author | Andrey Zelenkov <zelenkov@nginx.com> |
---|---|
date | Fri, 26 Aug 2016 16:31:29 +0300 |
parents | 8f92d97cf40e |
children | 1d205c07ef59 |
line wrap: on
line diff
--- a/stream_geo.t +++ b/stream_geo.t @@ -49,6 +49,13 @@ stream { 0.0.0.0/0 world; } + geo $geo_delete { + 127.0.0.0/8 loopback; + 192.0.2.0/24 test; + 0.0.0.0/0 world; + delete 127.0.0.0/8; + } + geo $remote_addr $geo_from_addr { 127.0.0.0/8 loopback; 192.0.2.0/24 test; @@ -57,6 +64,7 @@ stream { map $server_port $var { %%PORT_8080%% "192.0.2.1"; %%PORT_8081%% "10.0.0.1"; + %%PORT_8085%% "10.11.2.1"; } geo $var $geo_from_var { @@ -65,6 +73,17 @@ stream { 192.0.2.0/24 test; } + geo $var $geo_var_ranges { + ranges; + default default; + + # ranges with two /16 networks + # the latter network has greater two least octets + # (see 1301a58b5dac for details) + 10.10.3.0-10.11.2.255 foo; + delete 10.10.3.0-10.11.2.255; + } + geo $var $geo_world { 127.0.0.0/8 loopback; 192.0.2.0/24 test; @@ -85,10 +104,29 @@ stream { 192.0.2.0-192.0.2.255 test; } + geo $geo_ranges_delete { + ranges; + default default; + 127.0.0.0-127.0.0.255 test; + 127.0.0.1-127.0.0.1 loopback; + delete 127.0.0.0-127.0.0.0; + delete 127.0.0.2-127.0.0.255; + delete 127.0.0.1-127.0.0.1; + } + + # delete range with two /16 + geo $geo_ranges_delete_2 { + ranges; + default default; + 127.0.0.0-127.1.0.0 loopback; + delete 127.0.0.0-127.1.0.0; + } + server { listen 127.0.0.1:8080; return "geo:$geo geo_include:$geo_include + geo_delete:$geo_delete geo_ranges:$geo_ranges geo_ranges_include:$geo_ranges_include geo_from_addr:$geo_from_addr @@ -104,6 +142,21 @@ stream { listen 127.0.0.1:8082; return $geo_world; } + + server { + listen 127.0.0.1:8083; + return $geo_ranges_delete; + } + + server { + listen 127.0.0.1:8084; + return $geo_ranges_delete_2; + } + + server { + listen 127.0.0.1:8085; + return $geo_var_ranges; + } } EOF @@ -111,19 +164,38 @@ EOF $t->write_file('geo.conf', '127.0.0.0/8 loopback;'); $t->write_file('geo-ranges.conf', '127.0.0.0-127.255.255.255 loopback;'); -$t->try_run('no stream geo')->plan(8); +$t->try_run('no stream geo')->plan(12); ############################################################################### my %data = stream()->read() =~ /(\w+):(\w+)/g; is($data{geo}, 'loopback', 'geo'); is($data{geo_include}, 'loopback', 'geo include'); +is($data{geo_delete}, 'world', 'geo delete'); is($data{geo_ranges}, 'loopback', 'geo ranges'); is($data{geo_ranges_include}, 'loopback', 'geo ranges include'); +TODO: { +todo_skip 'use-after-free', 2 unless $ENV{TEST_NGINX_UNSAFE} + or $t->has_version('1.11.4'); + +is(stream('127.0.0.1:' . port(8083))->read(), 'default', 'geo ranges delete'); +is(stream('127.0.0.1:' . port(8084))->read(), 'default', 'geo ranges delete 2'); + +} + is($data{geo_from_addr}, 'loopback', 'geo from addr'); is($data{geo_from_var}, 'test', 'geo from var'); +TODO: { +todo_skip 'use-after-free', 1 unless $ENV{TEST_NGINX_UNSAFE} + or $t->has_version('1.11.4'); + +is(stream('127.0.0.1:' . port(8085))->read(), 'default', + 'geo delete range from variable'); + +} + is(stream('127.0.0.1:' . port(8081))->read(), 'default', 'geo default'); is(stream('127.0.0.1:' . port(8082))->read(), 'world', 'geo world');