annotate h2_request_body_preread.t @ 1427:eb1d883305ea

Tests: avoid edge cases in upstream random two test. Unavailable servers contribute to the number of attempts, if selected, before the balancer would fall back to the default round-robin method. This means that it's quite possible to get server with more connections. To facilitate with selecting two alive servers, down server was removed from the upstream configuration at the cost of slightly worse coverage.
author Sergey Kandaurov <pluknet@nginx.com>
date Thu, 10 Jan 2019 17:42:34 +0300
parents efccab043dd3
children 2710e9505937
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
1020
196d33c2bb45 Tests: removed TODO and try_run() checks for legacy versions.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 974
diff changeset
26 my $t = Test::Nginx->new()->has(qw/http http_v2 proxy limit_req/);
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
962
e214983c605b Tests: adjusted limit_req rate value in HTTP/2 body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 954
diff changeset
40 limit_req_zone $binary_remote_addr zone=req:1m rate=30r/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', '');
1070
efccab043dd3 Tests: removed TODOs for fixes merged in 1.10.2.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1020
diff changeset
92 $t->run()->plan(8);
954
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
93
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
94 ###############################################################################
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
95
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
96 # 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
97
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
98 my $s = Test::Nginx::HTTP2->new();
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
99 my $sid = $s->new_stream({ body => 'TEST' });
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
100 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
101
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
102 my ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
103 is($frame->{headers}->{'x-body'}, 'TEST', 'within preread');
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
104
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
105 # request body beyond preread size
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
106 # RST_STREAM expected due stream window violation
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
107
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
108 TODO: {
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
109 local $TODO = 'not yet';
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
110
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
111 $s = Test::Nginx::HTTP2->new();
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
112 $sid = $s->new_stream({ body => 'TEST' x 10 });
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
113 $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
114
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
115 ($frame) = grep { $_->{type} eq "RST_STREAM" } @$frames;
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
116 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
117
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
118 }
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 # within preread size - limited
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
121
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
122 $s = Test::Nginx::HTTP2->new();
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
123 $sid = $s->new_stream({ path => '/req' });
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
124 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]);
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
125
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
126 $sid = $s->new_stream({ path => '/req', body => 'TEST' });
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
127 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]);
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
128
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
129 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
130 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
131
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
132 # beyond preread size - limited
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 $s = Test::Nginx::HTTP2->new();
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
135 $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
136 $frames = $s->read(all => [{ type => 'RST_STREAM' }]);
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
137
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
138 ($frame) = grep { $_->{type} eq "RST_STREAM" } @$frames;
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
139 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
140
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
141
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
142 # zero preread size
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
143
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
144 TODO: {
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
145 local $TODO = 'not yet';
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
146
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 962
diff changeset
147 $s = Test::Nginx::HTTP2->new(port(8082));
954
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
148 $sid = $s->new_stream({ body => 'TEST' });
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
149 $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
150
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
151 ($frame) = grep { $_->{type} eq "RST_STREAM" } @$frames;
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
152 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
153
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
154 }
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
155
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
156 # zero preread size - limited
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
157
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 962
diff changeset
158 $s = Test::Nginx::HTTP2->new(port(8082));
954
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
159 $sid = $s->new_stream({ path => '/req', body => 'TEST' });
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
160 $frames = $s->read(all => [{ type => 'RST_STREAM' }]);
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 ($frame) = grep { $_->{type} eq "RST_STREAM" } @$frames;
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
163 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
164
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
165
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
166 # REFUSED_STREAM on request body prior SETTINGS acknowledgement
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
167
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 962
diff changeset
168 $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
169 $sid = $s->new_stream({ body => 'TEST' });
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
170 $frames = $s->read(all => [{ type => 'RST_STREAM' }]);
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
171
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
172 ($frame) = grep { $_->{type} eq "RST_STREAM" } @$frames;
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
173 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
174
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
175 # default preread size - no REFUSED_STREAM expected
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
176
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 962
diff changeset
177 $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
178 $sid = $s->new_stream({ body => 'TEST' });
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
179 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]);
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
180
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
181 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
182 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
183
b9692ec5a08b Tests: HTTP/2 request body preread tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
184 ###############################################################################