Mercurial > hg > nginx-tests
annotate proxy_cache_lock.t @ 572:ca54b445d982
Tests: masked nginx bug in proxy next upstream.
When iterating through several next upstreams per a worker cycle,
a previously reported event about upstream connection error may
be improperly applied to the next upstream, thus leading to the
invalid connection error. E.g., in kqueue, where the problem is
visible, this is caused by "ev->instance" that does not tolerate
more than one next upstream at once, and kevents placed on the
kqueue separately for read and write events.
The change is to limit test case to the only one next upstream.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Thu, 14 May 2015 11:54:24 +0300 |
parents | 907e89fba9c3 |
children | 2cd00179f4b2 |
rev | line source |
---|---|
184
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 # Tests for http proxy cache lock. |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 ############################################################################### |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 use warnings; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 use strict; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
12 use Test::More; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 BEGIN { use FindBin; chdir($FindBin::Bin); } |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
15 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
16 use lib 'lib'; |
438
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
397
diff
changeset
|
17 use Test::Nginx qw/ :DEFAULT http_end /; |
184
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 ############################################################################### |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 select STDERR; $| = 1; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 select STDOUT; $| = 1; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 |
223
f9325406df0b
Tests: skip tests not appropriate for win32.
Maxim Dounin <mdounin@mdounin.ru>
parents:
213
diff
changeset
|
24 plan(skip_all => 'win32') if $^O eq 'MSWin32'; |
f9325406df0b
Tests: skip tests not appropriate for win32.
Maxim Dounin <mdounin@mdounin.ru>
parents:
213
diff
changeset
|
25 |
568
907e89fba9c3
Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
551
diff
changeset
|
26 my $t = Test::Nginx->new()->has(qw/http proxy cache/)->plan(18) |
184
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
27 ->write_file_expand('nginx.conf', <<'EOF'); |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
28 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
29 %%TEST_GLOBALS%% |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
30 |
249
6a0d934950bc
Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
233
diff
changeset
|
31 daemon off; |
184
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
33 events { |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
34 } |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
36 http { |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 %%TEST_GLOBALS_HTTP%% |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
38 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
39 proxy_cache_path %%TESTDIR%%/cache levels=1:2 |
503
071e8941e3bf
Tests: reduce shared memory zone sizes.
Maxim Dounin <mdounin@mdounin.ru>
parents:
499
diff
changeset
|
40 keys_zone=NAME:1m; |
184
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
41 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
42 server { |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
43 listen 127.0.0.1:8080; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
44 server_name localhost; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
45 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
46 location / { |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
47 proxy_pass http://127.0.0.1:8081; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
48 proxy_cache NAME; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
49 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
50 proxy_cache_lock on; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
51 } |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
52 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
53 location /timeout { |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
54 proxy_pass http://127.0.0.1:8081; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
55 proxy_cache NAME; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
56 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
57 proxy_cache_lock on; |
233
1a5574d84917
Tests: tweak various timeouts and replace sleep() with select().
Maxim Dounin <mdounin@mdounin.ru>
parents:
223
diff
changeset
|
58 proxy_cache_lock_timeout 200ms; |
184
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
59 } |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
60 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
61 location /nolock { |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
62 proxy_pass http://127.0.0.1:8081; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
63 proxy_cache NAME; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
64 } |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
65 } |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
66 } |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
67 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
68 EOF |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
69 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
70 $t->run_daemon(\&http_fake_daemon); |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
71 |
568
907e89fba9c3
Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
551
diff
changeset
|
72 $t->run(); |
184
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
73 |
213
4ac0807cc3cf
Tests: eliminate race in proxy_cache_lock.t startup.
Maxim Dounin <mdounin@mdounin.ru>
parents:
212
diff
changeset
|
74 $t->waitforsocket('127.0.0.1:8081'); |
184
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
75 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
76 ############################################################################### |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
77 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
78 # sequentional requests |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
79 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
80 for my $i (1 .. 5) { |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
81 like(http_get('/seq'), qr/request 1/, 'sequentional request ' . $i); |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
82 } |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
83 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
84 # parallel requests |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
85 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
86 my @sockets; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
87 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
88 for my $i (1 .. 5) { |
438
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
397
diff
changeset
|
89 $sockets[$i] = http_get('/par1', start => 1); |
184
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
90 } |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
91 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
92 for my $i (1 .. 5) { |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
93 like(http_end($sockets[$i]), qr/request 1/, 'parallel request ' . $i); |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
94 } |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
95 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
96 like(http_get('/par1'), qr/request 1/, 'first request cached'); |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
97 |
498
420fbf3555dd
Tests: cache lock timeout behavior changed in 1.7.8.
Sergey Kandaurov <pluknet@nginx.com>
parents:
474
diff
changeset
|
98 # since 1.7.8, parallel requests with cache lock timeout expired are not cached |
184
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
99 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
100 for my $i (1 .. 3) { |
438
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
397
diff
changeset
|
101 $sockets[$i] = http_get('/timeout', start => 1); |
184
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
102 } |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
103 |
551
28a8248740ca
Tests: proxy cache lock tests adjusted.
Sergey Kandaurov <pluknet@nginx.com>
parents:
503
diff
changeset
|
104 like(http_end($sockets[1]), qr/request 1/, 'lock timeout - first'); |
28a8248740ca
Tests: proxy cache lock tests adjusted.
Sergey Kandaurov <pluknet@nginx.com>
parents:
503
diff
changeset
|
105 |
28a8248740ca
Tests: proxy cache lock tests adjusted.
Sergey Kandaurov <pluknet@nginx.com>
parents:
503
diff
changeset
|
106 my $rest = http_end($sockets[2]); |
28a8248740ca
Tests: proxy cache lock tests adjusted.
Sergey Kandaurov <pluknet@nginx.com>
parents:
503
diff
changeset
|
107 $rest .= http_end($sockets[3]); |
28a8248740ca
Tests: proxy cache lock tests adjusted.
Sergey Kandaurov <pluknet@nginx.com>
parents:
503
diff
changeset
|
108 |
28a8248740ca
Tests: proxy cache lock tests adjusted.
Sergey Kandaurov <pluknet@nginx.com>
parents:
503
diff
changeset
|
109 like($rest, qr/request (2.*request 3|3.*request 2)/s, 'lock timeout - rest'); |
498
420fbf3555dd
Tests: cache lock timeout behavior changed in 1.7.8.
Sergey Kandaurov <pluknet@nginx.com>
parents:
474
diff
changeset
|
110 like(http_get('/timeout'), qr/request 1/, 'lock timeout - first only cached'); |
420fbf3555dd
Tests: cache lock timeout behavior changed in 1.7.8.
Sergey Kandaurov <pluknet@nginx.com>
parents:
474
diff
changeset
|
111 |
184
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
112 # no lock |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
113 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
114 for my $i (1 .. 3) { |
438
60888e2c3f5a
Tests: new http_start() and http_end() functions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
397
diff
changeset
|
115 $sockets[$i] = http_get('/nolock', start => 1); |
184
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
116 } |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
117 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
118 for my $i (1 .. 3) { |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
119 like(http_end($sockets[$i]), qr/request $i/, 'nolock ' . $i); |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
120 } |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
121 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
122 like(http_get('/nolock'), qr/request 3/, 'nolock - last cached'); |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
123 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
124 ############################################################################### |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
125 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
126 sub http_fake_daemon { |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
127 my $server = IO::Socket::INET->new( |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
128 Proto => 'tcp', |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
129 LocalAddr => '127.0.0.1:8081', |
191
bc6ecf23cc9c
Tests: enlarge listen queue for cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
184
diff
changeset
|
130 Listen => 5, |
184
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
131 Reuse => 1 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
132 ) |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
133 or die "Can't create listening socket: $!\n"; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
134 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
135 my $num = 0; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
136 my $uri = ''; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
137 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
138 while (my $client = $server->accept()) { |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
139 $client->autoflush(1); |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
140 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
141 while (<$client>) { |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
142 if (/GET (.*) HTTP/ && $1 ne $uri) { |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
143 $uri = $1; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
144 $num = 0; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
145 } |
212 | 146 |
184
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
147 $uri = $1 if /GET (.*) HTTP/; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
148 last if /^\x0d?\x0a?$/; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
149 } |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
150 |
213
4ac0807cc3cf
Tests: eliminate race in proxy_cache_lock.t startup.
Maxim Dounin <mdounin@mdounin.ru>
parents:
212
diff
changeset
|
151 next unless $uri; |
4ac0807cc3cf
Tests: eliminate race in proxy_cache_lock.t startup.
Maxim Dounin <mdounin@mdounin.ru>
parents:
212
diff
changeset
|
152 |
233
1a5574d84917
Tests: tweak various timeouts and replace sleep() with select().
Maxim Dounin <mdounin@mdounin.ru>
parents:
223
diff
changeset
|
153 select(undef, undef, undef, 0.5); |
184
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
154 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
155 $num++; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
156 print $client <<"EOF"; |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
157 HTTP/1.1 200 OK |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
158 Cache-Control: max-age=300 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
159 Connection: close |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
160 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
161 request $num |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
162 EOF |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
163 } |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
164 } |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
165 |
f432f11a3b12
Tests: proxy cache lock tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
166 ############################################################################### |