annotate t/bytes.t @ 19:57365655ee44

Whitespace cleanup, no functional changes.
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 24 Nov 2009 13:51:58 +0300
parents 314242bda1c1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Tests for bytes filter module.
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 use Test::More;
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13 use Test::Nginx;
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15 ###############################################################################
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 select STDERR; $| = 1;
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18 select STDOUT; $| = 1;
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19
17
314242bda1c1 Correctly handle last ignored buffer again.
Maxim Dounin <mdounin@mdounin.ru>
parents: 15
diff changeset
20 my $t = Test::Nginx->new()->plan(25);
15
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 $t->write_file_expand('nginx.conf', <<'EOF');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24 master_process off;
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25 daemon off;
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27 events {
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28 }
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
30 http {
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31 access_log off;
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 root %%TESTDIR%%;
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34 client_body_temp_path %%TESTDIR%%/client_body_temp;
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 fastcgi_temp_path %%TESTDIR%%/fastcgi_temp;
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36 proxy_temp_path %%TESTDIR%%/proxy_temp;
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38 server {
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 listen 127.0.0.1:8080;
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40 server_name localhost;
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41 location / {
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42 bytes on;
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43 }
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44 }
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45 }
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 EOF
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49 $t->write_file('t1',
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50 join('', map { sprintf "X%03dXXXXXX", $_ } (0 .. 99)));
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51 $t->run();
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53 ###############################################################################
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55 my $t1;
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57 # normal requests
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59 $t1 = http_get('/t1');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60 like($t1, qr/200/, 'full reply');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61 like($t1, qr/Content-Length: 1000/, 'full reply length');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62 like($t1, qr/^(X[0-9]{3}XXXXXX){100}$/m, 'full reply content');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64 $t1 = http_get('/t1?bytes=0-');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65 like($t1, qr/200/, 'full reply filtered');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66 like($t1, qr/Content-Length: 1000/, 'full reply filtered length');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67 like($t1, qr/^(X[0-9]{3}XXXXXX){100}$/m, 'full reply filtered content');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69 $t1 = http_get('/t1?bytes=0-9,100-109,990-');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70 like($t1, qr/200/, 'complex reply');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71 like($t1, qr/Content-Length: 30/, 'complex reply length');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72 like($t1, qr/^(X[0-9]{3}XXXXXX){3}$/m, 'complex reply content');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74 $t1 = http_get('/t1?bytes=-10');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75 like($t1, qr/200/, 'final bytes');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76 like($t1, qr/Content-Length: 10/, 'final bytes length');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
77 like($t1, qr/^X099XXXXXX$/m, 'final bytes content');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
78
17
314242bda1c1 Correctly handle last ignored buffer again.
Maxim Dounin <mdounin@mdounin.ru>
parents: 15
diff changeset
79 # standard error pages contain multiple buffers in one chain
314242bda1c1 Correctly handle last ignored buffer again.
Maxim Dounin <mdounin@mdounin.ru>
parents: 15
diff changeset
80
314242bda1c1 Correctly handle last ignored buffer again.
Maxim Dounin <mdounin@mdounin.ru>
parents: 15
diff changeset
81 like(http_get('/notfound?bytes=0-9'), qr/404/, 'not found');
314242bda1c1 Correctly handle last ignored buffer again.
Maxim Dounin <mdounin@mdounin.ru>
parents: 15
diff changeset
82
15
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
83 # various range requests
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
85 $t1 = http_get_range('/t1?bytes=100-', 'Range: bytes=0-9');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
86 like($t1, qr/206/, 'first bytes - 206 partial reply');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87 like($t1, qr/Content-Length: 10/, 'first bytes - correct length');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88 like($t1, qr/Content-Range: bytes 0-9\/900/, 'first bytes - content range');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89 like($t1, qr/^X010X{6}$/m, 'first bytes - correct content');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
90
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
91 $t1 = http_get_range('/t1?bytes=100-', 'Range: bytes=-10');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92 like($t1, qr/206/, 'final bytes - 206 partial reply');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
93 like($t1, qr/Content-Length: 10/, 'final bytes - content length');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94 like($t1, qr/Content-Range: bytes 890-899\/900/,
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
95 'final bytes - content range');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
96 like($t1, qr/^X099XXXXXX$/m, 'final bytes - correct content');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
97
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
98 $t1 = http_get_range('/t1?bytes=0-12,100-', 'Range: bytes=0-99');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
99 like($t1, qr/206/, 'multi buffers - 206 partial reply');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
100 like($t1, qr/Content-Length: 100/, 'multi buffers - content length');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
101 like($t1, qr/Content-Range: bytes 0-99\/913/, 'multi buffers - content range');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
102 like($t1, qr/^X000X{6}X00X010XXXXXX(X01[1-7]XXXXXX){7}X018XXX$/m,
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
103 'multi buffers - correct content');
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
104
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
105 ###############################################################################
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
106
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
107 sub http_get_range {
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
108 my ($url, $extra) = @_;
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
109 return http(<<EOF);
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
110 GET $url HTTP/1.1
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
111 Host: localhost
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
112 Connection: close
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
113 $extra
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
114
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
115 EOF
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
116 }
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
117
d6f0d7a8d752 Add some tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
118 ###############################################################################