annotate h2_max_requests.t @ 1619:436d0ffc2ea3

Tests: correctly shutdown ssl for reproducible session reuse tests. Previously, session reuse tests in stream_ssl_certificate.t were prone to testing errors, since the client doesn't write any application data before closing a connection, which is done so to pass tests on win32. In this case, the server may happened to get an unexpected eof meaning that it will abandon that session. This is specific to stream testing pattern, changes to ssl_certificate.t are applied too for consistency. This is also specific to SSL_R_UNEXPECTED_EOF_WHILE_READING, which is implemented in OpenSSL 3.0.0.
author Sergey Kandaurov <pluknet@nginx.com>
date Mon, 23 Nov 2020 22:46:06 +0000
parents 3afb634f287d
children 21f511a7f5c3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1077
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
6 # Tests for HTTP/2 protocol, http2_max_requests directive.
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8 ###############################################################################
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10 use warnings;
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use strict;
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13 use Test::More;
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14
1579
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
15 use Socket qw(SOL_SOCKET SO_RCVBUF);
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
16
1077
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17 BEGIN { use FindBin; chdir($FindBin::Bin); }
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19 use lib 'lib';
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20 use Test::Nginx;
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
21 use Test::Nginx::HTTP2;
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23 ###############################################################################
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
25 select STDERR; $| = 1;
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
26 select STDOUT; $| = 1;
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
27
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28 my $t = Test::Nginx->new()->has(qw/http http_v2/)
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29 ->write_file_expand('nginx.conf', <<'EOF');
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31 %%TEST_GLOBALS%%
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33 daemon off;
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35 events {
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36 }
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38 http {
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39 %%TEST_GLOBALS_HTTP%%
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
41 server {
1579
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
42 listen 127.0.0.1:8080 http2 sndbuf=1m;
1077
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43 server_name localhost;
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45 http2_max_requests 2;
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
47 location / { }
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48 }
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49 }
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51 EOF
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52
1579
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
53 $t->write_file('index.html', 'SEE-THAT' x 50000);
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
54 $t->run()->plan(10);
1077
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
55
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56 ###############################################################################
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58 my $s = Test::Nginx::HTTP2->new();
1579
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
59
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
60 # to test lingering close, let full response settle down in send buffer space
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
61 # so that client additional data past server-side close would trigger TCP RST
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
62
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
63 $s->{socket}->setsockopt(SOL_SOCKET, SO_RCVBUF, 64*1024) or die $!;
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
64 $s->h2_settings(0, 0x4 => 2**20);
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
65 $s->h2_window(2**21);
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
66
1077
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
67 my $frames = $s->read(all => [{ sid => $s->new_stream(), fin => 1 }]);
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
68
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
69 my ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
70 is($frame->{headers}->{':status'}, 200, 'max requests');
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
71
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
72 $frames = $s->read(all => [{ type => 'GOAWAY' }], wait => 0.5)
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
73 unless grep { $_->{type} eq "GOAWAY" } @$frames;
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
74
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
75 ($frame) = grep { $_->{type} eq "GOAWAY" } @$frames;
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76 is($frame, undef, 'max requests - GOAWAY');
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
77
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
78 # max requests limited
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
79
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
80 my $sid = $s->new_stream();
1579
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
81
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
82 # wait server to finish and close socket if lingering close were disabled
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
83
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
84 select undef, undef, undef, 0.1;
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
85 $s->h2_ping("SEE-THIS");
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
86
1077
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
87 $frames = $s->read(all => [{ sid => $sid, fin => 1 }, { type => 'GOAWAY' }]);
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
88
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
89 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
90 is($frame->{headers}->{':status'}, 200, 'max requests limited');
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
91
1579
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
92 TODO: {
1588
3afb634f287d Tests: fixed h2_max_requests.t TODOs on linux.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1579
diff changeset
93 local $TODO = 'not yet' if ($^O eq 'linux' or $^O eq 'freebsd')
1579
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
94 and !$t->has_version('1.19.1');
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
95
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
96 my @data = grep { $_->{type} eq "DATA" } @$frames;
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
97 my $sum = eval join '+', map { $_->{length} } @data;
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
98 is($sum, 400000, 'max requests limited - all data received');
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
99
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
100 }
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
101
1077
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
102 ($frame) = grep { $_->{type} eq "GOAWAY" } @$frames;
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
103 ok($frame, 'max requests limited - GOAWAY');
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
104 is($frame->{last_sid}, $sid, 'max requests limited - GOAWAY last stream');
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
105
1579
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
106 # graceful shutdown in idle state
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
107
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
108 $s = Test::Nginx::HTTP2->new();
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
109 $s->{socket}->setsockopt(SOL_SOCKET, SO_RCVBUF, 64*1024) or die $!;
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
110 $s->h2_settings(0, 0x4 => 2**20);
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
111 $s->h2_window(2**21);
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
112
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
113 $sid = $s->new_stream();
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
114
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
115 # wait server to finish and close socket if lingering close were disabled
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
116
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
117 select undef, undef, undef, 0.1;
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
118
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
119 $t->reload();
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
120
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
121 select undef, undef, undef, 0.3;
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
122
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
123 $s->h2_ping("SEE-THIS");
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
124
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
125 $frames = $s->read(all => [{ sid => $sid, fin => 1 }, { type => 'GOAWAY' }]);
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
126
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
127 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
128 is($frame->{headers}->{':status'}, 200, 'graceful shutdown in idle');
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
129
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
130 TODO: {
1588
3afb634f287d Tests: fixed h2_max_requests.t TODOs on linux.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1579
diff changeset
131 local $TODO = 'not yet' if ($^O eq 'linux' or $^O eq 'freebsd')
1579
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
132 and !$t->has_version('1.19.1');
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
133
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
134 my @data = grep { $_->{type} eq "DATA" } @$frames;
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
135 my $sum = eval join '+', map { $_->{length} } @data;
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
136 is($sum, 400000, 'graceful shutdown in idle - all data received');
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
137
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
138 ($frame) = grep { $_->{type} eq "GOAWAY" } @$frames;
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
139 ok($frame, 'graceful shutdown in idle - GOAWAY');
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
140 is($frame->{last_sid}, $sid, 'graceful shutdown in idle - GOAWAY last stream');
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
141
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
142 }
14eeaa39599d Tests: HTTP/2 tests for lingering close.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
143
1077
13247bbc1f7d Tests: HTTP/2 tests for max requests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
144 ###############################################################################