changeset 1015:1d205c07ef59

Tests: more geo ranges tests.
author Andrey Zelenkov <zelenkov@nginx.com>
date Fri, 26 Aug 2016 16:31:44 +0300
parents 61fbb879446a
children 2cf72e8a1a6b
files geo.t stream_geo.t
diffstat 2 files changed, 116 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/geo.t
+++ b/geo.t
@@ -65,11 +65,13 @@ http {
     geo $arg_ip $geo_arg_ranges {
         ranges;
         default                default;
+        127.0.0.0-127.0.0.1    loopback;
 
         # 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;
+        10.12.3.0-10.13.2.255  foo2;
         delete                 10.10.3.0-10.11.2.255;
     }
 
@@ -120,6 +122,42 @@ http {
         delete               127.0.0.0-127.1.0.0;
     }
 
+    geo $geo_before {
+        ranges;
+        default                default;
+        127.0.0.1-127.0.0.255  loopback;
+        127.0.0.0-127.0.0.0    test;
+    }
+
+    geo $geo_after {
+        ranges;
+        default                default;
+        127.0.0.0-127.0.0.1    loopback;
+        127.0.0.2-127.0.0.255  test;
+    }
+
+    geo $geo_insert {
+        ranges;
+        default                default;
+        127.0.0.0-127.0.0.255  test;
+        127.0.0.1-127.0.0.2    test2;
+        127.0.0.1-127.0.0.1    loopback;
+    }
+
+    geo $geo_insert_before {
+        ranges;
+        default                default;
+        127.0.0.0-127.0.0.255  test;
+        127.0.0.0-127.0.0.1    loopback;
+    }
+
+    geo $geo_insert_after {
+        ranges;
+        default                default;
+        127.0.0.0-127.0.0.255  test;
+        127.0.0.1-127.0.0.255  loopback;
+     }
+
     server {
         listen       127.0.0.1:8080;
         server_name  localhost;
@@ -131,6 +169,11 @@ http {
             add_header X-Del  $geo_delete;
             add_header X-Ran  $geo_ranges;
             add_header X-RIn  $geo_ranges_include;
+            add_header X-ABe  $geo_before;
+            add_header X-AAf  $geo_after;
+            add_header X-Ins  $geo_insert;
+            add_header X-IBe  $geo_insert_before;
+            add_header X-IAf  $geo_insert_after;
             add_header X-Arg  $geo_from_arg;
             add_header X-ARa  $geo_arg_ranges;
             add_header X-XFF  $geo_proxy;
@@ -156,7 +199,7 @@ EOF
 plan(skip_all => 'no 127.0.0.1 on host')
 	if http_get('/1') !~ /X-IP: 127.0.0.1/m;
 
-$t->plan(15);
+$t->plan(22);
 
 ###############################################################################
 
@@ -176,8 +219,16 @@ like(http_get('/2'), qr/^X-RD2: default/
 
 }
 
+like($r, qr/^X-ABe: loopback/m, 'geo ranges add before');
+like($r, qr/^X-AAf: loopback/m, 'geo ranges add after');
+like($r, qr/^X-Ins: loopback/m, 'geo ranges insert');
+like($r, qr/^X-IBe: loopback/m, 'geo ranges insert before');
+like($r, qr/^X-IAf: loopback/m, 'geo ranges insert after');
+
 like(http_get('/1?ip=192.0.2.1'), qr/^X-Arg: test/m, 'geo from variable');
 like(http_get('/1?ip=10.0.0.1'), qr/^X-Arg: default/m, 'geo default');
+like(http_get('/1?ip=10.0.0.1'), qr/^X-ARa: default/m, 'geo ranges default');
+like(http_get('/1?ip=10.13.2.1'), qr/^X-ARa: foo2/m, 'geo ranges add');
 
 TODO: {
 todo_skip 'use-after-free', 1 unless $ENV{TEST_NGINX_UNSAFE}
--- a/stream_geo.t
+++ b/stream_geo.t
@@ -65,6 +65,8 @@ stream {
         %%PORT_8080%%  "192.0.2.1";
         %%PORT_8081%%  "10.0.0.1";
         %%PORT_8085%%  "10.11.2.1";
+        %%PORT_8086%%  "loopback";
+        %%PORT_8087%%  "10.13.2.1";
     }
 
     geo $var $geo_from_var {
@@ -76,11 +78,13 @@ stream {
     geo $var $geo_var_ranges {
         ranges;
         default                default;
+        127.0.0.0-127.0.0.1    loopback;
 
         # 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;
+        10.12.3.0-10.13.2.255  foo2;
         delete                 10.10.3.0-10.11.2.255;
     }
 
@@ -122,6 +126,42 @@ stream {
         delete               127.0.0.0-127.1.0.0;
     }
 
+    geo $geo_before {
+        ranges;
+        default                default;
+        127.0.0.1-127.0.0.255  loopback;
+        127.0.0.0-127.0.0.0    test;
+    }
+
+    geo $geo_after {
+        ranges;
+        default                default;
+        127.0.0.0-127.0.0.1    loopback;
+        127.0.0.2-127.0.0.255  test;
+    }
+
+    geo $geo_insert {
+        ranges;
+        default                default;
+        127.0.0.0-127.0.0.255  test;
+        127.0.0.1-127.0.0.2    test2;
+        127.0.0.1-127.0.0.1    loopback;
+    }
+
+    geo $geo_insert_before {
+        ranges;
+        default                default;
+        127.0.0.0-127.0.0.255  test;
+        127.0.0.0-127.0.0.1    loopback;
+    }
+
+    geo $geo_insert_after {
+        ranges;
+        default                default;
+        127.0.0.0-127.0.0.255  test;
+        127.0.0.1-127.0.0.255  loopback;
+     }
+
     server {
         listen  127.0.0.1:8080;
         return  "geo:$geo
@@ -129,6 +169,11 @@ stream {
                  geo_delete:$geo_delete
                  geo_ranges:$geo_ranges
                  geo_ranges_include:$geo_ranges_include
+                 geo_before:$geo_before
+                 geo_after:$geo_after
+                 geo_insert:$geo_insert
+                 geo_insert_before:$geo_insert_before
+                 geo_insert_after:$geo_insert_after
                  geo_from_addr:$geo_from_addr
                  geo_from_var:$geo_from_var";
     }
@@ -157,6 +202,16 @@ stream {
         listen  127.0.0.1:8085;
         return  $geo_var_ranges;
     }
+
+    server {
+        listen  127.0.0.1:8086;
+        return  $geo_var_ranges;
+    }
+
+    server {
+        listen  127.0.0.1:8087;
+        return  $geo_var_ranges;
+    }
 }
 
 EOF
@@ -164,7 +219,7 @@ 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(12);
+$t->try_run('no stream geo')->plan(19);
 
 ###############################################################################
 
@@ -184,6 +239,12 @@ is(stream('127.0.0.1:' . port(8084))->re
 
 }
 
+is($data{geo_before}, 'loopback', 'geo ranges add before');
+is($data{geo_after}, 'loopback', 'geo ranges add after');
+is($data{geo_insert}, 'loopback', 'geo ranges insert');
+is($data{geo_insert_before}, 'loopback', 'geo ranges insert before');
+is($data{geo_insert_after}, 'loopback', 'geo ranges insert after');
+
 is($data{geo_from_addr}, 'loopback', 'geo from addr');
 is($data{geo_from_var}, 'test', 'geo from var');
 
@@ -198,5 +259,7 @@ is(stream('127.0.0.1:' . port(8085))->re
 
 is(stream('127.0.0.1:' . port(8081))->read(), 'default', 'geo default');
 is(stream('127.0.0.1:' . port(8082))->read(), 'world', 'geo world');
+is(stream('127.0.0.1:' . port(8086))->read(), 'default', 'geo ranges default');
+is(stream('127.0.0.1:' . port(8087))->read(), 'foo2', 'geo ranges add');
 
 ###############################################################################