Mercurial > hg > nginx-tests
annotate http_expect_100_continue.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 | 31e2acce8fa4 |
rev | line source |
---|---|
53
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 # Tests for Expect: 100-continue support. |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 ############################################################################### |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 use warnings; |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 use strict; |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
12 use Test::More; |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 BEGIN { use FindBin; chdir($FindBin::Bin); } |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
15 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
16 use lib 'lib'; |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
17 use Test::Nginx; |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 ############################################################################### |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 select STDERR; $| = 1; |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 select STDOUT; $| = 1; |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 |
121
8ac1faaddd2c
Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents:
107
diff
changeset
|
24 my $t = Test::Nginx->new()->has(qw/http proxy/)->plan(2); |
53
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
25 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
26 $t->write_file_expand('nginx.conf', <<'EOF'); |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
27 |
107
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
64
diff
changeset
|
28 %%TEST_GLOBALS%% |
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
64
diff
changeset
|
29 |
249
6a0d934950bc
Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents:
166
diff
changeset
|
30 daemon off; |
53
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 events { |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
33 } |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
34 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 http { |
107
1c0ec30614c6
Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents:
64
diff
changeset
|
36 %%TEST_GLOBALS_HTTP%% |
53
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
38 server { |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
39 listen 127.0.0.1:8080; |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
40 server_name localhost; |
63
53eff3a83886
Tests: fix expect-100-continue for 0.7.31.
Maxim Dounin <mdounin@mdounin.ru>
parents:
55
diff
changeset
|
41 location / { |
53eff3a83886
Tests: fix expect-100-continue for 0.7.31.
Maxim Dounin <mdounin@mdounin.ru>
parents:
55
diff
changeset
|
42 proxy_pass http://localhost:8080/local; |
53eff3a83886
Tests: fix expect-100-continue for 0.7.31.
Maxim Dounin <mdounin@mdounin.ru>
parents:
55
diff
changeset
|
43 } |
53eff3a83886
Tests: fix expect-100-continue for 0.7.31.
Maxim Dounin <mdounin@mdounin.ru>
parents:
55
diff
changeset
|
44 location /local { |
53eff3a83886
Tests: fix expect-100-continue for 0.7.31.
Maxim Dounin <mdounin@mdounin.ru>
parents:
55
diff
changeset
|
45 } |
53
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
46 } |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
47 } |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
48 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
49 EOF |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
50 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
51 $t->run(); |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
52 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
53 ############################################################################### |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
54 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
55 like(http_100_request('/', '1.1'), qr/100/, 'expect 100 continue'); |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
56 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
57 # From RFC 2616, 8.2.3 Use of the 100 (Continue) Status: |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
58 # |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
59 # - An origin server SHOULD NOT send a 100 (Continue) response if |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
60 # the request message does not include an Expect request-header |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
61 # field with the "100-continue" expectation, and MUST NOT send a |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
62 # 100 (Continue) response if such a request comes from an HTTP/1.0 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
63 # (or earlier) client. |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
64 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
65 unlike(http_100_request('/', '1.0'), qr/100/, 'no 100 continue via http 1.0'); |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
66 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
67 ############################################################################### |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
68 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
69 sub http_100_request { |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
70 my ($url, $version) = @_; |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
71 my $r = http(<<EOF); |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
72 POST $url HTTP/$version |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
73 Host: localhost |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
74 Expect: 100-continue |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
75 Content-Length: 0 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
76 Connection: close |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
77 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
78 EOF |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
79 } |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
80 |
c8a816c678e1
Tests: add tests for Expect header handling.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
81 ############################################################################### |