Mercurial > hg > nginx-tests
annotate h2_request_body.t @ 1817:c045fbb98e9a
Tests: revised tests for listen port ranges.
Renumbered testing ports to get more chance to execute when run in parallel.
Relaxed condition to skip tests only when the port range is out of sequence.
Adjacent port numbers out of a specified range aren't crucial to skip tests:
if not in sequence, statistically this will be caught in subsequent runs.
Unsafe tests that use wildcard addresses are moved to a separate file.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Fri, 23 Dec 2022 19:20:50 +0400 |
parents | 6d5ecf445e57 |
children | 236d038dc04a |
rev | line source |
---|---|
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
2 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
3 # (C) Sergey Kandaurov |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
5 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
6 # Tests for HTTP/2 protocol with request body. |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
7 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
9 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
11 use strict; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
12 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
14 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
16 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
19 use Test::Nginx::HTTP2; |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
20 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
21 ############################################################################### |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
22 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
23 select STDERR; $| = 1; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
24 select STDOUT; $| = 1; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
25 |
1728
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
26 my $t = Test::Nginx->new()->has(qw/http http_v2 proxy/)->plan(49); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
27 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
28 $t->write_file_expand('nginx.conf', <<'EOF'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
29 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
30 %%TEST_GLOBALS%% |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
31 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
32 daemon off; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
33 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
34 events { |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
35 } |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
36 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
37 http { |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
38 %%TEST_GLOBALS_HTTP%% |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
39 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
40 server { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
955
diff
changeset
|
41 listen 127.0.0.1:8080 http2; |
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
955
diff
changeset
|
42 listen 127.0.0.1:8081; |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
43 server_name localhost; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
44 |
1597
36d69685605e
Tests: added HTTP/2 tests for DATA frames after 400 errors.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1511
diff
changeset
|
45 error_page 400 /proxy2/t.html; |
36d69685605e
Tests: added HTTP/2 tests for DATA frames after 400 errors.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1511
diff
changeset
|
46 |
955
b8948aecba12
Tests: HTTP/2 request body Content-Length tests in proxied request.
Sergey Kandaurov <pluknet@nginx.com>
parents:
952
diff
changeset
|
47 location / { |
b8948aecba12
Tests: HTTP/2 request body Content-Length tests in proxied request.
Sergey Kandaurov <pluknet@nginx.com>
parents:
952
diff
changeset
|
48 add_header X-Length $http_content_length; |
b8948aecba12
Tests: HTTP/2 request body Content-Length tests in proxied request.
Sergey Kandaurov <pluknet@nginx.com>
parents:
952
diff
changeset
|
49 } |
1226
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
50 location /slow { |
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
51 limit_rate 100; |
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
52 } |
1091
a5e428f4440d
Tests: added request body buffering test for requests without body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1070
diff
changeset
|
53 location /off/ { |
a5e428f4440d
Tests: added request body buffering test for requests without body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1070
diff
changeset
|
54 proxy_pass http://127.0.0.1:8081/; |
1226
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
55 add_header X-Body $request_body; |
1091
a5e428f4440d
Tests: added request body buffering test for requests without body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1070
diff
changeset
|
56 add_header X-Body-File $request_body_file; |
a5e428f4440d
Tests: added request body buffering test for requests without body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1070
diff
changeset
|
57 } |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
58 location /proxy2/ { |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
59 add_header X-Body $request_body; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
60 add_header X-Body-File $request_body_file; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
61 client_body_in_file_only on; |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
955
diff
changeset
|
62 proxy_pass http://127.0.0.1:8081/; |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
63 } |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
64 location /client_max_body_size { |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
65 add_header X-Body $request_body; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
66 add_header X-Body-File $request_body_file; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
67 client_body_in_single_buffer on; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
68 client_body_in_file_only on; |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
955
diff
changeset
|
69 proxy_pass http://127.0.0.1:8081/; |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
70 client_max_body_size 10; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
71 } |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
72 } |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
73 } |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
74 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
75 EOF |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
76 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
77 $t->write_file('index.html', ''); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
78 $t->write_file('t.html', 'SEE-THIS'); |
1226
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
79 $t->write_file('slow.html', 'SEE-THIS'); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
80 $t->run(); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
81 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
82 ############################################################################### |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
83 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
84 # request body (uses proxied response) |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
85 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
86 my $s = Test::Nginx::HTTP2->new(); |
1721
6842b0f7fb9e
Tests: restored HTTP/2 request body tests with Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
87 my $sid = $s->new_stream({ path => '/proxy2/t.html', body => 'TEST' }); |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
88 my $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
89 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
90 my ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
91 is(read_body_file($frame->{headers}->{'x-body-file'}), 'TEST', 'request body'); |
955
b8948aecba12
Tests: HTTP/2 request body Content-Length tests in proxied request.
Sergey Kandaurov <pluknet@nginx.com>
parents:
952
diff
changeset
|
92 is($frame->{headers}->{'x-length'}, 4, 'request body - content length'); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
93 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
94 # request body with padding (uses proxied response) |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
95 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
96 $s = Test::Nginx::HTTP2->new(); |
1721
6842b0f7fb9e
Tests: restored HTTP/2 request body tests with Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
97 $sid = $s->new_stream( |
6842b0f7fb9e
Tests: restored HTTP/2 request body tests with Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
98 { path => '/proxy2/t.html', body => 'TEST', body_padding => 42 }); |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
99 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
100 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
101 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
102 is(read_body_file($frame->{headers}->{'x-body-file'}), 'TEST', |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
103 'request body with padding'); |
955
b8948aecba12
Tests: HTTP/2 request body Content-Length tests in proxied request.
Sergey Kandaurov <pluknet@nginx.com>
parents:
952
diff
changeset
|
104 is($frame->{headers}->{'x-length'}, 4, |
b8948aecba12
Tests: HTTP/2 request body Content-Length tests in proxied request.
Sergey Kandaurov <pluknet@nginx.com>
parents:
952
diff
changeset
|
105 'request body with padding - content length'); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
106 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
107 $sid = $s->new_stream(); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
108 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
109 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
110 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
111 is($frame->{headers}->{':status'}, '200', 'request body with padding - next'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
112 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
113 # request body sent in multiple DATA frames in a single packet |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
114 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
115 $s = Test::Nginx::HTTP2->new(); |
1721
6842b0f7fb9e
Tests: restored HTTP/2 request body tests with Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
116 $sid = $s->new_stream( |
6842b0f7fb9e
Tests: restored HTTP/2 request body tests with Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
117 { path => '/proxy2/t.html', body => 'TEST', body_split => [2] }); |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
118 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
119 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
120 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
121 is(read_body_file($frame->{headers}->{'x-body-file'}), 'TEST', |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
122 'request body in multiple frames'); |
955
b8948aecba12
Tests: HTTP/2 request body Content-Length tests in proxied request.
Sergey Kandaurov <pluknet@nginx.com>
parents:
952
diff
changeset
|
123 is($frame->{headers}->{'x-length'}, 4, |
b8948aecba12
Tests: HTTP/2 request body Content-Length tests in proxied request.
Sergey Kandaurov <pluknet@nginx.com>
parents:
952
diff
changeset
|
124 'request body in multiple frames - content length'); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
125 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
126 # request body sent in multiple DATA frames, each in its own packet |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
127 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
128 $s = Test::Nginx::HTTP2->new(); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
129 $sid = $s->new_stream({ path => '/proxy2/t.html', body_more => 1 }); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
130 $s->h2_body('TEST', { body_more => 1 }); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
131 select undef, undef, undef, 0.1; |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
132 $s->h2_body('MOREDATA'); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
133 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
134 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
135 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
136 is(read_body_file($frame->{headers}->{'x-body-file'}), 'TESTMOREDATA', |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
137 'request body in multiple frames separately'); |
955
b8948aecba12
Tests: HTTP/2 request body Content-Length tests in proxied request.
Sergey Kandaurov <pluknet@nginx.com>
parents:
952
diff
changeset
|
138 is($frame->{headers}->{'x-length'}, 12, |
b8948aecba12
Tests: HTTP/2 request body Content-Length tests in proxied request.
Sergey Kandaurov <pluknet@nginx.com>
parents:
952
diff
changeset
|
139 'request body in multiple frames separately - content length'); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
140 |
1728
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
141 # if run with body buffering in filters, it's expected to update window |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
142 # after request body populates initial stream window size set for preread |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
143 |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
144 $s = Test::Nginx::HTTP2->new(); |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
145 $sid = $s->new_stream({ path => '/proxy2/t.html', body_more => 1 }); |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
146 $s->h2_body('01234567' x 2048, { body_more => 1 }); |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
147 select undef, undef, undef, 0.1; |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
148 $s->h2_body('01234567' x 2048, { body_more => 1 }); |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
149 select undef, undef, undef, 0.1; |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
150 $s->h2_body('01234567' x 2048, { body_more => 1 }); |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
151 select undef, undef, undef, 0.1; |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
152 $s->h2_body('01234567' x 2048, { body_more => 1 }); |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
153 |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
154 $frames = $s->read(all => [{ type => 'WINDOW_UPDATE' }]); |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
155 ($frame) = grep { $_->{type} eq 'WINDOW_UPDATE' } @$frames; |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
156 is($frame->{sid}, $sid, 'big request body - WINDOW_UPDATE sid'); |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
157 cmp_ok($frame->{wdelta}, '>=', 65536, 'big request body - WINDOW_UPDATE delta'); |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
158 |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
159 $s->h2_body('01234567' x 2048); |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
160 |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
161 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
162 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
163 is(read_body_file($frame->{headers}->{'x-body-file'}), '01234567' x 10240, |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
164 'big request body - content'); |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
165 is($frame->{headers}->{'x-length'}, 81920, |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
166 'big request body - content length'); |
6d5ecf445e57
Tests: added HTTP/2 test with big request body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1721
diff
changeset
|
167 |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
168 # request body with an empty DATA frame |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
169 # "zero size buf in output" alerts seen |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
170 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
171 $s = Test::Nginx::HTTP2->new(); |
1721
6842b0f7fb9e
Tests: restored HTTP/2 request body tests with Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
172 $sid = $s->new_stream({ path => '/proxy2/', body => '' }); |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
173 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
174 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
175 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
176 is($frame->{headers}->{':status'}, 200, 'request body - empty'); |
955
b8948aecba12
Tests: HTTP/2 request body Content-Length tests in proxied request.
Sergey Kandaurov <pluknet@nginx.com>
parents:
952
diff
changeset
|
177 is($frame->{headers}->{'x-length'}, 0, 'request body - empty size'); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
178 ok($frame->{headers}{'x-body-file'}, 'request body - empty body file'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
179 is(read_body_file($frame->{headers}{'x-body-file'}), '', |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
180 'request body - empty content'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
181 |
955
b8948aecba12
Tests: HTTP/2 request body Content-Length tests in proxied request.
Sergey Kandaurov <pluknet@nginx.com>
parents:
952
diff
changeset
|
182 # it is expected to avoid adding Content-Length for requests without body |
b8948aecba12
Tests: HTTP/2 request body Content-Length tests in proxied request.
Sergey Kandaurov <pluknet@nginx.com>
parents:
952
diff
changeset
|
183 |
b8948aecba12
Tests: HTTP/2 request body Content-Length tests in proxied request.
Sergey Kandaurov <pluknet@nginx.com>
parents:
952
diff
changeset
|
184 $s = Test::Nginx::HTTP2->new(); |
b8948aecba12
Tests: HTTP/2 request body Content-Length tests in proxied request.
Sergey Kandaurov <pluknet@nginx.com>
parents:
952
diff
changeset
|
185 $sid = $s->new_stream({ path => '/proxy2/' }); |
b8948aecba12
Tests: HTTP/2 request body Content-Length tests in proxied request.
Sergey Kandaurov <pluknet@nginx.com>
parents:
952
diff
changeset
|
186 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
b8948aecba12
Tests: HTTP/2 request body Content-Length tests in proxied request.
Sergey Kandaurov <pluknet@nginx.com>
parents:
952
diff
changeset
|
187 |
b8948aecba12
Tests: HTTP/2 request body Content-Length tests in proxied request.
Sergey Kandaurov <pluknet@nginx.com>
parents:
952
diff
changeset
|
188 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
b8948aecba12
Tests: HTTP/2 request body Content-Length tests in proxied request.
Sergey Kandaurov <pluknet@nginx.com>
parents:
952
diff
changeset
|
189 is($frame->{headers}->{':status'}, 200, 'request without body'); |
b8948aecba12
Tests: HTTP/2 request body Content-Length tests in proxied request.
Sergey Kandaurov <pluknet@nginx.com>
parents:
952
diff
changeset
|
190 is($frame->{headers}->{'x-length'}, undef, |
b8948aecba12
Tests: HTTP/2 request body Content-Length tests in proxied request.
Sergey Kandaurov <pluknet@nginx.com>
parents:
952
diff
changeset
|
191 'request without body - content length'); |
b8948aecba12
Tests: HTTP/2 request body Content-Length tests in proxied request.
Sergey Kandaurov <pluknet@nginx.com>
parents:
952
diff
changeset
|
192 |
888
4ab795ab2e62
Tests: added HTTP/2 test for zero RST_STREAM if discarding body.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
886
diff
changeset
|
193 # request body discarded |
4ab795ab2e62
Tests: added HTTP/2 test for zero RST_STREAM if discarding body.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
886
diff
changeset
|
194 # RST_STREAM with zero code received |
4ab795ab2e62
Tests: added HTTP/2 test for zero RST_STREAM if discarding body.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
886
diff
changeset
|
195 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
196 $s = Test::Nginx::HTTP2->new(); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
197 $sid = $s->new_stream({ body_more => 1 }); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
198 $frames = $s->read(all => [{ type => 'RST_STREAM' }], wait => 0.5); |
888
4ab795ab2e62
Tests: added HTTP/2 test for zero RST_STREAM if discarding body.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
886
diff
changeset
|
199 |
4ab795ab2e62
Tests: added HTTP/2 test for zero RST_STREAM if discarding body.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
886
diff
changeset
|
200 ($frame) = grep { $_->{type} eq "RST_STREAM" } @$frames; |
4ab795ab2e62
Tests: added HTTP/2 test for zero RST_STREAM if discarding body.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
886
diff
changeset
|
201 is($frame->{code}, 0, 'request body discarded - zero RST_STREAM'); |
4ab795ab2e62
Tests: added HTTP/2 test for zero RST_STREAM if discarding body.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
886
diff
changeset
|
202 |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
203 # malformed request body length not equal to content-length |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
204 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
205 $s = Test::Nginx::HTTP2->new(); |
1721
6842b0f7fb9e
Tests: restored HTTP/2 request body tests with Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
206 $sid = $s->new_stream({ body => 'TEST', headers => [ |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
207 { name => ':method', value => 'GET', mode => 0 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
208 { name => ':scheme', value => 'http', mode => 0 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
209 { name => ':path', value => '/client_max_body_size', mode => 1 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
210 { name => ':authority', value => 'localhost', mode => 1 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
211 { name => 'content-length', value => '5', mode => 1 }]}); |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
212 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
213 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
214 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
215 is($frame->{headers}->{':status'}, 400, 'request body less than content-length'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
216 |
1721
6842b0f7fb9e
Tests: restored HTTP/2 request body tests with Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
217 $sid = $s->new_stream({ body => 'TEST', headers => [ |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
218 { name => ':method', value => 'GET', mode => 0 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
219 { name => ':scheme', value => 'http', mode => 0 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
220 { name => ':path', value => '/client_max_body_size', mode => 1 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
221 { name => ':authority', value => 'localhost', mode => 1 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
222 { name => 'content-length', value => '3', mode => 1 }]}); |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
223 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
224 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
225 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
226 is($frame->{headers}->{':status'}, 400, 'request body more than content-length'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
227 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
228 # client_max_body_size |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
229 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
230 $s = Test::Nginx::HTTP2->new(); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
231 $sid = $s->new_stream({ path => '/client_max_body_size/t.html', |
1721
6842b0f7fb9e
Tests: restored HTTP/2 request body tests with Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
232 body => 'TESTTEST12' }); |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
233 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
234 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
235 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
236 is($frame->{headers}->{':status'}, 200, 'client_max_body_size - status'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
237 is(read_body_file($frame->{headers}->{'x-body-file'}), 'TESTTEST12', |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
238 'client_max_body_size - body'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
239 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
240 # client_max_body_size - limited |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
241 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
242 $s = Test::Nginx::HTTP2->new(); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
243 $sid = $s->new_stream({ path => '/client_max_body_size/t.html', |
1721
6842b0f7fb9e
Tests: restored HTTP/2 request body tests with Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
244 body => 'TESTTEST123' }); |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
245 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
246 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
247 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
248 is($frame->{headers}->{':status'}, 413, 'client_max_body_size - limited'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
249 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
250 # client_max_body_size - many DATA frames |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
251 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
252 $s = Test::Nginx::HTTP2->new(); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
253 $sid = $s->new_stream({ path => '/client_max_body_size/t.html', |
1721
6842b0f7fb9e
Tests: restored HTTP/2 request body tests with Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
254 body => 'TESTTEST12', body_split => [2] }); |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
255 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
256 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
257 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
258 is($frame->{headers}->{':status'}, 200, 'client_max_body_size many - status'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
259 is(read_body_file($frame->{headers}->{'x-body-file'}), 'TESTTEST12', |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
260 'client_max_body_size many - body'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
261 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
262 # client_max_body_size - many DATA frames - limited |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
263 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
264 $s = Test::Nginx::HTTP2->new(); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
265 $sid = $s->new_stream({ path => '/client_max_body_size/t.html', |
1721
6842b0f7fb9e
Tests: restored HTTP/2 request body tests with Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
266 body => 'TESTTEST123', body_split => [2] }); |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
267 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
268 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
269 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
270 is($frame->{headers}->{':status'}, 413, 'client_max_body_size many - limited'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
271 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
272 # client_max_body_size - padded DATA |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
273 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
274 $s = Test::Nginx::HTTP2->new(); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
275 $sid = $s->new_stream({ path => '/client_max_body_size/t.html', |
1721
6842b0f7fb9e
Tests: restored HTTP/2 request body tests with Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
276 body => 'TESTTEST12', body_padding => 42 }); |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
277 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
278 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
279 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
280 is($frame->{headers}->{':status'}, 200, 'client_max_body_size pad - status'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
281 is(read_body_file($frame->{headers}->{'x-body-file'}), 'TESTTEST12', |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
282 'client_max_body_size pad - body'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
283 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
284 # client_max_body_size - padded DATA - limited |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
285 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
286 $s = Test::Nginx::HTTP2->new(); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
287 $sid = $s->new_stream({ path => '/client_max_body_size/t.html', |
1721
6842b0f7fb9e
Tests: restored HTTP/2 request body tests with Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
288 body => 'TESTTEST123', body_padding => 42 }); |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
289 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
290 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
291 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
292 is($frame->{headers}->{':status'}, 413, 'client_max_body_size pad - limited'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
293 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
294 # client_max_body_size - many padded DATA frames |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
295 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
296 $s = Test::Nginx::HTTP2->new(); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
297 $sid = $s->new_stream({ path => '/client_max_body_size/t.html', |
1721
6842b0f7fb9e
Tests: restored HTTP/2 request body tests with Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
298 body => 'TESTTEST12', body_padding => 42, body_split => [2] }); |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
299 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
300 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
301 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
302 is($frame->{headers}->{':status'}, 200, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
303 'client_max_body_size many pad - status'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
304 is(read_body_file($frame->{headers}->{'x-body-file'}), 'TESTTEST12', |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
305 'client_max_body_size many pad - body'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
306 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
307 # client_max_body_size - many padded DATA frames - limited |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
308 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
309 $s = Test::Nginx::HTTP2->new(); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
310 $sid = $s->new_stream({ path => '/client_max_body_size/t.html', |
1721
6842b0f7fb9e
Tests: restored HTTP/2 request body tests with Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
311 body => 'TESTTEST123', body_padding => 42, body_split => [2] }); |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
312 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
313 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
314 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
315 is($frame->{headers}->{':status'}, 413, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
316 'client_max_body_size many pad - limited'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
317 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
318 # request body without content-length |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
319 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
320 $s = Test::Nginx::HTTP2->new(); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
321 $sid = $s->new_stream({ body_more => 1, headers => [ |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
322 { name => ':method', value => 'GET', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
323 { name => ':scheme', value => 'http', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
324 { name => ':path', value => '/client_max_body_size', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
325 { name => ':authority', value => 'localhost', mode => 2 }]}); |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
326 $s->h2_body('TESTTEST12'); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
327 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
328 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
329 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
330 is($frame->{headers}->{':status'}, 200, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
331 'request body without content-length - status'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
332 is(read_body_file($frame->{headers}->{'x-body-file'}), 'TESTTEST12', |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
333 'request body without content-length - body'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
334 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
335 # request body without content-length - limited |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
336 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
337 $s = Test::Nginx::HTTP2->new(); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
338 $sid = $s->new_stream({ body_more => 1, headers => [ |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
339 { name => ':method', value => 'GET', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
340 { name => ':scheme', value => 'http', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
341 { name => ':path', value => '/client_max_body_size', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
342 { name => ':authority', value => 'localhost', mode => 2 }]}); |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
343 $s->h2_body('TESTTEST123'); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
344 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
345 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
346 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
347 is($frame->{headers}->{':status'}, 413, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
348 'request body without content-length - limited'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
349 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
350 # request body without content-length - many DATA frames |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
351 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
352 $s = Test::Nginx::HTTP2->new(); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
353 $sid = $s->new_stream({ body_more => 1, headers => [ |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
354 { name => ':method', value => 'GET', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
355 { name => ':scheme', value => 'http', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
356 { name => ':path', value => '/client_max_body_size', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
357 { name => ':authority', value => 'localhost', mode => 2 }]}); |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
358 $s->h2_body('TESTTEST12', { body_split => [2] }); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
359 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
360 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
361 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
362 is($frame->{headers}->{':status'}, 200, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
363 'request body without content-length many - status'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
364 is(read_body_file($frame->{headers}->{'x-body-file'}), 'TESTTEST12', |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
365 'request body without content-length many - body'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
366 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
367 # request body without content-length - many DATA frames - limited |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
368 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
369 $s = Test::Nginx::HTTP2->new(); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
370 $sid = $s->new_stream({ body_more => 1, headers => [ |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
371 { name => ':method', value => 'GET', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
372 { name => ':scheme', value => 'http', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
373 { name => ':path', value => '/client_max_body_size', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
374 { name => ':authority', value => 'localhost', mode => 2 }]}); |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
375 $s->h2_body('TESTTEST123', { body_split => [2] }); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
376 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
377 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
378 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
379 is($frame->{headers}->{':status'}, 413, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
380 'request body without content-length many - limited'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
381 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
382 # request body without content-length - padding |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
383 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
384 $s = Test::Nginx::HTTP2->new(); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
385 $sid = $s->new_stream({ body_more => 1, headers => [ |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
386 { name => ':method', value => 'GET', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
387 { name => ':scheme', value => 'http', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
388 { name => ':path', value => '/client_max_body_size', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
389 { name => ':authority', value => 'localhost', mode => 2 }]}); |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
390 $s->h2_body('TESTTEST12', { body_padding => 42 }); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
391 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
392 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
393 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
394 is($frame->{headers}->{':status'}, 200, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
395 'request body without content-length pad - status'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
396 is(read_body_file($frame->{headers}->{'x-body-file'}), 'TESTTEST12', |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
397 'request body without content-length pad - body'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
398 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
399 # request body without content-length - padding - limited |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
400 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
401 $s = Test::Nginx::HTTP2->new(); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
402 $sid = $s->new_stream({ body_more => 1, headers => [ |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
403 { name => ':method', value => 'GET', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
404 { name => ':scheme', value => 'http', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
405 { name => ':path', value => '/client_max_body_size', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
406 { name => ':authority', value => 'localhost', mode => 2 }]}); |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
407 $s->h2_body('TESTTEST123', { body_padding => 42 }); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
408 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
409 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
410 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
411 is($frame->{headers}->{':status'}, 413, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
412 'request body without content-length pad - limited'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
413 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
414 # request body without content-length - padding with many DATA frames |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
415 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
416 $s = Test::Nginx::HTTP2->new(); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
417 $sid = $s->new_stream({ body_more => 1, headers => [ |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
418 { name => ':method', value => 'GET', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
419 { name => ':scheme', value => 'http', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
420 { name => ':path', value => '/client_max_body_size', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
421 { name => ':authority', value => 'localhost', mode => 2 }]}); |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
422 $s->h2_body('TESTTEST', { body_padding => 42, body_split => [2] }); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
423 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
424 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
425 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
426 is($frame->{headers}->{':status'}, 200, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
427 'request body without content-length many pad - status'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
428 is(read_body_file($frame->{headers}->{'x-body-file'}), 'TESTTEST', |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
429 'request body without content-length many pad - body'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
430 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
431 # request body without content-length - padding with many DATA frames - limited |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
432 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
433 $s = Test::Nginx::HTTP2->new(); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
434 $sid = $s->new_stream({ body_more => 1, headers => [ |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
435 { name => ':method', value => 'GET', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
436 { name => ':scheme', value => 'http', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
437 { name => ':path', value => '/client_max_body_size', mode => 2 }, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
438 { name => ':authority', value => 'localhost', mode => 2 }]}); |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
439 $s->h2_body('TESTTEST123', { body_padding => 42, body_split => [2] }); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
945
diff
changeset
|
440 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
441 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
442 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
443 is($frame->{headers}->{':status'}, 413, |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
444 'request body without content-length many pad - limited'); |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
445 |
1091
a5e428f4440d
Tests: added request body buffering test for requests without body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1070
diff
changeset
|
446 # absent request body is not buffered with client_body_in_file_only off |
a5e428f4440d
Tests: added request body buffering test for requests without body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1070
diff
changeset
|
447 # see e02f1977846b for details |
a5e428f4440d
Tests: added request body buffering test for requests without body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1070
diff
changeset
|
448 |
a5e428f4440d
Tests: added request body buffering test for requests without body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1070
diff
changeset
|
449 $s = Test::Nginx::HTTP2->new(); |
a5e428f4440d
Tests: added request body buffering test for requests without body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1070
diff
changeset
|
450 $sid = $s->new_stream({ path => '/off/t.html' }); |
a5e428f4440d
Tests: added request body buffering test for requests without body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1070
diff
changeset
|
451 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
a5e428f4440d
Tests: added request body buffering test for requests without body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1070
diff
changeset
|
452 |
a5e428f4440d
Tests: added request body buffering test for requests without body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1070
diff
changeset
|
453 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
a5e428f4440d
Tests: added request body buffering test for requests without body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1070
diff
changeset
|
454 is($frame->{headers}->{'x-body-file'}, undef, 'no request body in file'); |
a5e428f4440d
Tests: added request body buffering test for requests without body.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1070
diff
changeset
|
455 |
1226
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
456 # ticket #1384, request body corruption in recv_buffer |
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
457 |
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
458 $s = Test::Nginx::HTTP2->new(); |
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
459 $sid = $s->new_stream({ path => '/off/slow.html', body_more => 1 }); |
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
460 select undef, undef, undef, 0.1; |
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
461 |
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
462 # for simplicity, DATA frame is received on its own for a known offset |
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
463 |
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
464 $s->h2_body('TEST'); |
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
465 select undef, undef, undef, 0.1; |
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
466 |
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
467 # overwrite recv_buffer; since upstream response arrival is delayed, |
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
468 # this would make $request_body point to the overridden buffer space |
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
469 |
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
470 $s->h2_ping('xxxx'); |
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
471 |
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
472 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
473 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
474 isnt($frame->{headers}->{'x-body'}, 'xxxx', 'sync buffer'); |
124322e9accd
Tests: HTTP/2 request body sync buffer test added (ticket #1384).
Sergey Kandaurov <pluknet@nginx.com>
parents:
1091
diff
changeset
|
475 |
1597
36d69685605e
Tests: added HTTP/2 tests for DATA frames after 400 errors.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1511
diff
changeset
|
476 # request body after 400 errors redirected to a proxied location |
36d69685605e
Tests: added HTTP/2 tests for DATA frames after 400 errors.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1511
diff
changeset
|
477 |
36d69685605e
Tests: added HTTP/2 tests for DATA frames after 400 errors.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1511
diff
changeset
|
478 $s = Test::Nginx::HTTP2->new(); |
36d69685605e
Tests: added HTTP/2 tests for DATA frames after 400 errors.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1511
diff
changeset
|
479 $sid = $s->new_stream({ body => "", headers => [ |
36d69685605e
Tests: added HTTP/2 tests for DATA frames after 400 errors.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1511
diff
changeset
|
480 { name => ':method', value => "" }]}); |
36d69685605e
Tests: added HTTP/2 tests for DATA frames after 400 errors.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1511
diff
changeset
|
481 |
36d69685605e
Tests: added HTTP/2 tests for DATA frames after 400 errors.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1511
diff
changeset
|
482 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
36d69685605e
Tests: added HTTP/2 tests for DATA frames after 400 errors.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1511
diff
changeset
|
483 ($frame) = grep { $_->{type} eq 'DATA' } @$frames; |
36d69685605e
Tests: added HTTP/2 tests for DATA frames after 400 errors.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1511
diff
changeset
|
484 is($frame->{data}, 'SEE-THIS', 'request body after 400 redirect'); |
36d69685605e
Tests: added HTTP/2 tests for DATA frames after 400 errors.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1511
diff
changeset
|
485 |
876
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
486 ############################################################################### |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
487 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
488 sub read_body_file { |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
489 my ($path) = @_; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
490 open FILE, $path or return "$!"; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
491 local $/; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
492 my $content = <FILE>; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
493 close FILE; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
494 return $content; |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
495 } |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
496 |
a6abbfed42c0
Tests: split HTTP/2 tests, HTTP2 package introduced.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
497 ############################################################################### |