comparison h2.t @ 704:626bc3a0fdaa

Tests: SPDY and HTTP/2 write handler tests.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 22 Sep 2015 15:38:16 +0300
parents cc2b98d028c8
children fc2b0a6044f2
comparison
equal deleted inserted replaced
703:62dad59cfb67 704:626bc3a0fdaa
30 eval { IO::Socket::SSL::SSL_VERIFY_NONE(); }; 30 eval { IO::Socket::SSL::SSL_VERIFY_NONE(); };
31 plan(skip_all => 'IO::Socket::SSL too old') if $@; 31 plan(skip_all => 'IO::Socket::SSL too old') if $@;
32 32
33 my $t = Test::Nginx->new()->has(qw/http http_ssl http_v2 proxy cache/) 33 my $t = Test::Nginx->new()->has(qw/http http_ssl http_v2 proxy cache/)
34 ->has(qw/limit_conn rewrite realip shmem/) 34 ->has(qw/limit_conn rewrite realip shmem/)
35 ->has_daemon('openssl')->plan(194); 35 ->has_daemon('openssl')->plan(196);
36
37 # FreeBSD has a bug in not treating zero iovcnt as EINVAL
38
39 $t->todo_alerts() unless $^O eq 'freebsd';
36 40
37 $t->write_file_expand('nginx.conf', <<'EOF'); 41 $t->write_file_expand('nginx.conf', <<'EOF');
38 42
39 %%TEST_GLOBALS%% 43 %%TEST_GLOBALS%%
40 44
213 # file size is slightly beyond initial window size: 2**16 + 80 bytes 217 # file size is slightly beyond initial window size: 2**16 + 80 bytes
214 218
215 $t->write_file('t1.html', 219 $t->write_file('t1.html',
216 join('', map { sprintf "X%04dXXX", $_ } (1 .. 8202))); 220 join('', map { sprintf "X%04dXXX", $_ } (1 .. 8202)));
217 $t->write_file('tbig.html', 221 $t->write_file('tbig.html',
218 join('', map { sprintf "X%04dXXX", $_ } (1 .. 8202))); 222 join('', map { sprintf "XX%06dXX", $_ } (1 .. 100000)));
219 223
220 $t->write_file('t2.html', 'SEE-THIS'); 224 $t->write_file('t2.html', 'SEE-THIS');
221 $t->write_file('t3.html', 'SEE-THIS'); 225 $t->write_file('t3.html', 'SEE-THIS');
222 226
223 my %cframe = ( 227 my %cframe = (
1091 1095
1092 $frames = h2_read($sess, all => [{ sid => $sid, length => 1 }]); 1096 $frames = h2_read($sess, all => [{ sid => $sid, length => 1 }]);
1093 is(@$frames, 1, 'positive window'); 1097 is(@$frames, 1, 'positive window');
1094 is(@$frames[0]->{type}, 'DATA', 'positive window - data'); 1098 is(@$frames[0]->{type}, 'DATA', 'positive window - data');
1095 is(@$frames[0]->{length}, 1, 'positive window - data length'); 1099 is(@$frames[0]->{length}, 1, 'positive window - data length');
1100
1101 # ask write handler in sending large response
1102
1103 $sid = new_stream($sess, { path => '/tbig.html' });
1104
1105 h2_window($sess, 2**30, $sid);
1106 h2_window($sess, 2**30);
1107
1108 sleep 1;
1109 $frames = h2_read($sess, all => [{ sid => $sid, fin => 1 }]);
1110
1111 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
1112 is($frame->{headers}->{':status'}, 200, 'large response - HEADERS');
1113
1114 @data = grep { $_->{type} eq "DATA" } @$frames;
1115 $sum = eval join '+', map { $_->{length} } @data;
1116 is($sum, 1000000, 'large response - DATA');
1096 1117
1097 # SETTINGS_MAX_FRAME_SIZE 1118 # SETTINGS_MAX_FRAME_SIZE
1098 1119
1099 $sess = new_session(); 1120 $sess = new_session();
1100 $sid = new_stream($sess, { path => '/frame_size' }); 1121 $sid = new_stream($sess, { path => '/frame_size' });