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