Mercurial > hg > nginx-tests
annotate not_modified.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 | 5c25acbc870a |
rev | line source |
---|---|
111
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 # Tests for not modified filter module. |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 ############################################################################### |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 use warnings; |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 use strict; |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
12 use Test::More; |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 BEGIN { use FindBin; chdir($FindBin::Bin); } |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
15 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
16 use lib 'lib'; |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
17 use Test::Nginx; |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 ############################################################################### |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 select STDERR; $| = 1; |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 select STDOUT; $| = 1; |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 |
226
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
24 my $t = Test::Nginx->new()->has('http')->plan(12) |
111
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
25 ->write_file_expand('nginx.conf', <<'EOF'); |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
26 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
27 %%TEST_GLOBALS%% |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
28 |
249
6a0d934950bc
Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
226
diff
changeset
|
29 daemon off; |
111
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
30 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 events { |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 } |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
33 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
34 http { |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 %%TEST_GLOBALS_HTTP%% |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
36 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 server { |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
38 listen 127.0.0.1:8080; |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
39 server_name localhost; |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
40 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
41 location / { |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
42 if_modified_since before; |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
43 } |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
44 } |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
45 } |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
46 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
47 EOF |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
48 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
49 $t->write_file('t', ''); |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
50 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
51 $t->run(); |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
52 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
53 ############################################################################### |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
54 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
55 like(http_get_ims('/t', 'Wed, 08 Jul 2037 22:53:52 GMT'), qr/304/, |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
56 '0x7F000000'); |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
57 like(http_get_ims('/t', 'Tue, 19 Jan 2038 03:14:07 GMT'), qr/304/, |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
58 '0x7FFFFFFF'); |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
59 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
60 SKIP: { |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
61 skip "only for 32-bit time_t", 2 if (gmtime(0xFFFFFFFF))[5] == 206; |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
62 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
63 like(http_get_ims('/t', 'Tue, 19 Jan 2038 03:14:08 GMT'), qr/200/, |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
64 '0x7FFFFFFF + 1'); |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
65 like(http_get_ims('/t', 'Fri, 25 Feb 2174 09:42:23 GMT'), qr/200/, |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
66 '0x17FFFFFFF'); |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
67 } |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
68 |
226
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
69 # If-Match, If-None-Match tests |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
70 |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
71 my ($t1, $etag); |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
72 |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
73 $t1 = http_get('/t'); |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
74 |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
75 SKIP: { |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
76 skip "no etag support", 8 if $t1 !~ /ETag: (".*")/; |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
77 $etag = $1; |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
78 |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
79 like(http_get_inm('/t', $etag), qr/304/, 'if-none-match'); |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
80 like(http_get_inm('/t', '"foo"'), qr/200/, 'if-none-match fail'); |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
81 like(http_get_inm('/t', '"foo", "bar", ' . $etag . ' , "baz"'), qr/304/, |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
82 'if-none-match with complex list'); |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
83 like(http_get_inm('/t', '*'), qr/304/, 'if-none-match all'); |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
84 |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
85 like(http_get_im('/t', $etag), qr/200/, 'if-match'); |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
86 like(http_get_im('/t', '"foo"'), qr/412/, 'if-match fail'); |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
87 like(http_get_im('/t', '"foo", "bar", ' . "\t" . $etag . ' , "baz"'), |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
88 qr/200/, 'if-match with complex list'); |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
89 like(http_get_im('/t', '*'), qr/200/, 'if-match all'); |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
90 } |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
91 |
111
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
92 ############################################################################### |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
93 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
94 sub http_get_ims { |
226
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
95 my ($url, $ims) = @_; |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
96 return http(<<EOF); |
111
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
97 GET $url HTTP/1.0 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
98 Host: localhost |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
99 If-Modified-Since: $ims |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
100 |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
101 EOF |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
102 } |
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
103 |
226
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
104 sub http_get_inm { |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
105 my ($url, $inm) = @_; |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
106 return http(<<EOF); |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
107 GET $url HTTP/1.0 |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
108 Host: localhost |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
109 If-None-Match: $inm |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
110 |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
111 EOF |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
112 } |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
113 |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
114 sub http_get_im { |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
115 my ($url, $inm) = @_; |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
116 return http(<<EOF); |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
117 GET $url HTTP/1.0 |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
118 Host: localhost |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
119 If-Match: $inm |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
120 |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
121 EOF |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
122 } |
e7a01be387ad
Tests: added some etag tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
123 |
111
02838a17ba9a
Tests: add not modified filter (parse time, actually) tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
124 ############################################################################### |