annotate http_keepalive.t @ 1542:451e787aad76

Tests: reworked libgd version detection. The "libgd-config" binary is deprecated in recent versions and may not exist or have unexpected output. More, it may not present within older versions, as well, if installed separately, which previously broke test assumptions. The fix is change the fallback to skip tests. In addition, recent Perl GD module (2.57) started to export libgd version, which is now also consulted.
author Sergey Kandaurov <pluknet@nginx.com>
date Mon, 13 Jan 2020 18:15:35 +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 ###############################################################################