Mercurial > hg > nginx-tests
annotate stream_geo.t @ 1013:8f92d97cf40e
Tests: geo include tests.
author | Andrey Zelenkov <zelenkov@nginx.com> |
---|---|
date | Fri, 26 Aug 2016 16:31:08 +0300 |
parents | a0758fe11465 |
children | 61fbb879446a |
rev | line source |
---|---|
978
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
2 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
4 # (C) Sergey Kandaurov |
1013
8f92d97cf40e
Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1012
diff
changeset
|
5 # (C) Andrey Zelenkov |
978
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
6 # (C) Nginx, Inc. |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
7 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
8 # Tests for stream geo module. |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
9 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
10 ############################################################################### |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
11 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
12 use warnings; |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
13 use strict; |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
14 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
15 use Test::More; |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
16 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
17 BEGIN { use FindBin; chdir($FindBin::Bin); } |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
18 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
19 use lib 'lib'; |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
20 use Test::Nginx; |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
21 use Test::Nginx::Stream qw/ stream /; |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
22 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
23 ############################################################################### |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
24 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
25 select STDERR; $| = 1; |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
26 select STDOUT; $| = 1; |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
27 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
28 my $t = Test::Nginx->new()->has(qw/stream stream_return stream_map stream_geo/); |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
29 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
30 $t->write_file_expand('nginx.conf', <<'EOF'); |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
31 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
32 %%TEST_GLOBALS%% |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
33 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
34 daemon off; |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
35 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
36 events { |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
37 } |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
38 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
39 stream { |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
40 geo $geo { |
1012
a0758fe11465
Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1011
diff
changeset
|
41 127.0.0.0/8 loopback; |
a0758fe11465
Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1011
diff
changeset
|
42 192.0.2.0/24 test; |
a0758fe11465
Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1011
diff
changeset
|
43 0.0.0.0/0 world; |
978
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
44 } |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
45 |
1013
8f92d97cf40e
Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1012
diff
changeset
|
46 geo $geo_include { |
8f92d97cf40e
Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1012
diff
changeset
|
47 include geo.conf; |
8f92d97cf40e
Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1012
diff
changeset
|
48 192.0.2.0/24 test; |
8f92d97cf40e
Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1012
diff
changeset
|
49 0.0.0.0/0 world; |
8f92d97cf40e
Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1012
diff
changeset
|
50 } |
8f92d97cf40e
Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1012
diff
changeset
|
51 |
978
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
52 geo $remote_addr $geo_from_addr { |
1012
a0758fe11465
Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1011
diff
changeset
|
53 127.0.0.0/8 loopback; |
a0758fe11465
Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1011
diff
changeset
|
54 192.0.2.0/24 test; |
978
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
55 } |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
56 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
57 map $server_port $var { |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
58 %%PORT_8080%% "192.0.2.1"; |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
59 %%PORT_8081%% "10.0.0.1"; |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
60 } |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
61 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
62 geo $var $geo_from_var { |
1012
a0758fe11465
Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1011
diff
changeset
|
63 default default; |
a0758fe11465
Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1011
diff
changeset
|
64 127.0.0.0/8 loopback; |
a0758fe11465
Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1011
diff
changeset
|
65 192.0.2.0/24 test; |
978
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
66 } |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
67 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
68 geo $var $geo_world { |
1012
a0758fe11465
Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1011
diff
changeset
|
69 127.0.0.0/8 loopback; |
a0758fe11465
Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1011
diff
changeset
|
70 192.0.2.0/24 test; |
a0758fe11465
Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1011
diff
changeset
|
71 0.0.0.0/0 world; |
978
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
72 } |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
73 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
74 geo $geo_ranges { |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
75 ranges; |
1012
a0758fe11465
Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1011
diff
changeset
|
76 default default; |
978
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
77 127.0.0.0-127.255.255.255 loopback; |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
78 192.0.2.0-192.0.2.255 test; |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
79 } |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
80 |
1013
8f92d97cf40e
Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1012
diff
changeset
|
81 geo $geo_ranges_include { |
8f92d97cf40e
Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1012
diff
changeset
|
82 ranges; |
8f92d97cf40e
Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1012
diff
changeset
|
83 default default; |
8f92d97cf40e
Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1012
diff
changeset
|
84 include geo-ranges.conf; |
8f92d97cf40e
Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1012
diff
changeset
|
85 192.0.2.0-192.0.2.255 test; |
8f92d97cf40e
Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1012
diff
changeset
|
86 } |
8f92d97cf40e
Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1012
diff
changeset
|
87 |
978
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
88 server { |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
89 listen 127.0.0.1:8080; |
1011
9b87810c75ca
Tests: simplified variables parsing in stream_geo.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
978
diff
changeset
|
90 return "geo:$geo |
1013
8f92d97cf40e
Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1012
diff
changeset
|
91 geo_include:$geo_include |
1012
a0758fe11465
Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1011
diff
changeset
|
92 geo_ranges:$geo_ranges |
1013
8f92d97cf40e
Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1012
diff
changeset
|
93 geo_ranges_include:$geo_ranges_include |
1011
9b87810c75ca
Tests: simplified variables parsing in stream_geo.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
978
diff
changeset
|
94 geo_from_addr:$geo_from_addr |
1012
a0758fe11465
Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1011
diff
changeset
|
95 geo_from_var:$geo_from_var"; |
978
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
96 } |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
97 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
98 server { |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
99 listen 127.0.0.1:8081; |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
100 return $geo_from_var; |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
101 } |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
102 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
103 server { |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
104 listen 127.0.0.1:8082; |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
105 return $geo_world; |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
106 } |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
107 } |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
108 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
109 EOF |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
110 |
1013
8f92d97cf40e
Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1012
diff
changeset
|
111 $t->write_file('geo.conf', '127.0.0.0/8 loopback;'); |
8f92d97cf40e
Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1012
diff
changeset
|
112 $t->write_file('geo-ranges.conf', '127.0.0.0-127.255.255.255 loopback;'); |
8f92d97cf40e
Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1012
diff
changeset
|
113 |
8f92d97cf40e
Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1012
diff
changeset
|
114 $t->try_run('no stream geo')->plan(8); |
978
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
115 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
116 ############################################################################### |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
117 |
1011
9b87810c75ca
Tests: simplified variables parsing in stream_geo.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
978
diff
changeset
|
118 my %data = stream()->read() =~ /(\w+):(\w+)/g; |
9b87810c75ca
Tests: simplified variables parsing in stream_geo.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
978
diff
changeset
|
119 is($data{geo}, 'loopback', 'geo'); |
1013
8f92d97cf40e
Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1012
diff
changeset
|
120 is($data{geo_include}, 'loopback', 'geo include'); |
1012
a0758fe11465
Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1011
diff
changeset
|
121 is($data{geo_ranges}, 'loopback', 'geo ranges'); |
1013
8f92d97cf40e
Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1012
diff
changeset
|
122 is($data{geo_ranges_include}, 'loopback', 'geo ranges include'); |
1012
a0758fe11465
Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1011
diff
changeset
|
123 |
1011
9b87810c75ca
Tests: simplified variables parsing in stream_geo.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
978
diff
changeset
|
124 is($data{geo_from_addr}, 'loopback', 'geo from addr'); |
9b87810c75ca
Tests: simplified variables parsing in stream_geo.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
978
diff
changeset
|
125 is($data{geo_from_var}, 'test', 'geo from var'); |
978
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
126 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
127 is(stream('127.0.0.1:' . port(8081))->read(), 'default', 'geo default'); |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
128 is(stream('127.0.0.1:' . port(8082))->read(), 'world', 'geo world'); |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
129 |
04cb1849005a
Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
130 ############################################################################### |