annotate realip.t @ 251:df984d23f9d1

Tests: improve fastcgi keepalive tests. On some platforms fastcgi_keepalive.t tests failed due to problems in handling of data split into multiple packets. Harden tests to fail on all platforms by adding more sleeps, and mark them as TODO till underlying problems are fixed. Additionally, add some padding testing.
author Maxim Dounin <mdounin@mdounin.ru>
date Fri, 25 Jan 2013 20:53:53 +0400
parents 6a0d934950bc
children a4e46d78ea6d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
216
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Tests for nginx realip module.
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 use Test::More;
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 use lib 'lib';
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 use Test::Nginx;
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 ###############################################################################
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 select STDERR; $| = 1;
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 select STDOUT; $| = 1;
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
217
ea574aae77cb Tests: unbreak geo and realip tests in jails.
Maxim Dounin <mdounin@mdounin.ru>
parents: 216
diff changeset
24 my $t = Test::Nginx->new()->has(qw/http realip/);
216
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26 $t->write_file_expand('nginx.conf', <<'EOF');
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28 %%TEST_GLOBALS%%
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29
249
6a0d934950bc Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 247
diff changeset
30 daemon off;
216
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 events {
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33 }
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 http {
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36 %%TEST_GLOBALS_HTTP%%
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37
245
7189255c1b91 Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents: 217
diff changeset
38 add_header X-IP $remote_addr;
216
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 real_ip_header X-Forwarded-For;
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41 server {
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42 listen 127.0.0.1:8080;
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43 server_name localhost;
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44
245
7189255c1b91 Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents: 217
diff changeset
45 location /1 {
7189255c1b91 Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents: 217
diff changeset
46 set_real_ip_from 127.0.0.1/32;
7189255c1b91 Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents: 217
diff changeset
47 set_real_ip_from 10.0.1.0/24;
7189255c1b91 Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents: 217
diff changeset
48 real_ip_recursive off;
7189255c1b91 Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents: 217
diff changeset
49 }
7189255c1b91 Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents: 217
diff changeset
50
7189255c1b91 Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents: 217
diff changeset
51 location /2 {
7189255c1b91 Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents: 217
diff changeset
52 set_real_ip_from 127.0.0.1/32;
7189255c1b91 Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents: 217
diff changeset
53 set_real_ip_from 10.0.1.0/24;
7189255c1b91 Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents: 217
diff changeset
54 real_ip_recursive on;
216
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55 }
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56 }
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57 }
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59 EOF
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61 $t->write_file('1', '');
245
7189255c1b91 Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents: 217
diff changeset
62 $t->write_file('2', '');
216
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63 $t->run();
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64
217
ea574aae77cb Tests: unbreak geo and realip tests in jails.
Maxim Dounin <mdounin@mdounin.ru>
parents: 216
diff changeset
65 plan(skip_all => 'no 127.0.0.1 on host')
ea574aae77cb Tests: unbreak geo and realip tests in jails.
Maxim Dounin <mdounin@mdounin.ru>
parents: 216
diff changeset
66 if http_get('/1') !~ /X-IP: 127.0.0.1/m;
216
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67
247
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
68 $t->plan(6);
217
ea574aae77cb Tests: unbreak geo and realip tests in jails.
Maxim Dounin <mdounin@mdounin.ru>
parents: 216
diff changeset
69
ea574aae77cb Tests: unbreak geo and realip tests in jails.
Maxim Dounin <mdounin@mdounin.ru>
parents: 216
diff changeset
70 ###############################################################################
216
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71
245
7189255c1b91 Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents: 217
diff changeset
72 like(http_xff('/1', '192.0.2.1'), qr/^X-IP: 192.0.2.1/m, 'realip');
7189255c1b91 Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents: 217
diff changeset
73 like(http_xff('/1', '10.0.0.1, 192.0.2.1'), qr/^X-IP: 192.0.2.1/m,
7189255c1b91 Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents: 217
diff changeset
74 'realip multi');
7189255c1b91 Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents: 217
diff changeset
75 like(http_xff('/1', '192.0.2.1, 10.0.1.1, 127.0.0.1'),
7189255c1b91 Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents: 217
diff changeset
76 qr/^X-IP: 127.0.0.1/m, 'realip recursive off');
247
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
77 like(http_xff('/2', '10.0.1.1, 192.0.2.1, 127.0.0.1'),
245
7189255c1b91 Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents: 217
diff changeset
78 qr/^X-IP: 192.0.2.1/m, 'realip recursive on');
216
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
79
247
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
80 TODO: {
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
81
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
82 local $TODO = 'not yet';
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
83
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
84 like(http(<<EOF), qr/^X-IP: 10.0.1.1/m, 'realip multi xff recursive off');
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
85 GET /1 HTTP/1.0
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
86 Host: localhost
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
87 X-Forwarded-For: 192.0.2.1
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
88 X-Forwarded-For: 127.0.0.1, 10.0.1.1
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
89
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
90 EOF
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
91
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
92 like(http(<<EOF), qr/^X-IP: 192.0.2.1/m, 'realip multi xff recursive on');
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
93 GET /2 HTTP/1.0
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
94 Host: localhost
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
95 X-Forwarded-For: 10.0.1.1
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
96 X-Forwarded-For: 192.0.2.1
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
97 X-Forwarded-For: 127.0.0.1
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
98
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
99 EOF
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
100
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
101 }
bf6b05f03458 Tests: add realip tests for multiple X-Forwarded-For headers.
Andrei Belov <defan@nginx.com>
parents: 245
diff changeset
102
216
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
103 ###############################################################################
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
104
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
105 sub http_xff {
245
7189255c1b91 Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents: 217
diff changeset
106 my ($uri, $xff) = @_;
216
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
107 return http(<<EOF);
245
7189255c1b91 Tests: added real_ip_recursive test.
Andrei Belov <defan@nginx.com>
parents: 217
diff changeset
108 GET $uri HTTP/1.0
216
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
109 Host: localhost
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
110 X-Forwarded-For: $xff
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
111
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
112 EOF
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
113 }
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
114
f2f37a52e42e Tests: basic tests for geo and realip modules.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
115 ###############################################################################