comparison h2.t @ 736:dcbe4c3d6871

Tests: added HTTP/2 tests for HPACK table boundary.
author Sergey Kandaurov <pluknet@nginx.com>
date Mon, 19 Oct 2015 17:00:24 +0300
parents 832cd7cc8f53
children abf42eb6cf48
comparison
equal deleted inserted replaced
735:832cd7cc8f53 736:dcbe4c3d6871
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(219); 35 ->has_daemon('openssl')->plan(222);
36 36
37 # Some systems have a bug in not treating zero writev iovcnt as EINVAL 37 # Some systems have a bug in not treating zero writev iovcnt as EINVAL
38 38
39 $t->todo_alerts() if $^O eq 'darwin'; 39 $t->todo_alerts() if $^O eq 'darwin';
40 40
1505 { name => 'longname9', value => 'x', mode => 0 }]}); 1505 { name => 'longname9', value => 'x', mode => 0 }]});
1506 $frames = h2_read($sess, all => [{ sid => $sid, fin => 1 }]); 1506 $frames = h2_read($sess, all => [{ sid => $sid, fin => 1 }]);
1507 1507
1508 ($frame) = grep { $_->{type} eq 'GOAWAY' } @$frames; 1508 ($frame) = grep { $_->{type} eq 'GOAWAY' } @$frames;
1509 is($frame->{code}, 0xb, 'header size indexed greater'); 1509 is($frame->{code}, 0xb, 'header size indexed greater');
1510
1511 # HPACK table boundary
1512
1513 $sess = new_session();
1514 h2_read($sess, all => [{ sid => new_stream($sess, { headers => [
1515 { name => ':method', value => 'GET', mode => 0 },
1516 { name => ':scheme', value => 'http', mode => 0 },
1517 { name => ':path', value => '/', mode => 0 },
1518 { name => ':authority', value => '', mode => 0 },
1519 { name => 'x' x 2016, value => 'x' x 2048, mode => 2 }]}), fin => 1 }]);
1520 $frames = h2_read($sess, all => [{ sid => new_stream($sess, { headers => [
1521 { name => ':method', value => 'GET', mode => 0 },
1522 { name => ':scheme', value => 'http', mode => 0 },
1523 { name => ':path', value => '/', mode => 0 },
1524 { name => ':authority', value => '', mode => 0 },
1525 { name => 'x' x 2016, value => 'x' x 2048, mode => 0 }]}), fin => 1 }]);
1526
1527 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
1528 ok($frame, 'HPACK table boundary');
1529
1530 h2_read($sess, all => [{ sid => new_stream($sess, { headers => [
1531 { name => ':method', value => 'GET', mode => 0 },
1532 { name => ':scheme', value => 'http', mode => 0 },
1533 { name => ':path', value => '/', mode => 0 },
1534 { name => ':authority', value => '', mode => 0 },
1535 { name => 'x' x 33, value => 'x' x 4031, mode => 2 }]}), fin => 1 }]);
1536 $frames = h2_read($sess, all => [{ sid => new_stream($sess, { headers => [
1537 { name => ':method', value => 'GET', mode => 0 },
1538 { name => ':scheme', value => 'http', mode => 0 },
1539 { name => ':path', value => '/', mode => 0 },
1540 { name => ':authority', value => '', mode => 0 },
1541 { name => 'x' x 33, value => 'x' x 4031, mode => 0 }]}), fin => 1 }]);
1542
1543 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
1544 ok($frame, 'HPACK table boundary - header field name');
1545
1546 h2_read($sess, all => [{ sid => new_stream($sess, { headers => [
1547 { name => ':method', value => 'GET', mode => 0 },
1548 { name => ':scheme', value => 'http', mode => 0 },
1549 { name => ':path', value => '/', mode => 0 },
1550 { name => ':authority', value => '', mode => 0 },
1551 { name => 'x', value => 'x' x 64, mode => 2 }]}), fin => 1 }]);
1552 $frames = h2_read($sess, all => [{ sid => new_stream($sess, { headers => [
1553 { name => ':method', value => 'GET', mode => 0 },
1554 { name => ':scheme', value => 'http', mode => 0 },
1555 { name => ':path', value => '/', mode => 0 },
1556 { name => ':authority', value => '', mode => 0 },
1557 { name => 'x', value => 'x' x 64, mode => 0 }]}), fin => 1 }]);
1558
1559 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
1560 ok($frame, 'HPACK table boundary - header field value');
1510 1561
1511 # stream multiplexing + WINDOW_UPDATE 1562 # stream multiplexing + WINDOW_UPDATE
1512 1563
1513 $sess = new_session(); 1564 $sess = new_session();
1514 $sid = new_stream($sess, { path => '/t1.html' }); 1565 $sid = new_stream($sess, { path => '/t1.html' });