annotate proxy_store.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 f175dc25f249
children 89cfb7397ba1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
46
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Tests for proxy_store functionality.
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
121
8ac1faaddd2c Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents: 107
diff changeset
12 use Test::More;
46
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 use lib 'lib';
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 use Test::Nginx;
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 ###############################################################################
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 select STDERR; $| = 1;
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 select STDOUT; $| = 1;
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24 my $t = Test::Nginx->new();
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25
121
8ac1faaddd2c Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents: 107
diff changeset
26 $t->write_file_expand('nginx.conf', <<'EOF')->has(qw/http proxy ssi/)->plan(7);
46
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27
107
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 90
diff changeset
28 %%TEST_GLOBALS%%
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 90
diff changeset
29
249
6a0d934950bc Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 236
diff changeset
30 daemon off;
46
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 events {
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33 }
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 http {
107
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 90
diff changeset
36 %%TEST_GLOBALS_HTTP%%
46
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38 server {
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 listen 127.0.0.1:8080;
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40 server_name localhost;
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41
89
abbe4b123795 Tests: simplify proxy-store tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 88
diff changeset
42 location /store- {
abbe4b123795 Tests: simplify proxy-store tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 88
diff changeset
43 proxy_pass http://127.0.0.1:8080/;
87
f2d09159a8f3 Tests: proxy_store leaving temporary files bug test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
44 proxy_store on;
f2d09159a8f3 Tests: proxy_store leaving temporary files bug test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
45 }
90
1d3c82227a05 Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 89
diff changeset
46 location /ssi.html {
1d3c82227a05 Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 89
diff changeset
47 ssi on;
1d3c82227a05 Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 89
diff changeset
48 }
87
f2d09159a8f3 Tests: proxy_store leaving temporary files bug test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
49 location /index-big.html {
f2d09159a8f3 Tests: proxy_store leaving temporary files bug test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
50 limit_rate 200k;
f2d09159a8f3 Tests: proxy_store leaving temporary files bug test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
51 }
46
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52 }
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53 }
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55 EOF
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57 $t->write_file('index.html', 'SEE-THIS');
47
bb6d65d833cd Tests: test for X-Accel-Expires switching off proxy_store.
Maxim Dounin <mdounin@mdounin.ru>
parents: 46
diff changeset
58 $t->write_file('index-nostore.html', 'SEE-THIS');
87
f2d09159a8f3 Tests: proxy_store leaving temporary files bug test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
59 $t->write_file('index-big.html', 'x' x (100 << 10));
90
1d3c82227a05 Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 89
diff changeset
60 $t->write_file('ssi.html',
1d3c82227a05 Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 89
diff changeset
61 '<!--#include virtual="/store-index-big.html?1" -->' .
1d3c82227a05 Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 89
diff changeset
62 '<!--#include virtual="/store-index-big.html?2" -->'
1d3c82227a05 Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 89
diff changeset
63 );
46
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64 $t->run();
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66 ###############################################################################
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67
89
abbe4b123795 Tests: simplify proxy-store tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 88
diff changeset
68 like(http_get('/store-index.html'), qr/SEE-THIS/, 'proxy request');
abbe4b123795 Tests: simplify proxy-store tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 88
diff changeset
69 ok(-e $t->testdir() . '/store-index.html', 'result stored');
46
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70
306
f175dc25f249 Tests: proxy_store with HEAD requests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 249
diff changeset
71 like(http_head('/store-index-nostore.html'), qr/200 OK/, 'head request');
89
abbe4b123795 Tests: simplify proxy-store tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 88
diff changeset
72 ok(!-e $t->testdir() . '/store-index-nostore.html', 'result not stored');
47
bb6d65d833cd Tests: test for X-Accel-Expires switching off proxy_store.
Maxim Dounin <mdounin@mdounin.ru>
parents: 46
diff changeset
73
bb6d65d833cd Tests: test for X-Accel-Expires switching off proxy_store.
Maxim Dounin <mdounin@mdounin.ru>
parents: 46
diff changeset
74 ok(scalar @{[ glob $t->testdir() . '/proxy_temp/*' ]} == 0, 'no temp files');
bb6d65d833cd Tests: test for X-Accel-Expires switching off proxy_store.
Maxim Dounin <mdounin@mdounin.ru>
parents: 46
diff changeset
75
89
abbe4b123795 Tests: simplify proxy-store tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 88
diff changeset
76 http_get('/store-index-big.html', aborted => 1, sleep => 0.1);
236
5ac875a3088e Tests: improve proxy_store.t timeouts a bit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 233
diff changeset
77
233
1a5574d84917 Tests: tweak various timeouts and replace sleep() with select().
Maxim Dounin <mdounin@mdounin.ru>
parents: 224
diff changeset
78 select(undef, undef, undef, 0.5);
236
5ac875a3088e Tests: improve proxy_store.t timeouts a bit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 233
diff changeset
79 select(undef, undef, undef, 2.5)
5ac875a3088e Tests: improve proxy_store.t timeouts a bit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 233
diff changeset
80 if scalar @{[ glob $t->testdir() . '/proxy_temp/*' ]};
87
f2d09159a8f3 Tests: proxy_store leaving temporary files bug test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
81
f2d09159a8f3 Tests: proxy_store leaving temporary files bug test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
82 ok(scalar @{[ glob $t->testdir() . '/proxy_temp/*' ]} == 0,
f2d09159a8f3 Tests: proxy_store leaving temporary files bug test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
83 'no temp files after aborted request');
f2d09159a8f3 Tests: proxy_store leaving temporary files bug test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
84
90
1d3c82227a05 Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 89
diff changeset
85 http_get('/ssi.html', aborted => 1, sleep => 0.1);
236
5ac875a3088e Tests: improve proxy_store.t timeouts a bit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 233
diff changeset
86
233
1a5574d84917 Tests: tweak various timeouts and replace sleep() with select().
Maxim Dounin <mdounin@mdounin.ru>
parents: 224
diff changeset
87 select(undef, undef, undef, 0.5);
236
5ac875a3088e Tests: improve proxy_store.t timeouts a bit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 233
diff changeset
88 select(undef, undef, undef, 2.5)
5ac875a3088e Tests: improve proxy_store.t timeouts a bit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 233
diff changeset
89 if scalar @{[ glob $t->testdir() . '/proxy_temp/*' ]};
90
1d3c82227a05 Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 89
diff changeset
90
1d3c82227a05 Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 89
diff changeset
91 ok(scalar @{[ glob $t->testdir() . '/proxy_temp/*' ]} == 0,
1d3c82227a05 Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 89
diff changeset
92 'no temp files after aborted ssi');
1d3c82227a05 Tests: subrequests with proxy_store todo test.
Maxim Dounin <mdounin@mdounin.ru>
parents: 89
diff changeset
93
46
239a346b4913 Tests: add proxy_store basic tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94 ###############################################################################