Mercurial > hg > nginx-tests
changeset 1699:202d8feedad1
Tests: added grpc test for receiving SETTINGS in grpc filter.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Thu, 03 Jun 2021 19:51:08 +0300 |
parents | 90201294e1b6 |
children | c903c0a3f302 |
files | grpc.t |
diffstat | 1 files changed, 32 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/grpc.t Thu Jun 03 14:38:58 2021 +0300 +++ b/grpc.t Thu Jun 03 19:51:08 2021 +0300 @@ -24,7 +24,7 @@ select STDOUT; $| = 1; my $t = Test::Nginx->new()->has(qw/http rewrite http_v2 grpc/) - ->has(qw/upstream_keepalive/)->plan(130); + ->has(qw/upstream_keepalive/)->plan(138); $t->write_file_expand('nginx.conf', <<'EOF'); @@ -217,6 +217,35 @@ undef $f; $f = grpc(); +# upstream keepalive +# grpc filter setting INITIAL_WINDOW_SIZE is inherited in the next stream + +$f->{http_start}('/KeepAlive'); +$f->{data}('Hello'); +$f->{settings}(0, 1 => 4096); +$frames = $f->{http_end}(grpc_filter_settings => { 0x4 => 2 }); +($frame) = grep { $_->{type} eq "HEADERS" } @$frames; +ok($c = $frame->{headers}{'x-connection'}, 'keepalive 3 - connection'); + +$f->{http_start}('/KeepAlive', reuse => 1); +$frames = $f->{data_len}('Hello', 2); +($frame) = grep { $_->{type} eq "DATA" } @$frames; +is($frame->{data}, 'He', 'grpc filter setting - DATA'); +is($frame->{length}, 2, 'grpc filter setting - DATA length'); +is($frame->{flags}, 0, 'grpc filter setting - DATA flags'); +$f->{settings}(0, 0x4 => 5); +$frames = $f->{data_len}(undef, 3); +($frame) = grep { $_->{type} eq "DATA" } @$frames; +is($frame->{data}, 'llo', 'setting updated - DATA'); +is($frame->{length}, 3, 'setting updated - DATA length'); +is($frame->{flags}, 1, 'setting updated - DATA flags'); +$frames = $f->{http_end}(); +($frame) = grep { $_->{type} eq "HEADERS" } @$frames; +is($frame->{headers}{'x-connection'}, $c, 'keepalive 3 - connection reuse'); + +undef $f; +$f = grpc(); + # various header compression formats $f->{http_start}('/SayHello'); @@ -692,6 +721,8 @@ $c->new_stream({ body_more => 1, headers => $h, %extra }, $sid); $c->h2_body('Hello world', { body_more => 1, body_padding => $extra{body_padding} }); + $c->h2_settings(0, %{$extra{grpc_filter_settings}}) + if $extra{grpc_filter_settings}; $c->new_stream({ headers => [ { name => 'grpc-status', value => '0', mode => 2, huff => 1 },