Mercurial > hg > nginx-tests
comparison stream_geo.t @ 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 | |
children | 9b87810c75ca |
comparison
equal
deleted
inserted
replaced
977:6abe7be6d2c1 | 978:04cb1849005a |
---|---|
1 #!/usr/bin/perl | |
2 | |
3 # (C) Maxim Dounin | |
4 # (C) Sergey Kandaurov | |
5 # (C) Nginx, Inc. | |
6 | |
7 # Tests for stream geo module. | |
8 | |
9 ############################################################################### | |
10 | |
11 use warnings; | |
12 use strict; | |
13 | |
14 use Test::More; | |
15 | |
16 BEGIN { use FindBin; chdir($FindBin::Bin); } | |
17 | |
18 use lib 'lib'; | |
19 use Test::Nginx; | |
20 use Test::Nginx::Stream qw/ stream /; | |
21 | |
22 ############################################################################### | |
23 | |
24 select STDERR; $| = 1; | |
25 select STDOUT; $| = 1; | |
26 | |
27 my $t = Test::Nginx->new()->has(qw/stream stream_return stream_map stream_geo/); | |
28 | |
29 $t->write_file_expand('nginx.conf', <<'EOF'); | |
30 | |
31 %%TEST_GLOBALS%% | |
32 | |
33 daemon off; | |
34 | |
35 events { | |
36 } | |
37 | |
38 stream { | |
39 geo $geo { | |
40 127.0.0.0/8 loopback; | |
41 192.0.2.0/24 test; | |
42 0.0.0.0/0 world; | |
43 } | |
44 | |
45 geo $remote_addr $geo_from_addr { | |
46 127.0.0.0/8 loopback; | |
47 192.0.2.0/24 test; | |
48 } | |
49 | |
50 map $server_port $var { | |
51 %%PORT_8080%% "192.0.2.1"; | |
52 %%PORT_8081%% "10.0.0.1"; | |
53 } | |
54 | |
55 geo $var $geo_from_var { | |
56 default default; | |
57 127.0.0.0/8 loopback; | |
58 192.0.2.0/24 test; | |
59 } | |
60 | |
61 geo $var $geo_world { | |
62 127.0.0.0/8 loopback; | |
63 192.0.2.0/24 test; | |
64 0.0.0.0/0 world; | |
65 } | |
66 | |
67 geo $geo_ranges { | |
68 ranges; | |
69 default default; | |
70 127.0.0.0-127.255.255.255 loopback; | |
71 192.0.2.0-192.0.2.255 test; | |
72 } | |
73 | |
74 server { | |
75 listen 127.0.0.1:8080; | |
76 return $geo:$geo_from_addr:$geo_from_var:$geo_ranges; | |
77 } | |
78 | |
79 server { | |
80 listen 127.0.0.1:8081; | |
81 return $geo_from_var; | |
82 } | |
83 | |
84 server { | |
85 listen 127.0.0.1:8082; | |
86 return $geo_world; | |
87 } | |
88 } | |
89 | |
90 EOF | |
91 | |
92 $t->try_run('no stream geo'); | |
93 $t->plan(6); | |
94 | |
95 ############################################################################### | |
96 | |
97 my @data = split /:/, stream()->read(); | |
98 is($data[0], 'loopback', 'geo'); | |
99 is($data[1], 'loopback', 'geo from addr'); | |
100 is($data[2], 'test', 'geo from var'); | |
101 is($data[3], 'loopback', 'geo ranges'); | |
102 | |
103 is(stream('127.0.0.1:' . port(8081))->read(), 'default', 'geo default'); | |
104 is(stream('127.0.0.1:' . port(8082))->read(), 'world', 'geo world'); | |
105 | |
106 ############################################################################### |