Mercurial > hg > nginx-tests
annotate proxy_variables.t @ 573:517cde5075d8
Tests: improved time zone name checks for $date_gmt in ssi.t.
Time zone name format is implementation defined, and, e.g., on win32
it may contain spaces, such as "Pacific Standard Time" for PST.
While here, catch this in headers as well.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Wed, 13 May 2015 16:57:45 +0300 |
parents | 907e89fba9c3 |
children | ef2b435c1048 |
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 |
568
907e89fba9c3
Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
520
diff
changeset
|
25 my $t = Test::Nginx->new()->has(qw/http proxy/)->plan(8) |
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 { |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
39 server 127.0.0.1:8081; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
40 server 127.0.0.1:8081; |
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 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
43 log_format time $upstream_header_time:$upstream_response_time; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
44 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
45 server { |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
46 listen 127.0.0.1:8080; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
47 server_name localhost; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
48 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
49 location / { |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
50 add_header X-Header-Time $upstream_header_time; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
51 proxy_pass http://127.0.0.1:8081; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
52 access_log %%TESTDIR%%/time.log time; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
53 } |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
54 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
55 location /pnu { |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
56 add_header X-Header-Time $upstream_header_time; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
57 add_header X-Response-Time $upstream_response_time; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
58 proxy_pass http://u/bad; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
59 } |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
60 } |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
61 } |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
62 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
63 EOF |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
64 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
65 $t->run_daemon(\&http_daemon, 8081); |
568
907e89fba9c3
Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
520
diff
changeset
|
66 $t->run()->waitforsocket('127.0.0.1:8081'); |
520
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
67 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
68 ############################################################################### |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
69 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
70 my $re = qr/(\d\.\d{3})/; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
71 my ($ht, $rt, $ht2, $rt2); |
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 ($ht) = http_get('/header') =~ /X-Header-Time: $re/; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
74 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
|
75 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
76 ($ht) = http_get('/body') =~ /X-Header-Time: $re/; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
77 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
|
78 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
79 my $r = http_get('/pnu'); |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
80 ($ht) = $r =~ /X-Header-Time: ($re)/; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
81 ($rt) = $r =~ /X-Response-Time: ($re)/; |
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 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
|
84 like($r, qr/X-Header-Time: $re, $re/, 'header time - next'); |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
85 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
86 $t->stop(); |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
87 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
88 ($ht, $rt, $ht2, $rt2) = $t->read_file('time.log') =~ /^$re:$re\n$re:$re$/; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
89 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
90 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
|
91 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
|
92 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
93 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
|
94 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
|
95 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
96 ############################################################################### |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
97 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
98 sub http_daemon { |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
99 my ($port) = @_; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
100 my $once = 1; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
101 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
102 my $server = IO::Socket::INET->new( |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
103 Proto => 'tcp', |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
104 LocalHost => '127.0.0.1', |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
105 LocalPort => $port, |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
106 Listen => 5, |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
107 Reuse => 1 |
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 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
|
110 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
111 local $SIG{PIPE} = 'IGNORE'; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
112 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
113 while (my $client = $server->accept()) { |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
114 $client->autoflush(1); |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
115 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
116 my $headers = ''; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
117 my $uri = ''; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
118 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
119 while (<$client>) { |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
120 $headers .= $_; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
121 last if (/^\x0d?\x0a?$/); |
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 $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
|
125 next unless defined $uri; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
126 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
127 if ($uri =~ 'bad' && $once) { |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
128 $once = 0; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
129 sleep 1; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
130 next; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
131 } |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
132 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
133 if ($uri =~ 'header') { |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
134 sleep 1; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
135 } |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
136 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
137 print $client <<EOF; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
138 HTTP/1.1 200 OK |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
139 Connection: close |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
140 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
141 SEE-THIS- |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
142 EOF |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
143 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
144 if ($uri =~ 'body') { |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
145 sleep 1; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
146 } |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
147 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
148 print $client 'AND-THIS'; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
149 } |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
150 } |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
151 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
152 ############################################################################### |