annotate http_keepalive.t @ 1585:bff287fbf347

Tests: added proxy_cookie_domain/path tests with "off" parameter.
author Sergey Kandaurov <pluknet@nginx.com>
date Thu, 23 Jul 2020 12:17:39 +0300
parents 1603f2bad385
children bf69dcabb856
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1023
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
2
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
3 # (C) Andrey Zelenkov
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
5
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
6 # Tests for http keepalive directives.
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
7
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
8 ###############################################################################
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
9
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
10 use warnings;
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
11 use strict;
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
12
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
13 use Test::More;
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
14
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
15 use IO::Select;
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
16
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
17 BEGIN { use FindBin; chdir($FindBin::Bin); }
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
18
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
19 use lib 'lib';
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
20 use Test::Nginx;
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
21
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
22 ###############################################################################
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
23
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
24 select STDERR; $| = 1;
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
25 select STDOUT; $| = 1;
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
26
1509
1603f2bad385 Tests: $sent_http_connection tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1508
diff changeset
27 my $t = Test::Nginx->new()->has(qw/http/)->plan(14)
1023
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
28 ->write_file_expand('nginx.conf', <<'EOF');
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
29
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
30 %%TEST_GLOBALS%%
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
31
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
32 daemon off;
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
33
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
34 events {
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
35 }
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
36
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
37 http {
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
38 %%TEST_GLOBALS_HTTP%%
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
39
1509
1603f2bad385 Tests: $sent_http_connection tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1508
diff changeset
40 log_format test $sent_http_connection;
1603f2bad385 Tests: $sent_http_connection tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1508
diff changeset
41 access_log %%TESTDIR%%/test.log test if=$arg_l;
1603f2bad385 Tests: $sent_http_connection tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1508
diff changeset
42
1023
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
43 server {
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
44 listen 127.0.0.1:8080;
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
45 server_name localhost;
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
46
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
47 keepalive_requests 2;
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
48 keepalive_timeout 1 9;
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
49
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
50 location / { }
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
51 location /r {
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
52 keepalive_requests 4;
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
53 }
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
54
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
55 location /safari {
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
56 keepalive_disable safari;
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
57 }
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
58
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
59 location /none {
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
60 keepalive_disable none;
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
61 }
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
62
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
63 location /zero {
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
64 keepalive_timeout 0;
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
65 }
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
66 }
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
67 }
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
68
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
69 EOF
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
70
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
71 $t->write_file('index.html', '');
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
72 $t->write_file('r', '');
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
73 $t->write_file('safari', '');
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
74 $t->write_file('none', '');
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
75 $t->write_file('zero', '');
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
76 $t->run();
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
77
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
78 ###############################################################################
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
79
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
80 # keepalive_requests
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
81
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
82 like(http_keepalive('/'), qr/Connection: keep-alive/, 'keepalive request');
1509
1603f2bad385 Tests: $sent_http_connection tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1508
diff changeset
83 is(count_keepalive(http_keepalive('/?l=ok', req => 2)), 1, 'keepalive limit');
1023
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
84 is(count_keepalive(http_keepalive('/r', req => 3)), 3, 'keepalive merge');
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
85 is(count_keepalive(http_keepalive('/r', req => 5)), 3, 'keepalive merge limit');
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
86
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
87 # keepalive_disable
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
88
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
89 like(http_keepalive('/', method => 'POST', ua => "MSIE 5.0"),
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
90 qr/Connection: close/, 'keepalive disable msie6');
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
91 like(http_keepalive('/', ua => "MSIE 5.0"), qr/Connection: keep-alive/,
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
92 'keepalive disable msie6 GET');
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
93 like(http_keepalive('/', method => 'POST', ua => "MSIE 7.0"),
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
94 qr/Connection: keep-alive/, 'keepalive disable msie6 modern');
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
95 like(http_keepalive('/', ua => "Mac OS X Safari/7534.48.3"),
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
96 qr/Connection: keep-alive/, 'keepalive disable msie6 safari');
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
97 like(http_keepalive('/safari', ua => "Mac OS X Safari/7534.48.3"),
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
98 qr/Connection: close/, 'keepalive disable safari');
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
99 like(http_keepalive('/none', method => 'POST', ua => "MSIE 5.0"),
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
100 qr/Connection: keep-alive/, 'keepalive disable none');
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
101
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
102 # keepalive_timeout
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
103
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
104 my $r = http_keepalive('/', req => 2, sleep => 2.1);
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
105 is(count_keepalive($r), 1, 'keepalive timeout request');
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
106 like($r, qr/Keep-Alive: timeout=9/, 'keepalive timeout header');
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
107
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
108 like(http_keepalive('/zero'), qr/Connection: close/, 'keepalive timeout 0');
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
109
1509
1603f2bad385 Tests: $sent_http_connection tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1508
diff changeset
110 $t->stop();
1603f2bad385 Tests: $sent_http_connection tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1508
diff changeset
111
1603f2bad385 Tests: $sent_http_connection tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1508
diff changeset
112 TODO: {
1603f2bad385 Tests: $sent_http_connection tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1508
diff changeset
113 local $TODO = 'not yet';
1603f2bad385 Tests: $sent_http_connection tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1508
diff changeset
114
1603f2bad385 Tests: $sent_http_connection tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1508
diff changeset
115 is($t->read_file('test.log'), "keep-alive\nclose\n", 'sent_http_connection');
1603f2bad385 Tests: $sent_http_connection tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1508
diff changeset
116
1603f2bad385 Tests: $sent_http_connection tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1508
diff changeset
117 }
1603f2bad385 Tests: $sent_http_connection tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1508
diff changeset
118
1023
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
119 ###############################################################################
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
120
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
121 sub http_keepalive {
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
122 my ($url, %opts) = @_;
1508
1a409a166420 Tests: fixed http_keepalive.t with short reads and double logging.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1361
diff changeset
123 my $total = '';
1023
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
124
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
125 $opts{ua} = $opts{ua} || '';
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
126 $opts{req} = $opts{req} || 1;
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
127 $opts{sleep} = $opts{sleep} || 0;
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
128 $opts{method} = $opts{method} || 'GET';
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
129
1166
2b8523bd4988 Tests: handled broken connections in http_keepalive.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1023
diff changeset
130 local $SIG{PIPE} = 'IGNORE';
2b8523bd4988 Tests: handled broken connections in http_keepalive.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1023
diff changeset
131
1023
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
132 my $s = http('', start => 1);
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
133
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
134 for my $i (1 .. $opts{req}) {
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
135
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
136 my $sleep = ($i == 1 ? $opts{sleep} : 0);
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
137
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
138 http(<<EOF, socket => $s, start => 1, sleep => $sleep);
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
139 $opts{method} $url HTTP/1.1
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
140 Host: localhost
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
141 User-Agent: $opts{ua}
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
142
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
143 EOF
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
144
1508
1a409a166420 Tests: fixed http_keepalive.t with short reads and double logging.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1361
diff changeset
145 my $data = '';
1a409a166420 Tests: fixed http_keepalive.t with short reads and double logging.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1361
diff changeset
146
1023
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
147 while (IO::Select->new($s)->can_read(3)) {
1166
2b8523bd4988 Tests: handled broken connections in http_keepalive.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1023
diff changeset
148 sysread($s, my $buffer, 4096) or last;
1023
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
149 $data .= $buffer;
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
150 last if $data =~ /^\x0d\x0a/ms;
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
151 }
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
152
1361
6c4f9941ae9f Tests: fixed http_keepalive.t response logging.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1166
diff changeset
153 log_in($data);
1508
1a409a166420 Tests: fixed http_keepalive.t with short reads and double logging.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1361
diff changeset
154
1a409a166420 Tests: fixed http_keepalive.t with short reads and double logging.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1361
diff changeset
155 $total .= $data;
1023
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
156 }
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
157
1508
1a409a166420 Tests: fixed http_keepalive.t with short reads and double logging.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1361
diff changeset
158 return $total;
1023
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
159 }
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
160
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
161 sub count_keepalive {
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
162 my ($str) = @_;
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
163 return $str =~ s/Connection: keep-alive//g;
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
164 }
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
165
8533222fcfc1 Tests: http keepalive tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff changeset
166 ###############################################################################