annotate stream_geo.t @ 1236:93f749c1d5c5

Tests: fixed parallel tests execution with UDP. Previously, when checking ports availability, a UDP socket was always created first, then a TCP socket was created. On success, one of UDP and TCP sockets was closed (depending on the "udp" option) and the second one was used to busy this port in other scripts. This lead to the following problem: in an attempt to reopen a UDP socket used in a given testing script it could be stolen by another script as part of checking ports availability. To solve this problem, UDP and TCP ports were split into two non-overlapping ranges: TCP ports are only used in the range 8000-8499, and UDP ports - in the range 8500-8999. In addition, the order of creating sockets in UDP tests has been reversed: now a TCP socket used as a lock precedes a UDP socket.
author Andrey Zelenkov <zelenkov@nginx.com>
date Thu, 26 Oct 2017 18:00:21 +0300
parents 3fc6817cd84a
children 766bcbb632ee
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
1014
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
52 geo $geo_delete {
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
53 127.0.0.0/8 loopback;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
54 192.0.2.0/24 test;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
55 0.0.0.0/0 world;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
56 delete 127.0.0.0/8;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
57 }
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
58
978
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
59 geo $remote_addr $geo_from_addr {
1012
a0758fe11465 Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1011
diff changeset
60 127.0.0.0/8 loopback;
a0758fe11465 Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1011
diff changeset
61 192.0.2.0/24 test;
978
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
62 }
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
63
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
64 map $server_port $var {
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
65 %%PORT_8080%% "192.0.2.1";
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
66 %%PORT_8081%% "10.0.0.1";
1014
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
67 %%PORT_8085%% "10.11.2.1";
1015
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
68 %%PORT_8086%% "loopback";
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
69 %%PORT_8087%% "10.13.2.1";
978
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
70 }
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
71
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
72 geo $var $geo_from_var {
1012
a0758fe11465 Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1011
diff changeset
73 default default;
a0758fe11465 Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1011
diff changeset
74 127.0.0.0/8 loopback;
a0758fe11465 Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1011
diff changeset
75 192.0.2.0/24 test;
978
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76 }
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
77
1014
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
78 geo $var $geo_var_ranges {
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
79 ranges;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
80 default default;
1015
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
81 127.0.0.0-127.0.0.1 loopback;
1014
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
82
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
83 # ranges with two /16 networks
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
84 # the latter network has greater two least octets
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
85 # (see 1301a58b5dac for details)
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
86 10.10.3.0-10.11.2.255 foo;
1015
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
87 10.12.3.0-10.13.2.255 foo2;
1014
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
88 delete 10.10.3.0-10.11.2.255;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
89 }
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
90
978
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
91 geo $var $geo_world {
1012
a0758fe11465 Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1011
diff changeset
92 127.0.0.0/8 loopback;
a0758fe11465 Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1011
diff changeset
93 192.0.2.0/24 test;
a0758fe11465 Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1011
diff changeset
94 0.0.0.0/0 world;
978
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
95 }
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 geo $geo_ranges {
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
98 ranges;
1012
a0758fe11465 Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1011
diff changeset
99 default default;
978
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
100 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
101 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
102 }
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
103
1013
8f92d97cf40e Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1012
diff changeset
104 geo $geo_ranges_include {
8f92d97cf40e Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1012
diff changeset
105 ranges;
8f92d97cf40e Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1012
diff changeset
106 default default;
8f92d97cf40e Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1012
diff changeset
107 include geo-ranges.conf;
8f92d97cf40e Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1012
diff changeset
108 192.0.2.0-192.0.2.255 test;
8f92d97cf40e Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1012
diff changeset
109 }
8f92d97cf40e Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1012
diff changeset
110
1014
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
111 geo $geo_ranges_delete {
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
112 ranges;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
113 default default;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
114 127.0.0.0-127.0.0.255 test;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
115 127.0.0.1-127.0.0.1 loopback;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
116 delete 127.0.0.0-127.0.0.0;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
117 delete 127.0.0.2-127.0.0.255;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
118 delete 127.0.0.1-127.0.0.1;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
119 }
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
120
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
121 # delete range with two /16
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
122 geo $geo_ranges_delete_2 {
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
123 ranges;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
124 default default;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
125 127.0.0.0-127.1.0.0 loopback;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
126 delete 127.0.0.0-127.1.0.0;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
127 }
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
128
1015
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
129 geo $geo_before {
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
130 ranges;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
131 default default;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
132 127.0.0.1-127.0.0.255 loopback;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
133 127.0.0.0-127.0.0.0 test;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
134 }
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
135
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
136 geo $geo_after {
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
137 ranges;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
138 default default;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
139 127.0.0.0-127.0.0.1 loopback;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
140 127.0.0.2-127.0.0.255 test;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
141 }
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
142
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
143 geo $geo_insert {
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
144 ranges;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
145 default default;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
146 127.0.0.0-127.0.0.255 test;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
147 127.0.0.1-127.0.0.2 test2;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
148 127.0.0.1-127.0.0.1 loopback;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
149 }
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
150
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
151 geo $geo_insert_before {
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
152 ranges;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
153 default default;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
154 127.0.0.0-127.0.0.255 test;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
155 127.0.0.0-127.0.0.1 loopback;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
156 }
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
157
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
158 geo $geo_insert_after {
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
159 ranges;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
160 default default;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
161 127.0.0.0-127.0.0.255 test;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
162 127.0.0.1-127.0.0.255 loopback;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
163 }
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
164
978
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
165 server {
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
166 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
167 return "geo:$geo
1013
8f92d97cf40e Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1012
diff changeset
168 geo_include:$geo_include
1014
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
169 geo_delete:$geo_delete
1012
a0758fe11465 Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1011
diff changeset
170 geo_ranges:$geo_ranges
1013
8f92d97cf40e Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1012
diff changeset
171 geo_ranges_include:$geo_ranges_include
1015
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
172 geo_before:$geo_before
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
173 geo_after:$geo_after
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
174 geo_insert:$geo_insert
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
175 geo_insert_before:$geo_insert_before
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
176 geo_insert_after:$geo_insert_after
1011
9b87810c75ca Tests: simplified variables parsing in stream_geo.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 978
diff changeset
177 geo_from_addr:$geo_from_addr
1012
a0758fe11465 Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1011
diff changeset
178 geo_from_var:$geo_from_var";
978
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
179 }
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
180
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
181 server {
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
182 listen 127.0.0.1:8081;
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
183 return $geo_from_var;
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
184 }
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
185
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
186 server {
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
187 listen 127.0.0.1:8082;
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
188 return $geo_world;
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
189 }
1014
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
190
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
191 server {
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
192 listen 127.0.0.1:8083;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
193 return $geo_ranges_delete;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
194 }
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
195
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
196 server {
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
197 listen 127.0.0.1:8084;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
198 return $geo_ranges_delete_2;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
199 }
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
200
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
201 server {
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
202 listen 127.0.0.1:8085;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
203 return $geo_var_ranges;
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
204 }
1015
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
205
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
206 server {
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
207 listen 127.0.0.1:8086;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
208 return $geo_var_ranges;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
209 }
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
210
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
211 server {
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
212 listen 127.0.0.1:8087;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
213 return $geo_var_ranges;
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
214 }
978
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
215 }
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
216
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
217 EOF
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
218
1013
8f92d97cf40e Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1012
diff changeset
219 $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
220 $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
221
1044
1fe8d33f75ad Tests: split out geo tests with binary base and skip by default.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1016
diff changeset
222 $t->try_run('no stream geo')->plan(19);
978
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
223
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
224 ###############################################################################
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
225
1235
3fc6817cd84a Tests: explicit peer port in stream tests now required.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1044
diff changeset
226 my %data = stream('127.0.0.1:' . port(8080))->read() =~ /(\w+):(\w+)/g;
1011
9b87810c75ca Tests: simplified variables parsing in stream_geo.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 978
diff changeset
227 is($data{geo}, 'loopback', 'geo');
1013
8f92d97cf40e Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1012
diff changeset
228 is($data{geo_include}, 'loopback', 'geo include');
1014
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
229 is($data{geo_delete}, 'world', 'geo delete');
1012
a0758fe11465 Tests: style and rearrangements in geo tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1011
diff changeset
230 is($data{geo_ranges}, 'loopback', 'geo ranges');
1013
8f92d97cf40e Tests: geo include tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1012
diff changeset
231 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
232
1014
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
233 TODO: {
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
234 todo_skip 'use-after-free', 2 unless $ENV{TEST_NGINX_UNSAFE}
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
235 or $t->has_version('1.11.4');
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
236
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
237 is(stream('127.0.0.1:' . port(8083))->read(), 'default', 'geo ranges delete');
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
238 is(stream('127.0.0.1:' . port(8084))->read(), 'default', 'geo ranges delete 2');
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
239
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
240 }
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
241
1015
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
242 is($data{geo_before}, 'loopback', 'geo ranges add before');
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
243 is($data{geo_after}, 'loopback', 'geo ranges add after');
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
244 is($data{geo_insert}, 'loopback', 'geo ranges insert');
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
245 is($data{geo_insert_before}, 'loopback', 'geo ranges insert before');
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
246 is($data{geo_insert_after}, 'loopback', 'geo ranges insert after');
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
247
1011
9b87810c75ca Tests: simplified variables parsing in stream_geo.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 978
diff changeset
248 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
249 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
250
1014
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
251 TODO: {
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
252 todo_skip 'use-after-free', 1 unless $ENV{TEST_NGINX_UNSAFE}
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
253 or $t->has_version('1.11.4');
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
254
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
255 is(stream('127.0.0.1:' . port(8085))->read(), 'default',
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
256 'geo delete range from variable');
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
257
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
258 }
61fbb879446a Tests: geo delete tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1013
diff changeset
259
978
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
260 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
261 is(stream('127.0.0.1:' . port(8082))->read(), 'world', 'geo world');
1015
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
262 is(stream('127.0.0.1:' . port(8086))->read(), 'default', 'geo ranges default');
1d205c07ef59 Tests: more geo ranges tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 1014
diff changeset
263 is(stream('127.0.0.1:' . port(8087))->read(), 'foo2', 'geo ranges add');
978
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
264
04cb1849005a Tests: basic tests for stream geo module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
265 ###############################################################################