blob: 2e0338afabe454e6c732640c692ce701dc5daae0 [file] [log] [blame]
Maxim Dounin668f89e2008-09-07 05:00:28 +04001#!/usr/bin/perl
2
3# (C) Maxim Dounin
4
5# Tests for nginx ssi bug with big includes.
6
7###############################################################################
8
9use warnings;
10use strict;
11
Maxim Dounin09263aa2008-10-10 20:23:39 +040012use Test::More;
Maxim Dounin668f89e2008-09-07 05:00:28 +040013
Maxim Dounind5c5f3e2008-09-10 17:41:04 +040014BEGIN { use FindBin; chdir($FindBin::Bin); }
15
Maxim Dounind26e7c52008-09-12 20:50:35 +040016use lib 'lib';
Maxim Dounin72766c72009-05-26 20:18:05 +040017use Test::Nginx qw/ :DEFAULT :gzip /;
Maxim Dounin668f89e2008-09-07 05:00:28 +040018
19###############################################################################
20
21select STDERR; $| = 1;
22select STDOUT; $| = 1;
23
Maxim Douninff9b36a2009-12-26 16:06:17 +030024my $t = Test::Nginx->new()->has(qw/http ssi rewrite gzip proxy/)->plan(8);
Maxim Dounin46bf6af2008-09-13 02:57:01 +040025
26$t->write_file_expand('nginx.conf', <<'EOF');
27
Maxim Douninc6acedb2009-10-14 02:23:52 +040028%%TEST_GLOBALS%%
29
Maxim Dounin46bf6af2008-09-13 02:57:01 +040030master_process off;
31daemon off;
32
33events {
Maxim Dounin46bf6af2008-09-13 02:57:01 +040034}
35
36http {
Maxim Douninc6acedb2009-10-14 02:23:52 +040037 %%TEST_GLOBALS_HTTP%%
Maxim Dounine3aaba52008-10-16 19:16:46 +040038
Maxim Dounin46bf6af2008-09-13 02:57:01 +040039 output_buffers 2 512;
40 ssi on;
41 gzip on;
42
43 server {
Maxim Dounin3c472202008-11-02 15:01:41 +030044 listen 127.0.0.1:8080;
Maxim Dounin46bf6af2008-09-13 02:57:01 +040045 server_name localhost;
46
47 location /proxy/ {
Maxim Dounin3c472202008-11-02 15:01:41 +030048 proxy_pass http://127.0.0.1:8080/local/;
Maxim Dounin46bf6af2008-09-13 02:57:01 +040049 }
50 location = /local/blah {
51 return 204;
52 }
53 }
54}
55
56EOF
Maxim Dounin668f89e2008-09-07 05:00:28 +040057
Maxim Dounind26e7c52008-09-12 20:50:35 +040058$t->write_file('c1.html', 'X' x 1023);
59$t->write_file('c2.html', 'X' x 1024);
60$t->write_file('c3.html', 'X' x 1025);
Maxim Dounine1b25ed2008-11-01 03:29:34 +030061$t->write_file('test1.html', '<!--#include virtual="/proxy/blah" -->'
Maxim Dounin668f89e2008-09-07 05:00:28 +040062 . '<!--#include virtual="/c1.html" -->');
Maxim Dounine1b25ed2008-11-01 03:29:34 +030063$t->write_file('test2.html', '<!--#include virtual="/proxy/blah" -->'
Maxim Dounin668f89e2008-09-07 05:00:28 +040064 . '<!--#include virtual="/c2.html" -->');
Maxim Dounine1b25ed2008-11-01 03:29:34 +030065$t->write_file('test3.html', '<!--#include virtual="/proxy/blah" -->'
Maxim Dounin668f89e2008-09-07 05:00:28 +040066 . '<!--#include virtual="/c3.html" -->');
Maxim Dounine1b25ed2008-11-01 03:29:34 +030067$t->write_file('test4.html', '<!--#include virtual="/proxy/blah" -->'
68 . ('X' x 1025));
Maxim Dounin668f89e2008-09-07 05:00:28 +040069
Maxim Dounin46bf6af2008-09-13 02:57:01 +040070$t->run();
71
Maxim Dounin668f89e2008-09-07 05:00:28 +040072###############################################################################
73
74my $t1 = http_gzip_request('/test1.html');
Maxim Dounin4621cc52008-09-07 19:06:49 +040075ok(defined $t1, 'small included file (less than output_buffers)');
Maxim Dounine1b25ed2008-11-01 03:29:34 +030076http_gzip_like($t1, qr/^X{1023}\Z/, 'small included file content');
Maxim Dounin668f89e2008-09-07 05:00:28 +040077
78my $t2 = http_gzip_request('/test2.html');
Maxim Dounin4621cc52008-09-07 19:06:49 +040079ok(defined $t2, 'small included file (equal to output_buffers)');
Maxim Dounine1b25ed2008-11-01 03:29:34 +030080http_gzip_like($t2, qr/^X{1024}\Z/, 'small included file content');
Maxim Dounin668f89e2008-09-07 05:00:28 +040081
82my $t3 = http_gzip_request('/test3.html');
Maxim Dounin4621cc52008-09-07 19:06:49 +040083ok(defined $t3, 'big included file (more than output_buffers)');
Maxim Dounine1b25ed2008-11-01 03:29:34 +030084http_gzip_like($t3, qr/^X{1025}\Z/, 'big included file content');
Maxim Dounin668f89e2008-09-07 05:00:28 +040085
Maxim Dounine1b25ed2008-11-01 03:29:34 +030086my $t4 = http_gzip_request('/test4.html');
87ok(defined $t4, 'big ssi main file');
88http_gzip_like($t4, qr/^X{1025}\Z/, 'big ssi main file content');
89
Maxim Dounin668f89e2008-09-07 05:00:28 +040090###############################################################################