annotate range_if_range.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 a9621dbbd0d4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
173
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Tests for range filter module with If-Range header.
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 use Test::More;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 use lib 'lib';
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 use Test::Nginx;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 ###############################################################################
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 select STDERR; $| = 1;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 select STDOUT; $| = 1;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24 my $t = Test::Nginx->new()->has(qw/http/)->plan(8);
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26 $t->write_file_expand('nginx.conf', <<'EOF');
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28 %%TEST_GLOBALS%%
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29
249
6a0d934950bc Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 242
diff changeset
30 daemon off;
173
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 events {
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33 }
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 http {
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36 %%TEST_GLOBALS_HTTP%%
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38 server {
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 listen 127.0.0.1:8080;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40 server_name localhost;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42 location /t2.html {
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43 add_header Last-Modified "";
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44 }
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46 location /t3.html {
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 add_header Last-Modified "Mon, 28 Sep 1970 06:00:00 GMT";
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48 }
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49 }
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50 }
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52 EOF
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54 $t->write_file('t1.html',
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55 join('', map { sprintf "X%03dXXXXXX", $_ } (0 .. 99)));
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56 $t->write_file('t2.html',
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57 join('', map { sprintf "X%03dXXXXXX", $_ } (0 .. 99)));
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58 $t->write_file('t3.html',
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59 join('', map { sprintf "X%03dXXXXXX", $_ } (0 .. 99)));
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60 $t->run();
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62 ###############################################################################
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64 my $t1;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66 # If-Range
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68 $t1 = http_get_range('/t1.html', "Range: bytes=0-9\nIf-Range: wrong");
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69 like($t1, qr/200 OK/, 'if-range wrong');
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70 like($t1, qr/Last-Modified: /, 'if-range wrong - last modified');
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72 $t1 =~ m/Last-Modified: (.*)/m;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73 my $last = $1;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75 $t1 = http_get_range('/t1.html', "Range: bytes=0-9\nIf-Range: $last");
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76 like($t1, qr/206/, 'if-range');
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
77
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
78 # If-Range + add_header Last-Modified ""
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
79
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
80 $t1 = http_get_range('/t2.html', "Range: bytes=0-9\nIf-Range: wrong");
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
81
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
82 TODO: {
242
8f280348d76f Tests: add has_version() method and use it as appropriate.
Maxim Dounin <mdounin@mdounin.ru>
parents: 241
diff changeset
83 local $TODO = 'not yet' unless $t->has_version('1.3.3');
173
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
85 like($t1, qr/200 OK/, 'if-range notime');
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
86
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87 }
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89 unlike($t1, qr/Last-Modified: /, 'if-range notime - no last modified');
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
90
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
91 # If-Range + add_header Last-Modified "Mon, 28 Sep 1970 06:00:00 GMT"
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
93 $t1 = http_get_range('/t3.html', "Range: bytes=0-9\nIf-Range: wrong");
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
95 TODO: {
242
8f280348d76f Tests: add has_version() method and use it as appropriate.
Maxim Dounin <mdounin@mdounin.ru>
parents: 241
diff changeset
96 local $TODO = 'not yet' unless $t->has_version('1.3.3');
173
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
97
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
98 like($t1, qr/200 OK/, 'if-range time wrong');
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
99
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
100 }
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
101
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
102 like($t1, qr/Last-Modified: Mon, 28 Sep 1970 06:00:00 GMT/,
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
103 'if-range time wrong - last modified');
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
104
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
105 $t1 = http_get_range('/t3.html',
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
106 "Range: bytes=0-9\nIf-Range: Mon, 28 Sep 1970 06:00:00 GMT");
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
107 like($t1, qr/206/, 'if-range time');
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
108
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
109 ###############################################################################
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
110
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
111 sub http_get_range {
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
112 my ($url, $extra) = @_;
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
113 return http(<<EOF);
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
114 GET $url HTTP/1.1
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
115 Host: localhost
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
116 Connection: close
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
117 $extra
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
118
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
119 EOF
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
120 }
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
121
20d3461de9da Tests: If-Range tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
122 ###############################################################################