annotate ssi-include-big.t @ 103:4ae2198b97ec

Tests: limit_req tests for 0.8.18 changes and bug. 1. Make sure rejected requests are not counted, as leaky bucket algorithm suggests (finally correctly done in 0.8.18). 2. Make sure negative excess values are handled properly (bug appeared in 0.8.18, fixed in 0.8.19).
author Maxim Dounin <mdounin@mdounin.ru>
date Fri, 09 Oct 2009 21:05:42 +0400
parents 5276d85d5040
children 8bc9de6559a1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Tests for nginx ssi bug with big includes.
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
28
8f1519472ece Tests: unbreak and extend has() functionality.
Maxim Dounin <mdounin@mdounin.ru>
parents: 19
diff changeset
12 use Test::More;
5
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
9
f772e2a1a13f Tests: change directory to allow runing from outside.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6
diff changeset
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
f772e2a1a13f Tests: change directory to allow runing from outside.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6
diff changeset
15
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 12
diff changeset
16 use lib 'lib';
93
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 64
diff changeset
17 use Test::Nginx qw/ :DEFAULT :gzip /;
5
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 ###############################################################################
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 select STDERR; $| = 1;
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 select STDOUT; $| = 1;
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
39
fc205d0e052d Tests: check content returned from ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 35
diff changeset
24 my $t = Test::Nginx->new()->has('rewrite')->plan(8);
15
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
25
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
26 $t->write_file_expand('nginx.conf', <<'EOF');
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
27
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
28 master_process off;
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
29 daemon off;
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
30
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
31 events {
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
32 }
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
33
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
34 http {
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
35 access_log off;
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
36 root %%TESTDIR%%;
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
37
35
7bf0e8a1d66c Tests: always define temp paths.
Maxim Dounin <mdounin@mdounin.ru>
parents: 32
diff changeset
38 client_body_temp_path %%TESTDIR%%/client_body_temp;
7bf0e8a1d66c Tests: always define temp paths.
Maxim Dounin <mdounin@mdounin.ru>
parents: 32
diff changeset
39 fastcgi_temp_path %%TESTDIR%%/fastcgi_temp;
7bf0e8a1d66c Tests: always define temp paths.
Maxim Dounin <mdounin@mdounin.ru>
parents: 32
diff changeset
40 proxy_temp_path %%TESTDIR%%/proxy_temp;
7bf0e8a1d66c Tests: always define temp paths.
Maxim Dounin <mdounin@mdounin.ru>
parents: 32
diff changeset
41
15
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
42 output_buffers 2 512;
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
43 ssi on;
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
44 gzip on;
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
45
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
46 server {
45
d68b85def521 Tests: use 127.0.0.1 instead of localhost.
Maxim Dounin <mdounin@mdounin.ru>
parents: 39
diff changeset
47 listen 127.0.0.1:8080;
15
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
48 server_name localhost;
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
49
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
50 location /proxy/ {
45
d68b85def521 Tests: use 127.0.0.1 instead of localhost.
Maxim Dounin <mdounin@mdounin.ru>
parents: 39
diff changeset
51 proxy_pass http://127.0.0.1:8080/local/;
15
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
52 }
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
53 location = /local/blah {
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
54 return 204;
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
55 }
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
56 }
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
57 }
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
58
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
59 EOF
5
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60
14
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 12
diff changeset
61 $t->write_file('c1.html', 'X' x 1023);
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 12
diff changeset
62 $t->write_file('c2.html', 'X' x 1024);
d4b74207a627 Tests: refactor common functions.
Maxim Dounin <mdounin@mdounin.ru>
parents: 12
diff changeset
63 $t->write_file('c3.html', 'X' x 1025);
39
fc205d0e052d Tests: check content returned from ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 35
diff changeset
64 $t->write_file('test1.html', '<!--#include virtual="/proxy/blah" -->'
5
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65 . '<!--#include virtual="/c1.html" -->');
39
fc205d0e052d Tests: check content returned from ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 35
diff changeset
66 $t->write_file('test2.html', '<!--#include virtual="/proxy/blah" -->'
5
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67 . '<!--#include virtual="/c2.html" -->');
39
fc205d0e052d Tests: check content returned from ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 35
diff changeset
68 $t->write_file('test3.html', '<!--#include virtual="/proxy/blah" -->'
5
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69 . '<!--#include virtual="/c3.html" -->');
39
fc205d0e052d Tests: check content returned from ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 35
diff changeset
70 $t->write_file('test4.html', '<!--#include virtual="/proxy/blah" -->'
fc205d0e052d Tests: check content returned from ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 35
diff changeset
71 . ('X' x 1025));
5
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72
15
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
73 $t->run();
c6c36d7a4d90 Tests: support config embedded in test itself.
Maxim Dounin <mdounin@mdounin.ru>
parents: 14
diff changeset
74
5
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75 ###############################################################################
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
77 my $t1 = http_gzip_request('/test1.html');
6
8813a78ab8b5 Tests: drop LWP dependency.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5
diff changeset
78 ok(defined $t1, 'small included file (less than output_buffers)');
39
fc205d0e052d Tests: check content returned from ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 35
diff changeset
79 http_gzip_like($t1, qr/^X{1023}\Z/, 'small included file content');
5
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
80
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
81 my $t2 = http_gzip_request('/test2.html');
6
8813a78ab8b5 Tests: drop LWP dependency.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5
diff changeset
82 ok(defined $t2, 'small included file (equal to output_buffers)');
39
fc205d0e052d Tests: check content returned from ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 35
diff changeset
83 http_gzip_like($t2, qr/^X{1024}\Z/, 'small included file content');
5
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
85 my $t3 = http_gzip_request('/test3.html');
6
8813a78ab8b5 Tests: drop LWP dependency.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5
diff changeset
86 ok(defined $t3, 'big included file (more than output_buffers)');
39
fc205d0e052d Tests: check content returned from ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 35
diff changeset
87 http_gzip_like($t3, qr/^X{1025}\Z/, 'big included file content');
5
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88
39
fc205d0e052d Tests: check content returned from ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 35
diff changeset
89 my $t4 = http_gzip_request('/test4.html');
fc205d0e052d Tests: check content returned from ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 35
diff changeset
90 ok(defined $t4, 'big ssi main file');
fc205d0e052d Tests: check content returned from ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 35
diff changeset
91 http_gzip_like($t4, qr/^X{1025}\Z/, 'big ssi main file content');
fc205d0e052d Tests: check content returned from ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 35
diff changeset
92
5
4d75bdb05ecf Tests: some generic code and ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
93 ###############################################################################