Mercurial > hg > nginx-tests
annotate proxy_variables.t @ 540:481d705b8610
Tests: SSL support in mail backends.
Socket is now embedded into every mail module.
Socket methods are wrapped where appropriate.
The new "SSL" extra flag specifies to accept connection over SSL.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Fri, 03 Apr 2015 00:11:38 +0300 |
parents | 4bcf8bc2bafe |
children | 907e89fba9c3 |
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 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
25 my $t = Test::Nginx->new()->has(qw/http proxy/) |
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); |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
66 $t->try_run('no upstream_header_time')->plan(8); |
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 $t->waitforsocket('127.0.0.1:8081'); |
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 ############################################################################### |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
71 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
72 my $re = qr/(\d\.\d{3})/; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
73 my ($ht, $rt, $ht2, $rt2); |
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 ($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
|
76 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
|
77 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
78 ($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
|
79 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
|
80 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
81 my $r = http_get('/pnu'); |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
82 ($ht) = $r =~ /X-Header-Time: ($re)/; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
83 ($rt) = $r =~ /X-Response-Time: ($re)/; |
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 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
|
86 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
|
87 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
88 $t->stop(); |
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 ($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
|
91 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
92 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
|
93 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
|
94 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
95 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
|
96 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
|
97 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
98 ############################################################################### |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
99 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
100 sub http_daemon { |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
101 my ($port) = @_; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
102 my $once = 1; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
103 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
104 my $server = IO::Socket::INET->new( |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
105 Proto => 'tcp', |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
106 LocalHost => '127.0.0.1', |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
107 LocalPort => $port, |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
108 Listen => 5, |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
109 Reuse => 1 |
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 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
|
112 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
113 local $SIG{PIPE} = 'IGNORE'; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
114 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
115 while (my $client = $server->accept()) { |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
116 $client->autoflush(1); |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
117 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
118 my $headers = ''; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
119 my $uri = ''; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
120 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
121 while (<$client>) { |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
122 $headers .= $_; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
123 last if (/^\x0d?\x0a?$/); |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
124 } |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
125 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
126 $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
|
127 next unless defined $uri; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
128 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
129 if ($uri =~ 'bad' && $once) { |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
130 $once = 0; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
131 sleep 1; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
132 next; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
133 } |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
134 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
135 if ($uri =~ 'header') { |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
136 sleep 1; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
137 } |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
138 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
139 print $client <<EOF; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
140 HTTP/1.1 200 OK |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
141 Connection: close |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
142 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
143 SEE-THIS- |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
144 EOF |
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 if ($uri =~ 'body') { |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
147 sleep 1; |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
148 } |
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 print $client 'AND-THIS'; |
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 } |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
153 |
4bcf8bc2bafe
Tests: $upstream_header_time and $upstream_response_time variables.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
154 ############################################################################### |