Mercurial > hg > nginx-tests
annotate h2_request_body_preread.t @ 1971:ab45ee8011df
Tests: guarded session ticket tests for old OpenSSL versions.
Much like SNI support, TLS session tickets are available starting with
OpenSSL 0.9.8f if TLS extensions support is explicitly configured, and
enabled by default since 0.9.8j. As such, SNI availability is checked
to ensure TLS extensions support is compiled in.
Additionally, the ssl_session_ticket_key.t tests for automatic ticket key
rotation, which uses session ticket key callback, as introduced in
OpenSSL 0.9.8h.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 06 May 2024 00:03:16 +0300 |
parents | 236d038dc04a |
children | 11463d379570 |
rev | line source |
---|---|
954
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
2 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
3 # (C) Sergey Kandaurov |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
5 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
6 # Tests for HTTP/2 protocol with preread request body. |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
7 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
9 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
11 use strict; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
12 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
14 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
16 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
19 use Test::Nginx::HTTP2; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
20 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
21 ############################################################################### |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
22 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
23 select STDERR; $| = 1; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
24 select STDOUT; $| = 1; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
25 |
1900
236d038dc04a
Tests: suppress "listen .. http2;" deprecation warnings.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1499
diff
changeset
|
26 my $t = Test::Nginx->new()->has(qw/http http_v2 proxy limit_req/)->plan(9); |
954
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
27 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
28 $t->write_file_expand('nginx.conf', <<'EOF'); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
29 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
30 %%TEST_GLOBALS%% |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
31 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
32 daemon off; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
33 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
34 events { |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
35 } |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
36 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
37 http { |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
38 %%TEST_GLOBALS_HTTP%% |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
39 |
1459
2710e9505937
Tests: adjusted limit_req rate in HTTP/2 body preread tests more.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1070
diff
changeset
|
40 limit_req_zone $binary_remote_addr zone=req:1m rate=20r/m; |
954
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
41 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
42 server { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
962
diff
changeset
|
43 listen 127.0.0.1:8080 http2; |
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
962
diff
changeset
|
44 listen 127.0.0.1:8081; |
954
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
45 server_name localhost; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
46 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
47 http2_body_preread_size 10; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
48 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
49 location /t { } |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
50 location / { |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
51 add_header X-Body $request_body; |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
962
diff
changeset
|
52 proxy_pass http://127.0.0.1:8081/t; |
954
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
53 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
54 location /req { |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
55 limit_req zone=req burst=2; |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
962
diff
changeset
|
56 proxy_pass http://127.0.0.1:8081/t; |
954
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
57 } |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
58 } |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
59 } |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
60 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
61 server { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
962
diff
changeset
|
62 listen 127.0.0.1:8082 http2; |
954
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
63 server_name localhost; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
64 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
65 http2_body_preread_size 0; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
66 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
67 location / { |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
68 add_header X-Body $request_body; |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
962
diff
changeset
|
69 proxy_pass http://127.0.0.1:8081/t; |
954
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
70 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
71 location /req { |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
72 limit_req zone=req burst=2; |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
962
diff
changeset
|
73 proxy_pass http://127.0.0.1:8081/t; |
954
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
74 } |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
75 } |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
76 } |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
77 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
78 server { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
962
diff
changeset
|
79 listen 127.0.0.1:8083 http2; |
954
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
80 server_name localhost; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
81 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
82 location / { |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
83 add_header X-Body $request_body; |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
962
diff
changeset
|
84 proxy_pass http://127.0.0.1:8081/t; |
954
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
85 } |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
86 } |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
87 } |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
88 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
89 EOF |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
90 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
91 $t->write_file('t', ''); |
1900
236d038dc04a
Tests: suppress "listen .. http2;" deprecation warnings.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1499
diff
changeset
|
92 |
236d038dc04a
Tests: suppress "listen .. http2;" deprecation warnings.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1499
diff
changeset
|
93 # suppress deprecation warning |
236d038dc04a
Tests: suppress "listen .. http2;" deprecation warnings.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1499
diff
changeset
|
94 |
236d038dc04a
Tests: suppress "listen .. http2;" deprecation warnings.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1499
diff
changeset
|
95 open OLDERR, ">&", \*STDERR; close STDERR; |
236d038dc04a
Tests: suppress "listen .. http2;" deprecation warnings.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1499
diff
changeset
|
96 $t->run(); |
236d038dc04a
Tests: suppress "listen .. http2;" deprecation warnings.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1499
diff
changeset
|
97 open STDERR, ">&", \*OLDERR; |
954
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
98 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
99 ############################################################################### |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
100 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
101 # request body within preread size (that is, stream window) |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
102 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
103 my $s = Test::Nginx::HTTP2->new(); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
104 my $sid = $s->new_stream({ body => 'TEST' }); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
105 my $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
106 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
107 my ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
108 is($frame->{headers}->{'x-body'}, 'TEST', 'within preread'); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
109 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
110 # request body beyond preread size |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
111 # RST_STREAM expected due stream window violation |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
112 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
113 TODO: { |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
114 local $TODO = 'not yet'; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
115 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
116 $s = Test::Nginx::HTTP2->new(); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
117 $sid = $s->new_stream({ body => 'TEST' x 10 }); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
118 $frames = $s->read(all => [{ type => 'RST_STREAM' }], wait => 0.5); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
119 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
120 ($frame) = grep { $_->{type} eq "RST_STREAM" } @$frames; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
121 is($frame->{code}, 3, 'beyond preread - FLOW_CONTROL_ERROR'); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
122 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
123 } |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
124 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
125 # within preread size - limited |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
126 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
127 $s = Test::Nginx::HTTP2->new(); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
128 $sid = $s->new_stream({ path => '/req' }); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
129 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
130 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
131 $sid = $s->new_stream({ path => '/req', body => 'TEST' }); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
132 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
133 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
134 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
135 is($frame->{headers}->{'x-body'}, 'TEST', 'within preread limited'); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
136 |
1499
c9d7e2a26b2d
Tests: HTTP/2 request body preread of DATA without END_STREAM.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1459
diff
changeset
|
137 # processing request body without END_STREAM in preread |
c9d7e2a26b2d
Tests: HTTP/2 request body preread of DATA without END_STREAM.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1459
diff
changeset
|
138 |
c9d7e2a26b2d
Tests: HTTP/2 request body preread of DATA without END_STREAM.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1459
diff
changeset
|
139 $sid = $s->new_stream({ path => '/req', body_more => 1, continuation => 1 }); |
c9d7e2a26b2d
Tests: HTTP/2 request body preread of DATA without END_STREAM.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1459
diff
changeset
|
140 $s->h2_continue($sid, |
c9d7e2a26b2d
Tests: HTTP/2 request body preread of DATA without END_STREAM.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1459
diff
changeset
|
141 { headers => [{ name => 'content-length', value => '8' }]}); |
c9d7e2a26b2d
Tests: HTTP/2 request body preread of DATA without END_STREAM.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1459
diff
changeset
|
142 |
c9d7e2a26b2d
Tests: HTTP/2 request body preread of DATA without END_STREAM.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1459
diff
changeset
|
143 $s->h2_body('SEE', { body_more => 1 }); |
c9d7e2a26b2d
Tests: HTTP/2 request body preread of DATA without END_STREAM.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1459
diff
changeset
|
144 $s->read(all => [{ type => 'WINDOW_UPDATE' }]); |
c9d7e2a26b2d
Tests: HTTP/2 request body preread of DATA without END_STREAM.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1459
diff
changeset
|
145 |
c9d7e2a26b2d
Tests: HTTP/2 request body preread of DATA without END_STREAM.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1459
diff
changeset
|
146 $s->h2_body('-THIS'); |
c9d7e2a26b2d
Tests: HTTP/2 request body preread of DATA without END_STREAM.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1459
diff
changeset
|
147 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
c9d7e2a26b2d
Tests: HTTP/2 request body preread of DATA without END_STREAM.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1459
diff
changeset
|
148 |
c9d7e2a26b2d
Tests: HTTP/2 request body preread of DATA without END_STREAM.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1459
diff
changeset
|
149 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
c9d7e2a26b2d
Tests: HTTP/2 request body preread of DATA without END_STREAM.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1459
diff
changeset
|
150 is($frame->{headers}->{'x-body'}, 'SEE-THIS', 'within preread limited - more'); |
c9d7e2a26b2d
Tests: HTTP/2 request body preread of DATA without END_STREAM.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1459
diff
changeset
|
151 |
954
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
152 # beyond preread size - limited |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
153 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
154 $s = Test::Nginx::HTTP2->new(); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
155 $sid = $s->new_stream({ path => '/req', body => 'TEST' x 10 }); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
156 $frames = $s->read(all => [{ type => 'RST_STREAM' }]); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
157 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
158 ($frame) = grep { $_->{type} eq "RST_STREAM" } @$frames; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
159 is($frame->{code}, 3, 'beyond preread limited - FLOW_CONTROL_ERROR'); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
160 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
161 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
162 # zero preread size |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
163 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
164 TODO: { |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
165 local $TODO = 'not yet'; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
166 |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
962
diff
changeset
|
167 $s = Test::Nginx::HTTP2->new(port(8082)); |
954
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
168 $sid = $s->new_stream({ body => 'TEST' }); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
169 $frames = $s->read(all => [{ type => 'RST_STREAM' }], wait => 0.5); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
170 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
171 ($frame) = grep { $_->{type} eq "RST_STREAM" } @$frames; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
172 is($frame->{code}, 3, 'zero preread - FLOW_CONTROL_ERROR'); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
173 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
174 } |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
175 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
176 # zero preread size - limited |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
177 |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
962
diff
changeset
|
178 $s = Test::Nginx::HTTP2->new(port(8082)); |
954
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
179 $sid = $s->new_stream({ path => '/req', body => 'TEST' }); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
180 $frames = $s->read(all => [{ type => 'RST_STREAM' }]); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
181 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
182 ($frame) = grep { $_->{type} eq "RST_STREAM" } @$frames; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
183 is($frame->{code}, 3, 'zero preread limited - FLOW_CONTROL_ERROR'); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
184 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
185 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
186 # REFUSED_STREAM on request body prior SETTINGS acknowledgement |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
187 |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
962
diff
changeset
|
188 $s = Test::Nginx::HTTP2->new(port(8080), pure => 1); |
954
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
189 $sid = $s->new_stream({ body => 'TEST' }); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
190 $frames = $s->read(all => [{ type => 'RST_STREAM' }]); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
191 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
192 ($frame) = grep { $_->{type} eq "RST_STREAM" } @$frames; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
193 is($frame->{code}, 7, 'no SETTINGS ack - REFUSED_STREAM'); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
194 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
195 # default preread size - no REFUSED_STREAM expected |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
196 |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
962
diff
changeset
|
197 $s = Test::Nginx::HTTP2->new(port(8083), pure => 1); |
954
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
198 $sid = $s->new_stream({ body => 'TEST' }); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
199 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
200 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
201 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
202 is($frame->{headers}->{'x-body'}, 'TEST', 'no SETTINGS ack - default preread'); |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
203 |
b9692ec5a08b
Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
204 ############################################################################### |