annotate proxy_variables.t @ 1248:70192b1baf01

Tests: added exception test to stream_js.t using 'require'. The stream js tests introduced in edf5a3c9e36a fail on njs 0.1.14. It doesn't currently provide an easy way to check its version, whilst we are obligated to gracefully handle such cases somehow. With such an addition of 'require', now the tests are skipped instead on the previous versions.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 21 Nov 2017 13:16:39 +0300
parents 196d33c2bb45
children 3bc5df417f62
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
520
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
6 # Tests for http proxy module with upstream variables.
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8 ###############################################################################
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10 use warnings;
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use strict;
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13 use Test::More;
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
16
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17 use lib 'lib';
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20 ###############################################################################
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
21
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22 select STDERR; $| = 1;
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23 select STDOUT; $| = 1;
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24
1020
196d33c2bb45 Tests: removed TODO and try_run() checks for legacy versions.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 974
diff changeset
25 my $t = Test::Nginx->new()->has(qw/http proxy/)->plan(18)
520
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
26 ->write_file_expand('nginx.conf', <<'EOF');
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
27
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28 %%TEST_GLOBALS%%
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30 daemon off;
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32 events {
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33 }
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35 http {
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36 %%TEST_GLOBALS_HTTP%%
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38 upstream u {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
39 server 127.0.0.1:8081;
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
40 server 127.0.0.1:8081;
520
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
41 }
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
42
586
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
43 log_format time '$upstream_connect_time:$upstream_header_time:'
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
44 '$upstream_response_time';
520
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46 server {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
47 listen 127.0.0.1:8080;
520
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48 server_name localhost;
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49
586
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
50 add_header X-Connect $upstream_connect_time;
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
51 add_header X-Header $upstream_header_time;
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
52 add_header X-Response $upstream_response_time;
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
53
520
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
54 location / {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
55 proxy_pass http://127.0.0.1:8081;
520
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56 access_log %%TESTDIR%%/time.log time;
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57 }
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
59 location /pnu {
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
60 proxy_pass http://u/bad;
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
61 }
676
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
62
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
63 location /vars {
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
64 proxy_pass http://127.0.0.1:8080/stub;
676
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
65
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
66 add_header X-Proxy-Host $proxy_host;
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
67 add_header X-Proxy-Port $proxy_port;
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
68 add_header X-Proxy-Forwarded $proxy_add_x_forwarded_for;
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
69 }
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
70
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
71 location /stub { }
520
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
72 }
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
73 }
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
74
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
75 EOF
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76
676
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
77 $t->write_file('stub', '');
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
78 $t->run_daemon(\&http_daemon, port(8081));
1020
196d33c2bb45 Tests: removed TODO and try_run() checks for legacy versions.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 974
diff changeset
79 $t->run();
586
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
80
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
81 $t->waitforsocket('127.0.0.1:' . port(8081));
520
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
82
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83 ###############################################################################
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
84
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
85 my $re = qr/(\d\.\d{3})/;
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
86 my $p0 = port(8080);
586
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
87 my ($ct, $ht, $rt, $ct2, $ht2, $rt2);
520
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
88
952
e9064d691790 Tests: converted tests to run in parallel.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 676
diff changeset
89 like(http_get('/vars'), qr/X-Proxy-Host:\s127\.0\.0\.1:$p0/, 'proxy_host');
e9064d691790 Tests: converted tests to run in parallel.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 676
diff changeset
90 like(http_get('/vars'), qr/X-Proxy-Port:\s$p0/, 'proxy_port');
676
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
91 like(http_xff('/vars', '192.0.2.1'), qr/X-Proxy-Forwarded:.*192\.0\.2\.1/,
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
92 'proxy_add_x_forwarded_for');
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
93
586
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
94 ($ct, $ht) = get('/header');
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
95 cmp_ok($ct, '<', 1, 'connect time - slow response header');
520
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
96 cmp_ok($ht, '>=', 1, 'header time - slow response header');
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
97
586
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
98 ($ct, $ht) = get('/body');
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
99 cmp_ok($ct, '<', 1, 'connect time - slow response body');
520
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
100 cmp_ok($ht, '<', 1, 'header time - slow response body');
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
101
586
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
102 ($ct, $ct2, $ht, $ht2, $rt) = get('/pnu', many => 1);
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
103 cmp_ok($ct, '<', 1, 'connect time - next');
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
104 cmp_ok($ct2, '<', 1, 'connect time - next 2');
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
105 cmp_ok($ht, '>=', 1, 'header time - next');
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
106 cmp_ok($ht2, '<', 1, 'header time - next 2');
520
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
107 is($ht, $rt, 'header time - bad response');
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
108
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
109 $t->stop();
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
110
586
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
111 ($ct, $ht, $rt, $ct2, $ht2, $rt2)
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
112 = $t->read_file('time.log') =~ /^$re:$re:$re\n$re:$re:$re$/;
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
113
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
114 cmp_ok($ct, '<', 1, 'connect time log - slow response header');
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
115 cmp_ok($ct2, '<', 1, 'connect time log - slow response body');
520
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
116
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
117 cmp_ok($ht, '>=', 1, 'header time log - slow response header');
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
118 cmp_ok($ht2, '<', 1, 'header time log - slow response body');
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
119
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
120 cmp_ok($rt, '>=', 1, 'response time log - slow response header');
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
121 cmp_ok($rt2, '>=', 1, 'response time log - slow response body');
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
122
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
123 ###############################################################################
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
124
586
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
125 sub get {
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
126 my ($uri, %extra) = @_;
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
127 my $re = $extra{many} ? qr/$re, $re?/ : $re;
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
128 my $r = http_get($uri);
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
129 $r =~ /X-Connect: $re/, $r =~ /X-Header: $re/, $r =~ /X-Response: $re/;
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
130 }
ef2b435c1048 Tests: simple tests for $upstream_connect_time.
Sergey Kandaurov <pluknet@nginx.com>
parents: 568
diff changeset
131
676
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
132 sub http_xff {
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
133 my ($uri, $xff) = @_;
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
134 return http(<<EOF);
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
135 GET $uri HTTP/1.0
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
136 Host: localhost
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
137 X-Forwarded-For: $xff
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
138
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
139 EOF
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
140 }
dbe5bc4b8b39 Tests: added tests for proxy module variables.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 586
diff changeset
141
520
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
142 sub http_daemon {
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
143 my ($port) = @_;
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
144 my $once = 1;
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
145
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
146 my $server = IO::Socket::INET->new(
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
147 Proto => 'tcp',
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
148 LocalHost => '127.0.0.1',
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
149 LocalPort => $port,
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
150 Listen => 5,
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
151 Reuse => 1
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
152 )
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
153 or die "Can't create listening socket: $!\n";
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
154
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
155 local $SIG{PIPE} = 'IGNORE';
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
156
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
157 while (my $client = $server->accept()) {
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
158 $client->autoflush(1);
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
159
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
160 my $headers = '';
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
161 my $uri = '';
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
162
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
163 while (<$client>) {
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
164 $headers .= $_;
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
165 last if (/^\x0d?\x0a?$/);
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
166 }
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
167
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
168 $uri = $1 if $headers =~ /^\S+\s+([^ ]+)\s+HTTP/i;
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
169 next unless defined $uri;
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
170
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
171 if ($uri =~ 'bad' && $once) {
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
172 $once = 0;
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
173 sleep 1;
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
174 next;
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
175 }
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
176
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
177 if ($uri =~ 'header') {
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
178 sleep 1;
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
179 }
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
180
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
181 print $client <<EOF;
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
182 HTTP/1.1 200 OK
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
183 Connection: close
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
184
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
185 SEE-THIS-
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
186 EOF
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
187
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
188 if ($uri =~ 'body') {
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
189 sleep 1;
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
190 }
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
191
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
192 print $client 'AND-THIS';
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
193 }
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
194 }
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
195
4bcf8bc2bafe Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
196 ###############################################################################