annotate t/gunzip_static.t @ 21:c0301992025a draft default tip

Gunzip: tests cleanup.
author Maxim Dounin <mdounin@mdounin.ru>
date Fri, 07 Sep 2012 19:38:56 +0400
parents 1adc6718cc05
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
21
c0301992025a Gunzip: tests cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 20
diff changeset
24 my $t = Test::Nginx->new()->has(qw/http gunzip 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
21
c0301992025a Gunzip: tests cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 20
diff changeset
28 %%TEST_GLOBALS%%
c0301992025a Gunzip: tests cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 20
diff changeset
29
0
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
30 daemon off;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 events {
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
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 http {
21
c0301992025a Gunzip: tests cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 20
diff changeset
36 %%TEST_GLOBALS_HTTP%%
0
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 server {
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 listen 127.0.0.1:8080;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40 server_name localhost;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41 location / {
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42 gunzip on;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43 gzip_vary on;
4
2698bf018167 Gunzip: add tests for replies from gzip_static always.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
44 gzip_static always;
0
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45 }
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46 location /error {
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 error_page 500 /t1;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48 return 500;
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 }
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51 }
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53 EOF
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 my $in = join('', map { sprintf "X%03dXXXXXX", $_ } (0 .. 99));
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56 my $out;
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58 IO::Compress::Gzip::gzip(\$in => \$out);
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60 $t->write_file('t1.gz', $out);
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61 $t->write_file('t2.gz', $out . $out);
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62 $t->write_file('t3', 'not compressed');
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63
4
2698bf018167 Gunzip: add tests for replies from gzip_static always.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
64 eval {
2698bf018167 Gunzip: add tests for replies from gzip_static always.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
65 open OLDERR, ">&", \*STDERR; close STDERR;
2698bf018167 Gunzip: add tests for replies from gzip_static always.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
66 $t->run();
2698bf018167 Gunzip: add tests for replies from gzip_static always.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
67 open STDERR, ">&", \*OLDERR;
2698bf018167 Gunzip: add tests for replies from gzip_static always.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
68 };
2698bf018167 Gunzip: add tests for replies from gzip_static always.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
69 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
70
2698bf018167 Gunzip: add tests for replies from gzip_static always.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3
diff changeset
71 $t->plan(12);
0
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73 ###############################################################################
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75 pass('runs');
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76
1
0dd7d109e56b Gunzip: add more tests and improve docs.
Maxim Dounin <mdounin@mdounin.ru>
parents: 0
diff changeset
77 my $r = http_get('/t1');
0dd7d109e56b Gunzip: add more tests and improve docs.
Maxim Dounin <mdounin@mdounin.ru>
parents: 0
diff changeset
78 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
79 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
80
0dd7d109e56b Gunzip: add more tests and improve docs.
Maxim Dounin <mdounin@mdounin.ru>
parents: 0
diff changeset
81 $r = http_gzip_request('/t1');
0dd7d109e56b Gunzip: add more tests and improve docs.
Maxim Dounin <mdounin@mdounin.ru>
parents: 0
diff changeset
82 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
83 like($r, qr/\Q$out\E/, 'gzip still works - content');
0
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
85 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
86
1
0dd7d109e56b Gunzip: add more tests and improve docs.
Maxim Dounin <mdounin@mdounin.ru>
parents: 0
diff changeset
87 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
88
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89 unlike(http_head('/t1'), qr/Content-Encoding/, 'head - no content encoding');
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
90
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
91 like(http_get('/t1'), qr/Vary/, 'get vary');
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92 like(http_head('/t1'), qr/Vary/, 'head vary');
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
93 unlike(http_get('/t3'), qr/Vary/, 'no vary on non-gzipped get');
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94 unlike(http_head('/t3'), qr/Vary/, 'no vary on non-gzipped head');
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
95
a75d4ad9c5d2 Gunzip filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
96 ###############################################################################