Mercurial > hg > nginx-tests
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' }); |