annotate grpc.t @ 1752:ba6e24e38f03

Tests: improved stop_daemons() to send signal again. As was observed, it's possible that a signal to complete a uwsgi daemon can be ignored while it is starting up, which results in tests hang due to eternal waiting on child processes termination. Notably, it is seen when running tests with a high number of prove jobs on a low-profile VM against nginx with broken modules and/or configuration. To reproduce: $ TEST_NGINX_GLOBALS=ERROR prove -j16 uwsgi*.t Inspecting uwsgi under ktrace on FreeBSD confirms that a SIGTERM signal is ignored at the very beginning of uwsgi startup. It is then replaced with a default action after listen(), thus waiting until uwsgi is ready to accept new TCP connections doesn't completely solve the hang window. The fix is to retry sending a signal some time after waitpid(WNOHANG) continuously demonstrated no progress with reaping a signaled process. It is modelled after f13ead27f89c that improved stop() for nginx.
author Sergey Kandaurov <pluknet@nginx.com>
date Wed, 29 Dec 2021 22:29:23 +0300
parents b27bcded6449
children 236d038dc04a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
6 # Tests for grpc backend.
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8 ###############################################################################
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10 use warnings;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use strict;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13 use Test::More;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
16
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17 use lib 'lib';
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19 use Test::Nginx::HTTP2;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
21 ###############################################################################
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23 select STDERR; $| = 1;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24 select STDOUT; $| = 1;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
25
1312
6f95c0ed2335 Tests: removed proxy prerequisite from grpc tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1303
diff changeset
26 my $t = Test::Nginx->new()->has(qw/http rewrite http_v2 grpc/)
1715
3604ef83c1aa Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1707
diff changeset
27 ->has(qw/upstream_keepalive/)->plan(146);
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29 $t->write_file_expand('nginx.conf', <<'EOF');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31 %%TEST_GLOBALS%%
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33 daemon off;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35 events {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36 }
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38 http {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39 %%TEST_GLOBALS_HTTP%%
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
41 upstream u {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
42 server 127.0.0.1:8081;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43 keepalive 1;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44 }
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46 server {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
47 listen 127.0.0.1:8080 http2;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48 server_name localhost;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50 http2_body_preread_size 128k;
1653
259dfb223f9a Tests: compatibility with http2_max_header/field_size removal.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1631
diff changeset
51 large_client_header_buffers 4 32k;
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
53 location / {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
54 grpc_pass grpc://127.0.0.1:8081;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
55
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56 if ($arg_if) {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57 # nothing
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58 }
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
59
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
60 limit_except GET {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
61 # nothing
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
62 }
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
63 }
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
64
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
65 location /KeepAlive {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
66 grpc_pass u;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
67 }
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
68
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
69 location /LongHeader {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
70 grpc_pass 127.0.0.1:8081;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
71 grpc_set_header X-LongHeader $arg_h;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
72 }
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
73
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
74 location /LongField {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
75 grpc_pass 127.0.0.1:8081;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76 grpc_buffer_size 65k;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
77 }
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
78
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
79 location /SetHost {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
80 grpc_pass 127.0.0.1:8081;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
81 grpc_set_header Host custom;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
82 }
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
84 location /SetArgs {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
85 grpc_pass 127.0.0.1:8081;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
86 set $args $arg_c;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
87 }
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
88 }
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
89 }
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
90
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
91 EOF
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
92
1381
97c8280de681 Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1370
diff changeset
93 $t->run();
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
94
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
95 ###############################################################################
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
96
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
97 my $p = port(8081);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
98 my $f = grpc();
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
99
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
100 my $frames = $f->{http_start}('/SayHello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
101 my ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
102 is($frame->{flags}, 4, 'request - HEADERS flags');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
103 ok((my $sid = $frame->{sid}) % 2, 'request - HEADERS sid odd');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
104 is($frame->{headers}{':method'}, 'POST', 'request - method');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
105 is($frame->{headers}{':scheme'}, 'http', 'request - scheme');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
106 is($frame->{headers}{':path'}, '/SayHello', 'request - path');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
107 is($frame->{headers}{':authority'}, "127.0.0.1:$p", 'request - authority');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
108 is($frame->{headers}{'content-type'}, 'application/grpc',
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
109 'request - content type');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
110 is($frame->{headers}{te}, 'trailers', 'request - te');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
111
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
112 $frames = $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
113 ($frame) = grep { $_->{type} eq "SETTINGS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
114 is($frame->{flags}, 1, 'request - SETTINGS ack');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
115 is($frame->{sid}, 0, 'request - SETTINGS sid');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
116 is($frame->{length}, 0, 'request - SETTINGS length');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
117
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
118 ($frame) = grep { $_->{type} eq "DATA" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
119 is($frame->{data}, 'Hello', 'request - DATA');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
120 is($frame->{length}, 5, 'request - DATA length');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
121 is($frame->{flags}, 1, 'request - DATA flags');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
122 is($frame->{sid}, $sid, 'request - DATA sid match');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
123
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
124 $frames = $f->{http_end}();
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
125 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
126 is($frame->{flags}, 4, 'response - HEADERS flags');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
127 is($frame->{sid}, 1, 'response - HEADERS sid');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
128 is($frame->{headers}{':status'}, '200', 'response - status');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
129 is($frame->{headers}{'content-type'}, 'application/grpc',
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
130 'response - content type');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
131 ok($frame->{headers}{server}, 'response - server');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
132 ok($frame->{headers}{date}, 'response - date');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
133 ok(my $c = $frame->{headers}{'x-connection'}, 'response - connection');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
134
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
135 ($frame) = grep { $_->{type} eq "DATA" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
136 is($frame->{data}, 'Hello world', 'response - DATA');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
137 is($frame->{length}, 11, 'response - DATA length');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
138 is($frame->{flags}, 0, 'response - DATA flags');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
139 is($frame->{sid}, 1, 'response - DATA sid');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
140
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
141 (undef, $frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
142 is($frame->{flags}, 5, 'response - trailers flags');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
143 is($frame->{sid}, 1, 'response - trailers sid');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
144 is($frame->{headers}{'grpc-message'}, '', 'response - trailers message');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
145 is($frame->{headers}{'grpc-status'}, '0', 'response - trailers status');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
146
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
147 # next request is on a new backend connection, no sid incremented
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
148
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
149 $frames = $f->{http_start}('/SayHello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
150 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
151 is($frame->{sid}, $sid, 'request 2 - HEADERS sid again');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
152 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
153 $frames = $f->{http_end}();
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
154 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
155 cmp_ok($frame->{headers}{'x-connection'}, '>', $c, 'response 2 - connection');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
156
1698
90201294e1b6 Tests: added grpc request body test with a special last buffer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1693
diff changeset
157 # request body - special last buffer
90201294e1b6 Tests: added grpc request body test with a special last buffer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1693
diff changeset
158
90201294e1b6 Tests: added grpc request body test with a special last buffer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1693
diff changeset
159 $f->{http_start}('/SayHello');
90201294e1b6 Tests: added grpc request body test with a special last buffer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1693
diff changeset
160 $frames = $f->{data}('Hello', body_more => 1);
90201294e1b6 Tests: added grpc request body test with a special last buffer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1693
diff changeset
161 ($frame) = grep { $_->{type} eq "DATA" } @$frames;
90201294e1b6 Tests: added grpc request body test with a special last buffer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1693
diff changeset
162 is($frame->{data}, 'Hello', 'request body first - DATA');
90201294e1b6 Tests: added grpc request body test with a special last buffer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1693
diff changeset
163 is($frame->{length}, 5, 'request body first - DATA length');
90201294e1b6 Tests: added grpc request body test with a special last buffer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1693
diff changeset
164 is($frame->{flags}, 0, 'request body first - DATA flags');
90201294e1b6 Tests: added grpc request body test with a special last buffer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1693
diff changeset
165 $frames = $f->{data}('');
90201294e1b6 Tests: added grpc request body test with a special last buffer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1693
diff changeset
166 ($frame) = grep { $_->{type} eq "DATA" } @$frames;
90201294e1b6 Tests: added grpc request body test with a special last buffer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1693
diff changeset
167 is($frame->{data}, '', 'special buffer last - DATA');
90201294e1b6 Tests: added grpc request body test with a special last buffer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1693
diff changeset
168 is($frame->{length}, 0, 'special buffer last - DATA length');
90201294e1b6 Tests: added grpc request body test with a special last buffer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1693
diff changeset
169 is($frame->{flags}, 1, 'special buffer last - DATA flags');
90201294e1b6 Tests: added grpc request body test with a special last buffer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1693
diff changeset
170 $frames = $f->{http_end}();
90201294e1b6 Tests: added grpc request body test with a special last buffer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1693
diff changeset
171 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
90201294e1b6 Tests: added grpc request body test with a special last buffer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1693
diff changeset
172 is($frame->{headers}{':status'}, '200', 'special buffer last - response');
90201294e1b6 Tests: added grpc request body test with a special last buffer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1693
diff changeset
173
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
174 # upstream keepalive
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
175
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
176 $frames = $f->{http_start}('/KeepAlive');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
177 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
178 is($frame->{sid}, $sid, 'keepalive - HEADERS sid');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
179 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
180 $frames = $f->{http_end}();
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
181 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
182 ok($c = $frame->{headers}{'x-connection'}, 'keepalive - connection');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
183
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
184 $frames = $f->{http_start}('/KeepAlive', reuse => 1);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
185 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
186 cmp_ok($frame->{sid}, '>', $sid, 'keepalive - HEADERS sid next');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
187 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
188 $frames = $f->{http_end}();
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
189 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
190 is($frame->{headers}{'x-connection'}, $c, 'keepalive - connection reuse');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
191
1370
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
192 # upstream keepalive
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
193 # pending control frame ack after the response
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
194
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
195 undef $f;
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
196 $f = grpc();
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
197
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
198 $frames = $f->{http_start}('/KeepAlive');
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
199 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
200 is($frame->{sid}, $sid, 'keepalive 2 - HEADERS sid');
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
201 $f->{data}('Hello');
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
202 $f->{settings}(0, 1 => 4096);
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
203 $frames = $f->{http_end}();
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
204 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
205 ok($c = $frame->{headers}{'x-connection'}, 'keepalive 2 - connection');
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
206
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
207 $frames = $f->{http_start}('/KeepAlive', reuse => 1);
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
208 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
209 ok($frame, 'upstream keepalive reused');
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
210
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
211 cmp_ok($frame->{sid}, '>', $sid, 'keepalive 2 - HEADERS sid next');
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
212 $f->{data}('Hello');
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
213 $frames = $f->{http_end}();
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
214 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
215 is($frame->{headers}{'x-connection'}, $c, 'keepalive 2 - connection reuse');
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
216
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
217 undef $f;
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
218 $f = grpc();
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
219
1699
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
220 # upstream keepalive
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
221 # grpc filter setting INITIAL_WINDOW_SIZE is inherited in the next stream
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
222
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
223 $f->{http_start}('/KeepAlive');
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
224 $f->{data}('Hello');
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
225 $f->{settings}(0, 1 => 4096);
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
226 $frames = $f->{http_end}(grpc_filter_settings => { 0x4 => 2 });
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
227 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
228 ok($c = $frame->{headers}{'x-connection'}, 'keepalive 3 - connection');
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
229
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
230 $f->{http_start}('/KeepAlive', reuse => 1);
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
231 $frames = $f->{data_len}('Hello', 2);
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
232 ($frame) = grep { $_->{type} eq "DATA" } @$frames;
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
233 is($frame->{data}, 'He', 'grpc filter setting - DATA');
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
234 is($frame->{length}, 2, 'grpc filter setting - DATA length');
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
235 is($frame->{flags}, 0, 'grpc filter setting - DATA flags');
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
236 $f->{settings}(0, 0x4 => 5);
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
237 $frames = $f->{data_len}(undef, 3);
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
238 ($frame) = grep { $_->{type} eq "DATA" } @$frames;
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
239 is($frame->{data}, 'llo', 'setting updated - DATA');
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
240 is($frame->{length}, 3, 'setting updated - DATA length');
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
241 is($frame->{flags}, 1, 'setting updated - DATA flags');
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
242 $frames = $f->{http_end}();
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
243 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
244 is($frame->{headers}{'x-connection'}, $c, 'keepalive 3 - connection reuse');
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
245
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
246 undef $f;
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
247 $f = grpc();
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
248
1700
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
249 # upstream keepalive - GOAWAY, current request aborted
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
250
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
251 $f->{http_start}('/KeepAlive');
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
252 $f->{data}('Hello');
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
253 $frames = $f->{http_end}();
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
254 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
255 ok($c = $frame->{headers}{'x-connection'}, 'keepalive 4 - connection');
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
256
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
257 $f->{http_start}('/KeepAlive', reuse => 1);
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
258 $f->{goaway}(0, 0, 5);
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
259 $f->{data}('Hello');
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
260 $frames = $f->{http_end}();
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
261 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
262 is($frame->{headers}{':status'}, 502, 'keepalive 4 - GOAWAY aborted request');
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
263
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
264 $f->{http_start}('/KeepAlive');
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
265 $f->{data}('Hello');
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
266 $frames = $f->{http_end}();
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
267 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
268 cmp_ok($frame->{headers}{'x-connection'}, '>', $c, 'keepalive 4 - closed');
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
269
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
270 undef $f;
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
271 $f = grpc();
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
272
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
273 # upstream keepalive - disabled with a higher GOAWAY Last-Stream-ID
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
274
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
275 $f->{http_start}('/KeepAlive');
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
276 $f->{goaway}(0, 3, 5);
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
277 $f->{data}('Hello');
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
278 $frames = $f->{http_end}();
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
279 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
280 ok($c = $frame->{headers}{'x-connection'}, 'keepalive 5 - GOAWAY next stream');
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
281
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
282 $f->{http_start}('/KeepAlive');
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
283 $f->{data}('Hello');
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
284 $frames = $f->{http_end}();
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
285 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
286 cmp_ok($frame->{headers}{'x-connection'}, '>', $c, 'keepalive 5 - closed');
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
287
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
288 undef $f;
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
289 $f = grpc();
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
290
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
291 # upstream keepalive - GOAWAY in grpc filter, current stream aborted
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
292
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
293 $f->{http_start}('/KeepAlive');
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
294 $f->{data}('Hello');
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
295 $frames = $f->{http_end}(grpc_filter_goaway => [0, 0, 5]);
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
296 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
297 ok($c = $frame->{headers}{'x-connection'}, 'keepalive 6 - connection');
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
298 ($frame) = grep { $_->{type} eq "RST_STREAM" } @$frames;
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
299 ok($frame, 'keepalive 6 - grpc filter GOAWAY aborted stream');
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
300
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
301 $f->{http_start}('/KeepAlive');
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
302 $f->{data}('Hello');
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
303 $frames = $f->{http_end}();
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
304 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
305 cmp_ok($frame->{headers}{'x-connection'}, '>', $c, 'keepalive 6 - closed');
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
306
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
307 undef $f;
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
308 $f = grpc();
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
309
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
310 # various header compression formats
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
311
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
312 $f->{http_start}('/SayHello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
313 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
314 $frames = $f->{http_end}(mode => 3);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
315 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
316 is($frame->{headers}{':status'}, '200', 'without indexing');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
317 is($frame->{headers}{'content-type'}, 'application/grpc',
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
318 'without indexing 2');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
319
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
320 $f->{http_start}('/SayHello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
321 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
322 $frames = $f->{http_end}(mode => 4);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
323 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
324 is($frame->{headers}{':status'}, '200', 'without indexing new');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
325 is($frame->{headers}{'content-type'}, 'application/grpc',
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
326 'without indexing new 2');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
327
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
328 $f->{http_start}('/SayHello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
329 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
330 $frames = $f->{http_end}(mode => 5);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
331 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
332 is($frame->{headers}{':status'}, '200', 'never indexed');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
333 is($frame->{headers}{'content-type'}, 'application/grpc',
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
334 'never indexed 2');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
335
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
336 $f->{http_start}('/SayHello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
337 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
338 $frames = $f->{http_end}(mode => 6);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
339 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
340 is($frame->{headers}{':status'}, '200', 'never indexed new');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
341 is($frame->{headers}{'content-type'}, 'application/grpc',
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
342 'never indexed new 2');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
343
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
344 # padding & priority
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
345
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
346 $f->{http_start}('/SayHello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
347 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
348 $frames = $f->{http_end}(padding => 7);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
349 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
350 is($frame->{headers}{':status'}, '200', 'padding');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
351
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
352 $f->{http_start}('/SayHello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
353 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
354 $frames = $f->{http_end}(prio => 137, dep => 0x01020304);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
355 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
356 is($frame->{headers}{':status'}, '200', 'priority');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
357
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
358 $f->{http_start}('/SayHello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
359 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
360 $frames = $f->{http_end}(padding => 7, prio => 137, dep => 0x01020304);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
361 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
362 is($frame->{headers}{':status'}, '200', 'padding priority');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
363
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
364 SKIP: {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
365 skip 'long test', 1 unless $ENV{TEST_NGINX_UNSAFE};
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
366
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
367 $f->{http_start}('/SaySplit');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
368 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
369 $frames = $f->{http_end}(padding => 7, prio => 137, dep => 0x01020304,
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
370 split => [(map{1}(1..20)), 30], split_delay => 0.1);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
371 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
372 is($frame->{headers}{':status'}, '200', 'padding priority split');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
373
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
374 }
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
375
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
376 # grpc error, no empty data frame expected
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
377
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
378 $f->{http_start}('/SayHello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
379 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
380 $frames = $f->{http_err}();
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
381 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
382 is($frame->{flags}, 5, 'grpc error - HEADERS flags');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
383 ($frame) = grep { $_->{type} eq "DATA" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
384 ok(!$frame, 'grpc error - no DATA frame');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
385
1583
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
386 # malformed response body length not equal to content-length
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
387
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
388 $f->{http_start}('/SayHello');
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
389 $f->{data}('Hello');
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
390 $frames = $f->{http_err2}(cl => 42);
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
391 ($frame) = grep { $_->{type} eq "RST_STREAM" } @$frames;
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
392 ok($frame, 'response body less than content-length');
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
393
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
394 $f->{http_start}('/SayHello');
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
395 $f->{data}('Hello');
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
396 $frames = $f->{http_err2}(cl => 8);
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
397 ($frame) = grep { $_->{type} eq "RST_STREAM" } @$frames;
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
398 ok($frame, 'response body more than content-length');
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
399
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
400 # continuation from backend, expect parts assembled
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
401
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
402 $f->{http_start}('/SayHello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
403 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
404 $frames = $f->{continuation}();
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
405 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
406 is($frame->{flags}, 4, 'continuation - HEADERS flags');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
407 is($frame->{headers}{':status'}, '200', 'continuation - status');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
408 is($frame->{headers}{'content-type'}, 'application/grpc',
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
409 'continuation - content type');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
410
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
411 ($frame) = grep { $_->{type} eq "DATA" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
412 is($frame->{data}, 'Hello world', 'continuation - DATA');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
413 is($frame->{length}, 11, 'continuation - DATA length');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
414 is($frame->{flags}, 0, 'continuation - DATA flags');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
415
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
416 (undef, $frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
417 is($frame->{flags}, 5, 'continuation - trailers flags');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
418 is($frame->{headers}{'grpc-message'}, '', 'continuation - trailers message');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
419 is($frame->{headers}{'grpc-status'}, '0', 'continuation - trailers status');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
420
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
421 # continuation from backend, header split
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
422
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
423 $f->{http_start}('/SayHello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
424 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
425 $frames = $f->{http_end}(mode => 6, continuation => [map { 1 } (1 .. 42)]);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
426 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
427 is($frame->{headers}{':status'}, '200', 'continuation - header split');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
428
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
429 # continuation to backend
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
430
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
431 $frames = $f->{http_start}('/LongHeader?h=' . ('Z' x 31337));
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
432 @$frames = grep { $_->{type} =~ "HEADERS|CONTINUATION" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
433 is(@$frames, 4, 'continuation - frames');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
434
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
435 $frame = shift @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
436 is($frame->{type}, 'HEADERS', 'continuation - HEADERS');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
437 is($frame->{length}, 16384, 'continuation - HEADERS length');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
438 is($frame->{flags}, 1, 'continuation - HEADERS flags');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
439 ok($frame->{sid}, 'continuation - HEADERS sid');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
440
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
441 $frame = shift @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
442 is($frame->{type}, 'CONTINUATION', 'continuation - CONTINUATION');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
443 is($frame->{length}, 16384, 'continuation - CONTINUATION length');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
444 is($frame->{flags}, 0, 'continuation - CONTINUATION flags');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
445 ok($frame->{sid}, 'continuation - CONTINUATION sid');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
446
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
447 $frame = shift @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
448 is($frame->{type}, 'CONTINUATION', 'continuation - CONTINUATION 2');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
449 is($frame->{length}, 16384, 'continuation - CONTINUATION 2 length');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
450 is($frame->{flags}, 0, 'continuation - CONTINUATION 2 flags');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
451
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
452 $frame = shift @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
453 is($frame->{type}, 'CONTINUATION', 'continuation - CONTINUATION n');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
454 cmp_ok($frame->{length}, '<', 16384, 'continuation - CONTINUATION n length');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
455 is($frame->{flags}, 4, 'continuation - CONTINUATION n flags');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
456 is($frame->{headers}{':path'}, '/LongHeader?h=' . 'Z' x 31337,
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
457 'continuation - path');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
458 is($frame->{headers}{'x-longheader'}, 'Z' x 31337, 'continuation - header');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
459
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
460 $f->{http_end}();
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
461
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
462 # long header field
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
463
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
464 $f->{http_start}('/LongField');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
465 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
466 $frames = $f->{field_len}(2**7);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
467 ($frame) = grep { $_->{flags} & 0x4 } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
468 is($frame->{headers}{'x' x 2**7}, 'y' x 2**7, 'long header field 1');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
469
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
470 $f->{http_start}('/LongField');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
471 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
472 $frames = $f->{field_len}(2**8);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
473 ($frame) = grep { $_->{flags} & 0x4 } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
474 is($frame->{headers}{'x' x 2**8}, 'y' x 2**8, 'long header field 2');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
475
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
476 $f->{http_start}('/LongField');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
477 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
478 $frames = $f->{field_len}(2**15);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
479 ($frame) = grep { $_->{flags} & 0x4 } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
480 is($frame->{headers}{'x' x 2**15}, 'y' x 2**15, 'long header field 3');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
481
1676
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
482 # Intermediary Encapsulation Attacks, malformed header fields
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
483
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
484 $f->{http_start}('/');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
485 $f->{data}('Hello');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
486 $frames = $f->{field_bad}(n => 'n:n');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
487 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
488 is($frame->{headers}{':status'}, 502, 'invalid header name colon');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
489
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
490 $f->{http_start}('/');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
491 $f->{data}('Hello');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
492 $frames = $f->{field_bad}(n => 'NN');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
493 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
494 is($frame->{headers}{':status'}, 502, 'invalid header name uppercase');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
495
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
496 $f->{http_start}('/');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
497 $f->{data}('Hello');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
498 $frames = $f->{field_bad}(n => "n\nn");
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
499 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
500 is($frame->{headers}{':status'}, 502, 'invalid header name ctl');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
501
1715
3604ef83c1aa Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1707
diff changeset
502 TODO: {
3604ef83c1aa Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1707
diff changeset
503 local $TODO = 'not yet' unless $t->has_version('1.21.1');
3604ef83c1aa Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1707
diff changeset
504
3604ef83c1aa Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1707
diff changeset
505 $f->{http_start}('/');
3604ef83c1aa Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1707
diff changeset
506 $f->{data}('Hello');
3604ef83c1aa Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1707
diff changeset
507 $frames = $f->{field_bad}(n => "n n");
3604ef83c1aa Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1707
diff changeset
508 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
3604ef83c1aa Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1707
diff changeset
509 is($frame->{headers}{':status'}, 502, 'invalid header name space');
3604ef83c1aa Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1707
diff changeset
510
3604ef83c1aa Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1707
diff changeset
511 }
3604ef83c1aa Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1707
diff changeset
512
1676
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
513 $f->{http_start}('/');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
514 $f->{data}('Hello');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
515 $frames = $f->{field_bad}(v => "v\nv");
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
516 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
517 is($frame->{headers}{':status'}, 502, 'invalid header value ctl');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
518
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
519 # invalid HPACK index
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
520
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
521 $f->{http_start}('/');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
522 $f->{data}('Hello');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
523 $frames = $f->{field_bad}('m' => 0);
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
524 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
525 is($frame->{headers}{':status'}, 502, 'invalid index - indexed header');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
526
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
527 $f->{http_start}('/');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
528 $f->{data}('Hello');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
529 $frames = $f->{field_bad}('m' => 1);
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
530 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
531 is($frame->{headers}{':status'}, 502, 'invalid index - with indexing');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
532
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
533 $f->{http_start}('/');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
534 $f->{data}('Hello');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
535 $frames = $f->{field_bad}('m' => 3);
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
536 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
537 is($frame->{headers}{':status'}, 502, 'invalid index - without indexing');
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
538
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
539 # flow control
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
540
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
541 $f->{http_start}('/FlowControl');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
542 $frames = $f->{data_len}(('Hello' x 13000) . ('x' x 550), 65535);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
543 my $sum = eval join '+', map { $_->{type} eq "DATA" && $_->{length} } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
544 is($sum, 65535, 'flow control - iws length');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
545
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
546 $f->{update}(10);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
547 $f->{update_sid}(10);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
548
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
549 $frames = $f->{data_len}(undef, 10);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
550 ($frame) = grep { $_->{type} eq "DATA" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
551 is($frame->{length}, 10, 'flow control - update length');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
552 is($frame->{flags}, 0, 'flow control - update flags');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
553
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
554 $f->{update_sid}(10);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
555 $f->{update}(10);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
556
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
557 $frames = $f->{data_len}(undef, 5);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
558 ($frame) = grep { $_->{type} eq "DATA" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
559 is($frame->{length}, 5, 'flow control - rest length');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
560 is($frame->{flags}, 1, 'flow control - rest flags');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
561
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
562 $f->{http_end}();
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
563
1318
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
564 # preserve output
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
565
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
566 $f->{http_start}('/Preserve');
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
567 $f->{data}('Hello');
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
568 $frames = $f->{http_pres}();
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
569 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
570 is($frame->{flags}, 4, 'preserve - HEADERS');
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
571
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
572 my @data = grep { $_->{type} eq "DATA" } @$frames;
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
573 $sum = eval join '+', map { $_->{length} } @data;
1319
3b30e97acdcb Tests: made grpc preserve output test pass on win32 and Solaris.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1318
diff changeset
574 is($sum, 20480, 'preserve - DATA');
1318
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
575
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
576 (undef, $frame) = grep { $_->{type} eq "HEADERS" } @$frames;
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
577 is($frame->{flags}, 5, 'preserve - trailers');
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
578
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
579 # DATA padding
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
580
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
581 $f->{http_start}('/SayPadding');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
582 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
583 $frames = $f->{http_end}(body_padding => 42);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
584 ($frame) = grep { $_->{type} eq "DATA" } @$frames;
1362
6874b32dc3d2 Tests: renamed some grpc.t tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1321
diff changeset
585 is($frame->{data}, 'Hello world', 'DATA padding');
6874b32dc3d2 Tests: renamed some grpc.t tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1321
diff changeset
586 is($frame->{length}, 11, 'DATA padding - length');
6874b32dc3d2 Tests: renamed some grpc.t tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1321
diff changeset
587 is($frame->{flags}, 0, 'DATA padding - flags');
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
588
1664
0fae67763be5 Tests: added grpc tests with DATA padding and Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1653
diff changeset
589 # DATA padding with Content-Length
0fae67763be5 Tests: added grpc tests with DATA padding and Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1653
diff changeset
590
0fae67763be5 Tests: added grpc tests with DATA padding and Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1653
diff changeset
591 $f->{http_start}('/SayPadding');
0fae67763be5 Tests: added grpc tests with DATA padding and Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1653
diff changeset
592 $f->{data}('Hello');
0fae67763be5 Tests: added grpc tests with DATA padding and Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1653
diff changeset
593 $frames = $f->{http_end}(body_padding => 42, cl => length('Hello world'));
0fae67763be5 Tests: added grpc tests with DATA padding and Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1653
diff changeset
594 ($frame) = grep { $_->{type} eq "DATA" } @$frames;
0fae67763be5 Tests: added grpc tests with DATA padding and Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1653
diff changeset
595 is($frame->{data}, 'Hello world', 'DATA padding cl');
0fae67763be5 Tests: added grpc tests with DATA padding and Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1653
diff changeset
596 is($frame->{length}, 11, 'DATA padding cl - length');
0fae67763be5 Tests: added grpc tests with DATA padding and Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1653
diff changeset
597 is($frame->{flags}, 0, 'DATA padding cl - flags');
0fae67763be5 Tests: added grpc tests with DATA padding and Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1653
diff changeset
598
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
599 # :authority inheritance
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
600
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
601 $frames = $f->{http_start}('/SayHello?if=1');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
602 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
603 is($frame->{headers}{':authority'}, "127.0.0.1:$p", 'authority in if');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
604 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
605 $f->{http_end}();
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
606
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
607 # misc tests
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
608
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
609 $frames = $f->{http_start}('/SetHost');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
610 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
611 ok(!$frame->{headers}{':authority'}, 'set host - authority');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
612 is($frame->{headers}{'host'}, 'custom', 'set host - host');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
613 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
614 $f->{http_end}();
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
615
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
616 $frames = $f->{http_start}('/SetArgs?f');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
617 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
618 is($frame->{headers}{':path'}, '/SetArgs', 'set args');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
619 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
620 $f->{http_end}();
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
621
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
622 $frames = $f->{http_start}('/SetArgs?c=1');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
623 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
624 is($frame->{headers}{':path'}, '/SetArgs?1', 'set args len');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
625 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
626 $f->{http_end}();
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
627
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
628 $frames = $f->{http_start}('/');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
629 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
630 is($frame->{headers}{':path'}, '/', 'root index');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
631 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
632 $f->{http_end}();
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
633
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
634 $frames = $f->{http_start}('/', method => 'GET');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
635 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
636 is($frame->{headers}{':method'}, 'GET', 'method get');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
637 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
638 $f->{http_end}();
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
639
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
640 $frames = $f->{http_start}('/', method => 'HEAD');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
641 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
642 is($frame->{headers}{':method'}, 'HEAD', 'method head');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
643 $f->{data}('Hello');
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
644 $f->{http_end}();
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
645
1564
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
646 # receiving END_STREAM followed by WINDOW_UPDATE on incomplete request body
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
647
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
648 $f->{http_start}('/Discard_WU');
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
649 $frames = $f->{discard}();
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
650 (undef, $frame) = grep { $_->{type} eq "HEADERS" } @$frames;
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
651 is($frame->{flags}, 5, 'discard WINDOW_UPDATE - trailers');
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
652
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
653 # receiving END_STREAM followed by RST_STREAM NO_ERROR
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
654
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
655 $f->{http_start}('/Discard_NE');
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
656 $frames = $f->{discard}();
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
657 (undef, $frame) = grep { $_->{type} eq "HEADERS" } @$frames;
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
658 is($frame->{flags}, 5, 'discard NO_ERROR - trailers');
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
659
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
660 # receiving END_STREAM followed by several RST_STREAM NO_ERROR
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
661
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
662 $f->{http_start}('/Discard_NE3');
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
663 $frames = $f->{discard}();
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
664 (undef, $frame) = grep { $_->{type} eq "HEADERS" } @$frames;
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
665 is($frame->{flags}, undef, 'discard NO_ERROR many - no trailers');
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
666
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
667 # receiving END_STREAM followed by RST_STREAM CANCEL
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
668
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
669 $f->{http_start}('/Discard_CNL');
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
670 $frames = $f->{discard}();
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
671 (undef, $frame) = grep { $_->{type} eq "HEADERS" } @$frames;
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
672 is($frame->{flags}, undef, 'discard CANCEL - no trailers');
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
673
1631
62a1667f60f8 Tests: fixed grpc.t after previous change.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1624
diff changeset
674 undef $f;
62a1667f60f8 Tests: fixed grpc.t after previous change.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1624
diff changeset
675 $f = grpc();
62a1667f60f8 Tests: fixed grpc.t after previous change.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1624
diff changeset
676
1624
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
677 # upstream keepalive, grpc error
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
678 # receiving END_STREAM followed by RST_STREAM NO_ERROR
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
679
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
680 $f->{http_start}('/KeepAlive');
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
681 $f->{data}('Hello');
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
682 $frames = $f->{http_err_rst}();
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
683 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
684 ok($frame->{headers}{'grpc-status'}, 'keepalive 3 - grpc error, rst');
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
685
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
686 $frames = $f->{http_start}('/KeepAlive', reuse => 1);
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
687 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
688 ok($frame, 'keepalive 3 - connection reused');
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
689
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
690 undef $f;
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
691 $f = grpc();
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
692
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
693 ###############################################################################
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
694
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
695 sub grpc {
1318
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
696 my ($server, $client, $f, $s, $c, $sid, $csid, $uri);
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
697 my $n = 0;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
698
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
699 $server = IO::Socket::INET->new(
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
700 Proto => 'tcp',
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
701 LocalHost => '127.0.0.1',
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
702 LocalPort => $p,
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
703 Listen => 5,
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
704 Reuse => 1
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
705 )
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
706 or die "Can't create listening socket: $!\n";
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
707
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
708 $f->{http_start} = sub {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
709 ($uri, my %extra) = @_;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
710 my $body_more = 1 if $uri !~ /LongHeader/;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
711 my $meth = $extra{method} || 'POST';
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
712 $s = Test::Nginx::HTTP2->new() if !defined $s;
1318
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
713 $csid = $s->new_stream({ body_more => $body_more, headers => [
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
714 { name => ':method', value => $meth, mode => !!$meth },
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
715 { name => ':scheme', value => 'http', mode => 0 },
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
716 { name => ':path', value => $uri, },
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
717 { name => ':authority', value => 'localhost' },
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
718 { name => 'content-type', value => 'application/grpc' },
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
719 { name => 'te', value => 'trailers', mode => 2 }]});
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
720
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
721 if (!$extra{reuse}) {
1705
99a9b8b50f21 Tests: fixed grpc.t TODO hang on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1700
diff changeset
722 if (IO::Select->new($server)->can_read(5)) {
99a9b8b50f21 Tests: fixed grpc.t TODO hang on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1700
diff changeset
723 $client = $server->accept();
1321
351b95be742b Tests: fixed grpc tests hang in accept() on internal nginx error.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1319
diff changeset
724
1705
99a9b8b50f21 Tests: fixed grpc.t TODO hang on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1700
diff changeset
725 } else {
99a9b8b50f21 Tests: fixed grpc.t TODO hang on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1700
diff changeset
726 log_in("timeout");
1700
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
727 # connection could be unexpectedly reused
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
728 goto reused if $client;
1321
351b95be742b Tests: fixed grpc tests hang in accept() on internal nginx error.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1319
diff changeset
729 return undef;
351b95be742b Tests: fixed grpc tests hang in accept() on internal nginx error.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1319
diff changeset
730 }
351b95be742b Tests: fixed grpc tests hang in accept() on internal nginx error.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1319
diff changeset
731
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
732 log2c("(new connection $client)");
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
733 $n++;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
734
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
735 $client->sysread(my $buf, 24) == 24 or return; # preface
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
736
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
737 $c = Test::Nginx::HTTP2->new(1, socket => $client,
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
738 pure => 1, preface => "") or return;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
739 }
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
740
1700
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
741 reused:
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
742 my $frames = $c->read(all => [{ fin => 4 }]);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
743
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
744 if (!$extra{reuse}) {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
745 $c->h2_settings(0);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
746 $c->h2_settings(1);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
747 }
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
748
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
749 my ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
750 $sid = $frame->{sid};
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
751 return $frames;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
752 };
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
753 $f->{data} = sub {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
754 my ($body, %extra) = @_;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
755 $s->h2_body($body, { %extra });
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
756 return $c->read(all => [{ sid => $sid,
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
757 length => length($body) }]);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
758 };
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
759 $f->{data_len} = sub {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
760 my ($body, $len) = @_;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
761 $s->h2_body($body) if defined $body;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
762 return $c->read(all => [{ sid => $sid, length => $len }]);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
763 };
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
764 $f->{update} = sub {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
765 $c->h2_window(shift);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
766 };
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
767 $f->{update_sid} = sub {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
768 $c->h2_window(shift, $sid);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
769 };
1370
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
770 $f->{settings} = sub {
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
771 $c->h2_settings(@_);
23e407a72fe9 Tests: upstream keepalive with grpc pending frames.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1362
diff changeset
772 };
1700
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
773 $f->{goaway} = sub {
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
774 $c->h2_goaway(@_);
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
775 };
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
776 $f->{http_end} = sub {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
777 my (%extra) = @_;
1664
0fae67763be5 Tests: added grpc tests with DATA padding and Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1653
diff changeset
778 my $h = [
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
779 { name => ':status', value => '200',
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
780 mode => $extra{mode} || 0 },
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
781 { name => 'content-type', value => 'application/grpc',
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
782 mode => $extra{mode} || 1, huff => 1 },
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
783 { name => 'x-connection', value => $n,
1664
0fae67763be5 Tests: added grpc tests with DATA padding and Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1653
diff changeset
784 mode => 2, huff => 1 }];
0fae67763be5 Tests: added grpc tests with DATA padding and Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1653
diff changeset
785 push @$h, { name => 'content-length', value => $extra{cl} }
0fae67763be5 Tests: added grpc tests with DATA padding and Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1653
diff changeset
786 if $extra{cl};
0fae67763be5 Tests: added grpc tests with DATA padding and Content-Length.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1653
diff changeset
787 $c->new_stream({ body_more => 1, headers => $h, %extra }, $sid);
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
788 $c->h2_body('Hello world', { body_more => 1,
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
789 body_padding => $extra{body_padding} });
1699
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
790 $c->h2_settings(0, %{$extra{grpc_filter_settings}})
202d8feedad1 Tests: added grpc test for receiving SETTINGS in grpc filter.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1698
diff changeset
791 if $extra{grpc_filter_settings};
1700
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
792 $c->h2_goaway(@{$extra{grpc_filter_goaway}})
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
793 if $extra{grpc_filter_goaway};
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
794 $c->new_stream({ headers => [
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
795 { name => 'grpc-status', value => '0',
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
796 mode => 2, huff => 1 },
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
797 { name => 'grpc-message', value => '',
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
798 mode => 2, huff => 1 },
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
799 ]}, $sid);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
800
1700
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
801 return $s->read(all => [{ type => 'RST_STREAM' }])
c903c0a3f302 Tests: added grpc GOAWAY tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1699
diff changeset
802 if $extra{grpc_filter_goaway};
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
803 return $s->read(all => [{ fin => 1 }]);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
804 };
1318
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
805 $f->{http_pres} = sub {
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
806 my (%extra) = @_;
1319
3b30e97acdcb Tests: made grpc preserve output test pass on win32 and Solaris.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1318
diff changeset
807 $s->h2_settings(0, 0x4 => 8192);
1318
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
808 $c->new_stream({ body_more => 1, %extra, headers => [
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
809 { name => ':status', value => '200',
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
810 mode => $extra{mode} || 0 },
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
811 { name => 'content-type', value => 'application/grpc',
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
812 mode => $extra{mode} || 1, huff => 1 },
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
813 { name => 'x-connection', value => $n,
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
814 mode => 2, huff => 1 },
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
815 ]}, $sid);
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
816 for (1 .. 20) {
1319
3b30e97acdcb Tests: made grpc preserve output test pass on win32 and Solaris.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1318
diff changeset
817 $c->h2_body(sprintf('Hello %02d', $_) x 128, {
1318
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
818 body_more => 1,
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
819 body_padding => $extra{body_padding} });
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
820 $c->h2_ping("PING");
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
821 }
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
822 # reopen window
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
823 $s->h2_window(2**24);
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
824 $s->h2_window(2**24, $csid);
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
825 $c->new_stream({ headers => [
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
826 { name => 'grpc-status', value => '0',
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
827 mode => 2, huff => 1 },
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
828 { name => 'grpc-message', value => '',
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
829 mode => 2, huff => 1 },
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
830 ]}, $sid);
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
831
1319
3b30e97acdcb Tests: made grpc preserve output test pass on win32 and Solaris.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1318
diff changeset
832 return $s->read(all => [{ sid => $csid, fin => 1 }]);
1318
6de2a27af2d3 Tests: grpc preserve output tests added (ticket #1519).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1312
diff changeset
833 };
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
834 $f->{http_err} = sub {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
835 $c->new_stream({ headers => [
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
836 { name => ':status', value => '200', mode => 0 },
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
837 { name => 'content-type', value => 'application/grpc',
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
838 mode => 1, huff => 1 },
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
839 { name => 'grpc-status', value => '12',
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
840 mode => 2, huff => 1 },
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
841 { name => 'grpc-message', value => 'unknown service',
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
842 mode => 2, huff => 1 },
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
843 ]}, $sid);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
844
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
845 return $s->read(all => [{ fin => 1 }]);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
846 };
1624
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
847 $f->{http_err_rst} = sub {
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
848 $c->start_chain();
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
849 $c->new_stream({ headers => [
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
850 { name => ':status', value => '200', mode => 0 },
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
851 { name => 'content-type', value => 'application/grpc' },
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
852 { name => 'grpc-status', value => '12', mode => 2 },
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
853 { name => 'grpc-message', value => 'unknown service',
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
854 mode => 2 },
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
855 ]}, $sid);
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
856 $c->h2_rst($sid, 0);
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
857 $c->send_chain();
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
858
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
859 return $s->read(all => [{ fin => 1 }]);
81fd6615358e Tests: added test for "grpc error" followed by RST_STREAM NO_ERROR.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1623
diff changeset
860 };
1583
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
861 $f->{http_err2} = sub {
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
862 my %extra = @_;
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
863 $c->new_stream({ body_more => 1, headers => [
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
864 { name => ':status', value => '200', mode => 0 },
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
865 { name => 'content-type', value => 'application/grpc',
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
866 mode => 1, huff => 1 },
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
867 { name => 'content-length', value => $extra{cl},
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
868 mode => 1, huff => 1 },
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
869 ]}, $sid);
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
870 $c->h2_body('Hello world',
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
871 { body_more => 1, body_split => [5] });
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
872 $c->new_stream({ headers => [
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
873 { name => 'grpc-status', value => '0',
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
874 mode => 2, huff => 1 },
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
875 { name => 'grpc-message', value => '',
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
876 mode => 2, huff => 1 },
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
877 ]}, $sid);
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
878
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
879 return $s->read(all => [{ type => 'RST_STREAM' }]);
8aede7babd9a Tests: added grpc tests with wrong response size.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1564
diff changeset
880 };
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
881 $f->{continuation} = sub {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
882 $c->new_stream({ continuation => 1, body_more => 1, headers => [
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
883 { name => ':status', value => '200', mode => 0 },
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
884 ]}, $sid);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
885 $c->h2_continue($sid, { continuation => 1, headers => [
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
886 { name => 'content-type', value => 'application/grpc',
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
887 mode => 1, huff => 1 },
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
888 ]});
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
889 $c->h2_continue($sid, { headers => [
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
890 # an empty CONTINUATION frame is legitimate
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
891 ]});
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
892 $c->h2_body('Hello world', { body_more => 1 });
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
893 $c->new_stream({ continuation => 1, headers => [
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
894 { name => 'grpc-status', value => '0',
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
895 mode => 2, huff => 1 },
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
896 ]}, $sid);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
897 $c->h2_continue($sid, { headers => [
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
898 { name => 'grpc-message', value => '',
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
899 mode => 2, huff => 1 },
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
900 ]});
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
901
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
902 return $s->read(all => [{ fin => 1 }]);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
903 };
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
904 $f->{field_len} = sub {
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
905 my ($len) = @_;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
906 $c->new_stream({ continuation => [map {2**14} (0..$len/2**13)],
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
907 body_more => 1, headers => [
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
908 { name => ':status', value => '200', mode => 0 },
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
909 { name => 'content-type', value => 'application/grpc',
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
910 mode => 1, huff => 1 },
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
911 { name => 'x' x $len, value => 'y' x $len, mode => 6 },
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
912 ]}, $sid);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
913 $c->h2_body('Hello world', { body_more => 1 });
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
914 $c->new_stream({ headers => [
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
915 { name => 'grpc-status', value => '0',
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
916 mode => 2, huff => 1 },
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
917 { name => 'grpc-message', value => '',
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
918 mode => 2, huff => 1 },
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
919 ]}, $sid);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
920
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
921 return $s->read(all => [{ fin => 1 }]);
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
922 };
1676
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
923 $f->{field_bad} = sub {
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
924 my (%extra) = @_;
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
925 my $n = defined $extra{'n'} ? $extra{'n'} : 'n';
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
926 my $v = defined $extra{'v'} ? $extra{'v'} : 'v';
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
927 my $m = defined $extra{'m'} ? $extra{'m'} : 2;
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
928 $c->new_stream({ headers => [
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
929 { name => ':status', value => '200' },
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
930 { name => $n, value => $v, mode => $m },
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
931 ]}, $sid);
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
932
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
933 return $s->read(all => [{ fin => 1 }]);
816d6ceefe50 Tests: added grpc tests with malformed headers.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1664
diff changeset
934 };
1564
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
935 $f->{discard} = sub {
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
936 my (%extra) = @_;
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
937 $c->new_stream({ body_more => 1, %extra, headers => [
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
938 { name => ':status', value => '200',
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
939 mode => $extra{mode} || 0 },
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
940 { name => 'content-type', value => 'application/grpc',
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
941 mode => $extra{mode} || 1, huff => 1 },
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
942 { name => 'x-connection', value => $n,
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
943 mode => 2, huff => 1 },
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
944 ]}, $sid);
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
945 $c->h2_body('Hello world', { body_more => 1,
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
946 body_padding => $extra{body_padding} });
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
947
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
948 # stick trailers and subsequent frames for reproducibility
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
949
1623
3fe652bc9dae Tests: introduced HTTP/2 frames buffering option in HTTP2 package.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1622
diff changeset
950 $c->start_chain();
3fe652bc9dae Tests: introduced HTTP/2 frames buffering option in HTTP2 package.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1622
diff changeset
951 $c->new_stream({ headers => [
3fe652bc9dae Tests: introduced HTTP/2 frames buffering option in HTTP2 package.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1622
diff changeset
952 { name => 'grpc-status', value => '0', mode => 2 }
3fe652bc9dae Tests: introduced HTTP/2 frames buffering option in HTTP2 package.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1622
diff changeset
953 ]}, $sid);
3fe652bc9dae Tests: introduced HTTP/2 frames buffering option in HTTP2 package.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1622
diff changeset
954 $c->h2_window(42, $sid) if $uri eq '/Discard_WU';
3fe652bc9dae Tests: introduced HTTP/2 frames buffering option in HTTP2 package.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1622
diff changeset
955 $c->h2_rst($sid, 0) if $uri eq '/Discard_NE';
3fe652bc9dae Tests: introduced HTTP/2 frames buffering option in HTTP2 package.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1622
diff changeset
956 $c->h2_rst($sid, 0), $c->h2_rst($sid, 0), $c->h2_rst($sid, 0)
3fe652bc9dae Tests: introduced HTTP/2 frames buffering option in HTTP2 package.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1622
diff changeset
957 if $uri eq '/Discard_NE3';
3fe652bc9dae Tests: introduced HTTP/2 frames buffering option in HTTP2 package.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1622
diff changeset
958 $c->h2_rst($sid, 8) if $uri eq '/Discard_CNL';
3fe652bc9dae Tests: introduced HTTP/2 frames buffering option in HTTP2 package.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1622
diff changeset
959 $c->send_chain();
1564
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
960
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
961 return $s->read(all => [{ fin => 1 }], wait => 2)
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
962 if $uri eq '/Discard_WU' || $uri eq '/Discard_NE';
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
963 return $s->read(all => [{ type => 'RST_STREAM' }]);
fe938b5daf80 Tests: more grpc tests with discarded request body.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1535
diff changeset
964 };
1303
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
965 return $f;
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
966 }
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
967
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
968 sub log2i { Test::Nginx::log_core('|| <<', @_); }
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
969 sub log2o { Test::Nginx::log_core('|| >>', @_); }
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
970 sub log2c { Test::Nginx::log_core('||', @_); }
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
971
42577a840a7d Tests: grpc module tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
972 ###############################################################################