Mercurial > hg > nginx-tests
annotate map.t @ 572:ca54b445d982
Tests: masked nginx bug in proxy next upstream.
When iterating through several next upstreams per a worker cycle,
a previously reported event about upstream connection error may
be improperly applied to the next upstream, thus leading to the
invalid connection error. E.g., in kqueue, where the problem is
visible, this is caused by "ev->instance" that does not tolerate
more than one next upstream at once, and kevents placed on the
kqueue separately for read and write events.
The change is to limit test case to the only one next upstream.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Thu, 14 May 2015 11:54:24 +0300 |
parents | 6a0d934950bc |
children | 1f8e15e1899a |
rev | line source |
---|---|
227
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 # Tests for map module. |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 ############################################################################### |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 use warnings; |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 use strict; |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
12 use Test::More; |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 BEGIN { use FindBin; chdir($FindBin::Bin); } |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
15 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
16 use lib 'lib'; |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
17 use Test::Nginx; |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 ############################################################################### |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 select STDERR; $| = 1; |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 select STDOUT; $| = 1; |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
24 my $t = Test::Nginx->new()->has(qw/http map/)->plan(5); |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
25 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
26 $t->write_file_expand('nginx.conf', <<'EOF'); |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
27 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
28 %%TEST_GLOBALS%% |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
29 |
249
6a0d934950bc
Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
241
diff
changeset
|
30 daemon off; |
227
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 events { |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
33 } |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
34 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 http { |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
36 %%TEST_GLOBALS_HTTP%% |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
38 map $args $x { |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
39 default 0; |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
40 foo bar; |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
41 } |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
42 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
43 map $args $y { |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
44 hostnames; |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
45 default 0; |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
46 example.com foo; |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
47 example.* wildcard; |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
48 } |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
49 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
50 server { |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
51 listen 127.0.0.1:8080; |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
52 server_name localhost; |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
53 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
54 location / { |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
55 add_header X-Foo "x:$x y:$y\n"; |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
56 } |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
57 } |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
58 } |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
59 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
60 EOF |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
61 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
62 $t->write_file('index.html', ''); |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
63 $t->run(); |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
64 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
65 ############################################################################### |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
66 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
67 like(http_get('/?1'), qr/x:0 y:0/, 'map default'); |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
68 like(http_get('/?foo'), qr/x:bar y:0/, 'map foo bar'); |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
69 like(http_get('/?example.com'), qr/x:0 y:foo/, 'map example.com foo'); |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
70 like(http_get('/?example.org'), qr/x:0 y:wild/, 'map example.org wildcard'); |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
71 like(http_get('/?example.com.'), qr/x:0 y:foo/, 'map example.com. foo'); |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
72 |
16371849bd07
Tests: map module basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
73 ############################################################################### |