annotate ssi.t @ 251:df984d23f9d1

Tests: improve fastcgi keepalive tests. On some platforms fastcgi_keepalive.t tests failed due to problems in handling of data split into multiple packets. Harden tests to fail on all platforms by adding more sleeps, and mark them as TODO till underlying problems are fixed. Additionally, add some padding testing.
author Maxim Dounin <mdounin@mdounin.ru>
date Fri, 25 Jan 2013 20:53:53 +0400
parents 6a0d934950bc
children 0726521e42f3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
73
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Tests for nginx ssi module.
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 use Test::More;
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 use lib 'lib';
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 use Test::Nginx;
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 ###############################################################################
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 select STDERR; $| = 1;
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 select STDOUT; $| = 1;
c8ba98ad0570 Tests: some very basic ssi 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: 166
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: 166
diff changeset
25
129
adbf104668b6 Tests: add test for $args in subrequest only.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
26 my $t = Test::Nginx->new()->has(qw/http ssi cache proxy rewrite/)->plan(18);
73
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28 $t->write_file_expand('nginx.conf', <<'EOF');
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29
107
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 106
diff changeset
30 %%TEST_GLOBALS%%
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 106
diff changeset
31
249
6a0d934950bc Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 224
diff changeset
32 daemon off;
73
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34 events {
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 }
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37 http {
107
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 106
diff changeset
38 %%TEST_GLOBALS_HTTP%%
73
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39
105
bb5b5e69b45e Tests: empty cached subrequests shouldn't cause alerts.
Maxim Dounin <mdounin@mdounin.ru>
parents: 102
diff changeset
40 proxy_cache_path %%TESTDIR%%/cache levels=1:2
bb5b5e69b45e Tests: empty cached subrequests shouldn't cause alerts.
Maxim Dounin <mdounin@mdounin.ru>
parents: 102
diff changeset
41 keys_zone=NAME:10m;
bb5b5e69b45e Tests: empty cached subrequests shouldn't cause alerts.
Maxim Dounin <mdounin@mdounin.ru>
parents: 102
diff changeset
42
73
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43 server {
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44 listen 127.0.0.1:8080;
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45 server_name localhost;
129
adbf104668b6 Tests: add test for $args in subrequest only.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
46
adbf104668b6 Tests: add test for $args in subrequest only.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
47 if ($args = "found") {
adbf104668b6 Tests: add test for $args in subrequest only.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
48 return 204;
adbf104668b6 Tests: add test for $args in subrequest only.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
49 }
adbf104668b6 Tests: add test for $args in subrequest only.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
50
91
ec89d4d65bef Tests: Last-Modified and Accept-Ranges should be cleared on ssi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 73
diff changeset
51 location / {
ec89d4d65bef Tests: Last-Modified and Accept-Ranges should be cleared on ssi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 73
diff changeset
52 ssi on;
ec89d4d65bef Tests: Last-Modified and Accept-Ranges should be cleared on ssi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 73
diff changeset
53 }
ec89d4d65bef Tests: Last-Modified and Accept-Ranges should be cleared on ssi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 73
diff changeset
54 location /proxy/ {
ec89d4d65bef Tests: Last-Modified and Accept-Ranges should be cleared on ssi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 73
diff changeset
55 ssi on;
ec89d4d65bef Tests: Last-Modified and Accept-Ranges should be cleared on ssi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 73
diff changeset
56 proxy_pass http://127.0.0.1:8080/local/;
ec89d4d65bef Tests: Last-Modified and Accept-Ranges should be cleared on ssi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 73
diff changeset
57 }
105
bb5b5e69b45e Tests: empty cached subrequests shouldn't cause alerts.
Maxim Dounin <mdounin@mdounin.ru>
parents: 102
diff changeset
58 location /cache/ {
bb5b5e69b45e Tests: empty cached subrequests shouldn't cause alerts.
Maxim Dounin <mdounin@mdounin.ru>
parents: 102
diff changeset
59 proxy_pass http://127.0.0.1:8080/local/;
bb5b5e69b45e Tests: empty cached subrequests shouldn't cause alerts.
Maxim Dounin <mdounin@mdounin.ru>
parents: 102
diff changeset
60 proxy_cache NAME;
bb5b5e69b45e Tests: empty cached subrequests shouldn't cause alerts.
Maxim Dounin <mdounin@mdounin.ru>
parents: 102
diff changeset
61 proxy_cache_valid 200 1h;
bb5b5e69b45e Tests: empty cached subrequests shouldn't cause alerts.
Maxim Dounin <mdounin@mdounin.ru>
parents: 102
diff changeset
62 }
91
ec89d4d65bef Tests: Last-Modified and Accept-Ranges should be cleared on ssi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 73
diff changeset
63 location /local/ {
ec89d4d65bef Tests: Last-Modified and Accept-Ranges should be cleared on ssi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 73
diff changeset
64 ssi off;
ec89d4d65bef Tests: Last-Modified and Accept-Ranges should be cleared on ssi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 73
diff changeset
65 alias %%TESTDIR%%/;
ec89d4d65bef Tests: Last-Modified and Accept-Ranges should be cleared on ssi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 73
diff changeset
66 }
73
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67 }
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68 }
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70 EOF
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72 $t->write_file('test1.html', 'X<!--#echo var="arg_test" -->X');
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73 $t->write_file('test2.html',
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74 'X<!--#include virtual="/test1.html?test=test" -->X');
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75 $t->write_file('test3.html',
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76 'X<!--#set var="blah" value="test" --><!--#echo var="blah" -->X');
129
adbf104668b6 Tests: add test for $args in subrequest only.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
77 $t->write_file('test-args-rewrite.html',
adbf104668b6 Tests: add test for $args in subrequest only.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
78 'X<!--#include virtual="/check?found" -->X');
102
9f723d3ba52d Tests: tests for empty static subrequests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 98
diff changeset
79 $t->write_file('test-empty1.html', 'X<!--#include virtual="/empty.html" -->X');
9f723d3ba52d Tests: tests for empty static subrequests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 98
diff changeset
80 $t->write_file('test-empty2.html',
9f723d3ba52d Tests: tests for empty static subrequests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 98
diff changeset
81 'X<!--#include virtual="/local/empty.html" -->X');
105
bb5b5e69b45e Tests: empty cached subrequests shouldn't cause alerts.
Maxim Dounin <mdounin@mdounin.ru>
parents: 102
diff changeset
82 $t->write_file('test-empty3.html',
bb5b5e69b45e Tests: empty cached subrequests shouldn't cause alerts.
Maxim Dounin <mdounin@mdounin.ru>
parents: 102
diff changeset
83 'X<!--#include virtual="/cache/empty.html" -->X');
102
9f723d3ba52d Tests: tests for empty static subrequests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 98
diff changeset
84 $t->write_file('empty.html', '');
73
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
85
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
86 $t->run();
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88 ###############################################################################
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
90 like(http_get('/test1.html'), qr/^X\(none\)X$/m, 'echo no argument');
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
91 like(http_get('/test1.html?test='), qr/^XX$/m, 'empty argument');
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92 like(http_get('/test1.html?test=test'), qr/^XtestX$/m, 'argument');
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
93 like(http_get('/test1.html?test=test&a=b'), qr/^XtestX$/m, 'argument 2');
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94 like(http_get('/test1.html?a=b&test=test'), qr/^XtestX$/m, 'argument 3');
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
95 like(http_get('/test1.html?a=b&test=test&d=c'), qr/^XtestX$/m, 'argument 4');
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
96 like(http_get('/test1.html?atest=a&testb=b&ctestc=c&test=test'), qr/^XtestX$/m,
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
97 'argument 5');
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
98
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
99 like(http_get('/test2.html'), qr/^XXtestXX$/m, 'argument via include');
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
100
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
101 like(http_get('/test3.html'), qr/^XtestX$/m, 'set');
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
102
129
adbf104668b6 Tests: add test for $args in subrequest only.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
103 # args should be in subrequest even if original request has no args and that
adbf104668b6 Tests: add test for $args in subrequest only.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
104 # was queried somehow (e.g. by server rewrites)
adbf104668b6 Tests: add test for $args in subrequest only.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
105
adbf104668b6 Tests: add test for $args in subrequest only.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
106 like(http_get('/test-args-rewrite.html'), qr/^XX$/m, 'args only subrequest');
adbf104668b6 Tests: add test for $args in subrequest only.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
107
adbf104668b6 Tests: add test for $args in subrequest only.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
108 like(http_get('/test-args-rewrite.html?wasargs'), qr/^XX$/m,
adbf104668b6 Tests: add test for $args in subrequest only.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
109 'args was in main request');
adbf104668b6 Tests: add test for $args in subrequest only.
Maxim Dounin <mdounin@mdounin.ru>
parents: 121
diff changeset
110
91
ec89d4d65bef Tests: Last-Modified and Accept-Ranges should be cleared on ssi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 73
diff changeset
111 # Last-Modified and Accept-Ranges headers should be cleared
ec89d4d65bef Tests: Last-Modified and Accept-Ranges should be cleared on ssi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 73
diff changeset
112
ec89d4d65bef Tests: Last-Modified and Accept-Ranges should be cleared on ssi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 73
diff changeset
113 unlike(http_get('/test1.html'), qr/Last-Modified|Accept-Ranges/im,
ec89d4d65bef Tests: Last-Modified and Accept-Ranges should be cleared on ssi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 73
diff changeset
114 'cleared headers');
ec89d4d65bef Tests: Last-Modified and Accept-Ranges should be cleared on ssi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 73
diff changeset
115 unlike(http_get('/proxy/test1.html'), qr/Last-Modified|Accept-Ranges/im,
ec89d4d65bef Tests: Last-Modified and Accept-Ranges should be cleared on ssi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 73
diff changeset
116 'cleared headers from proxy');
ec89d4d65bef Tests: Last-Modified and Accept-Ranges should be cleared on ssi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 73
diff changeset
117
102
9f723d3ba52d Tests: tests for empty static subrequests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 98
diff changeset
118 like(http_get('/test-empty1.html'), qr/HTTP/, 'empty with ssi');
9f723d3ba52d Tests: tests for empty static subrequests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 98
diff changeset
119 like(http_get('/test-empty2.html'), qr/HTTP/, 'empty without ssi');
105
bb5b5e69b45e Tests: empty cached subrequests shouldn't cause alerts.
Maxim Dounin <mdounin@mdounin.ru>
parents: 102
diff changeset
120 like(http_get('/test-empty3.html'), qr/HTTP/, 'empty with proxy');
bb5b5e69b45e Tests: empty cached subrequests shouldn't cause alerts.
Maxim Dounin <mdounin@mdounin.ru>
parents: 102
diff changeset
121 like(http_get('/test-empty3.html'), qr/HTTP/, 'empty with proxy cached');
bb5b5e69b45e Tests: empty cached subrequests shouldn't cause alerts.
Maxim Dounin <mdounin@mdounin.ru>
parents: 102
diff changeset
122
bb5b5e69b45e Tests: empty cached subrequests shouldn't cause alerts.
Maxim Dounin <mdounin@mdounin.ru>
parents: 102
diff changeset
123 like(`grep -F '[alert]' ${\($t->testdir())}/error.log`, qr/^$/s, 'no alerts');
102
9f723d3ba52d Tests: tests for empty static subrequests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 98
diff changeset
124
73
c8ba98ad0570 Tests: some very basic ssi tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
125 ###############################################################################