annotate t/gunzip-static.t @ 4:2698bf018167

Gunzip: add tests for replies from gzip_static always.
author Maxim Dounin <mdounin@mdounin.ru>
date Sun, 27 Dec 2009 03:45:37 +0300
parents t/gunzip.t@7170c171150c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
4
2698bf018167 Gunzip: add tests for replies from gzip_static always.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
5 # Tests for gunzip filter module with gzip_static always. It is basically
2698bf018167 Gunzip: add tests for replies from gzip_static always.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
6 # the copy of gunzip.t with minor modifications.
0
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8 ###############################################################################
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use warnings;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11 use strict;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13 use Test::More;
1
0dd7d109e56b Gunzip: add more tests and improve docs.
Maxim Dounin <mdounin@mdounin.ru>
parents: 0
diff changeset
14 use Test::Nginx qw/ :DEFAULT :gzip /;
0
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 ###############################################################################
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18 select STDERR; $| = 1;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 select STDOUT; $| = 1;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 eval { require IO::Compress::Gzip; };
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 Test::More::plan(skip_all => "IO::Compress::Gzip not found") if $@;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
4
2698bf018167 Gunzip: add tests for replies from gzip_static always.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
24 my $t = Test::Nginx->new()->has(qw/http proxy gzip_static/);
0
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26 $t->write_file_expand('nginx.conf', <<'EOF');
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28 master_process off;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29 daemon off;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
30
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31 events {
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 }
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34 http {
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 access_log off;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36 root %%TESTDIR%%;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38 client_body_temp_path %%TESTDIR%%/client_body_temp;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 fastcgi_temp_path %%TESTDIR%%/fastcgi_temp;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40 proxy_temp_path %%TESTDIR%%/proxy_temp;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42 server {
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43 listen 127.0.0.1:8080;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44 server_name localhost;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45 location / {
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46 gunzip on;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 gzip_vary on;
4
2698bf018167 Gunzip: add tests for replies from gzip_static always.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
48 gzip_static always;
0
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49 }
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50 location /error {
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51 error_page 500 /t1;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52 return 500;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53 }
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54 }
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55 }
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57 EOF
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59 my $in = join('', map { sprintf "X%03dXXXXXX", $_ } (0 .. 99));
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60 my $out;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62 IO::Compress::Gzip::gzip(\$in => \$out);
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64 $t->write_file('t1.gz', $out);
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65 $t->write_file('t2.gz', $out . $out);
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66 $t->write_file('t3', 'not compressed');
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67
4
2698bf018167 Gunzip: add tests for replies from gzip_static always.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
68 eval {
2698bf018167 Gunzip: add tests for replies from gzip_static always.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
69 open OLDERR, ">&", \*STDERR; close STDERR;
2698bf018167 Gunzip: add tests for replies from gzip_static always.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
70 $t->run();
2698bf018167 Gunzip: add tests for replies from gzip_static always.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
71 open STDERR, ">&", \*OLDERR;
2698bf018167 Gunzip: add tests for replies from gzip_static always.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
72 };
2698bf018167 Gunzip: add tests for replies from gzip_static always.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
73 plan(skip_all => 'no gzip_static always') if $@;
2698bf018167 Gunzip: add tests for replies from gzip_static always.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
74
2698bf018167 Gunzip: add tests for replies from gzip_static always.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
75 $t->plan(12);
0
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
77 ###############################################################################
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
78
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
79 pass('runs');
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
80
1
0dd7d109e56b Gunzip: add more tests and improve docs.
Maxim Dounin <mdounin@mdounin.ru>
parents: 0
diff changeset
81 my $r = http_get('/t1');
0dd7d109e56b Gunzip: add more tests and improve docs.
Maxim Dounin <mdounin@mdounin.ru>
parents: 0
diff changeset
82 unlike($r, qr/Content-Encoding/, 'no content encoding');
0dd7d109e56b Gunzip: add more tests and improve docs.
Maxim Dounin <mdounin@mdounin.ru>
parents: 0
diff changeset
83 like($r, qr/^(X\d\d\dXXXXXX){100}$/m, 'correct gunzipped response');
0dd7d109e56b Gunzip: add more tests and improve docs.
Maxim Dounin <mdounin@mdounin.ru>
parents: 0
diff changeset
84
0dd7d109e56b Gunzip: add more tests and improve docs.
Maxim Dounin <mdounin@mdounin.ru>
parents: 0
diff changeset
85 $r = http_gzip_request('/t1');
0dd7d109e56b Gunzip: add more tests and improve docs.
Maxim Dounin <mdounin@mdounin.ru>
parents: 0
diff changeset
86 like($r, qr/Content-Encoding: gzip/, 'gzip still works - encoding');
0dd7d109e56b Gunzip: add more tests and improve docs.
Maxim Dounin <mdounin@mdounin.ru>
parents: 0
diff changeset
87 like($r, qr/\Q$out\E/, 'gzip still works - content');
0
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89 like(http_get('/t2'), qr/^(X\d\d\dXXXXXX){200}$/m, 'multiple gzip members');
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
90
1
0dd7d109e56b Gunzip: add more tests and improve docs.
Maxim Dounin <mdounin@mdounin.ru>
parents: 0
diff changeset
91 like(http_get('/error'), qr/^(X\d\d\dXXXXXX){100}$/m, 'errors gunzipped');
0
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
93 unlike(http_head('/t1'), qr/Content-Encoding/, 'head - no content encoding');
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
95 like(http_get('/t1'), qr/Vary/, 'get vary');
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
96 like(http_head('/t1'), qr/Vary/, 'head vary');
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
97 unlike(http_get('/t3'), qr/Vary/, 'no vary on non-gzipped get');
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
98 unlike(http_head('/t3'), qr/Vary/, 'no vary on non-gzipped head');
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
99
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
100 ###############################################################################