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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 ###############################################################################