comparison h2.t @ 722:e09a6cda6764

Tests: added HTTP/2 max_header_size tests for indexed header field.
author Sergey Kandaurov <pluknet@nginx.com>
date Mon, 28 Sep 2015 23:21:58 +0300
parents 4a1397cad0c0
children bc4d6e2bd031
comparison
equal deleted inserted replaced
721:4a1397cad0c0 722:e09a6cda6764
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(207); 35 ->has_daemon('openssl')->plan(210);
36 36
37 # FreeBSD has a bug in not treating zero iovcnt as EINVAL 37 # FreeBSD has a bug in not treating zero iovcnt as EINVAL
38 38
39 $t->todo_alerts() unless $^O eq 'freebsd'; 39 $t->todo_alerts() unless $^O eq 'freebsd';
40 40
1451 { name => 'longname9', value => 'xxx', mode => 2 }]}); 1451 { name => 'longname9', value => 'xxx', mode => 2 }]});
1452 $frames = h2_read($sess, all => [{ sid => $sid, fin => 1 }]); 1452 $frames = h2_read($sess, all => [{ sid => $sid, fin => 1 }]);
1453 1453
1454 ($frame) = grep { $_->{type} eq 'DATA' } @$frames; 1454 ($frame) = grep { $_->{type} eq 'DATA' } @$frames;
1455 is($frame, undef, 'header size greater'); 1455 is($frame, undef, 'header size greater');
1456
1457 # header size is based on (decompressed) header list
1458 # two extra 1-byte indices would otherwise fit in max_header_size
1459
1460 $sess = new_session(8088);
1461 $sid = new_stream($sess, { headers => [
1462 { name => ':method', value => 'GET', mode => 0 },
1463 { name => ':scheme', value => 'http', mode => 0 },
1464 { name => ':path', value => '/t2.html', mode => 1 },
1465 { name => ':authority', value => 'localhost', mode => 1 },
1466 { name => 'longname9', value => 'x', mode => 2 }]});
1467 $frames = h2_read($sess, all => [{ sid => $sid, fin => 1 }]);
1468
1469 ($frame) = grep { $_->{type} eq 'DATA' } @$frames;
1470 ok($frame, 'header size new index');
1471
1472 $sid = new_stream($sess, { headers => [
1473 { name => ':method', value => 'GET', mode => 0 },
1474 { name => ':scheme', value => 'http', mode => 0 },
1475 { name => ':path', value => '/t2.html', mode => 1 },
1476 { name => ':authority', value => 'localhost', mode => 1 },
1477 { name => 'longname9', value => 'x', mode => 0 }]});
1478 $frames = h2_read($sess, all => [{ sid => $sid, fin => 1 }]);
1479
1480 ($frame) = grep { $_->{type} eq 'DATA' } @$frames;
1481 ok($frame, 'header size indexed');
1482
1483 $sid = new_stream($sess, { headers => [
1484 { name => ':method', value => 'GET', mode => 0 },
1485 { name => ':scheme', value => 'http', mode => 0 },
1486 { name => ':path', value => '/t2.html', mode => 1 },
1487 { name => ':authority', value => 'localhost', mode => 1 },
1488 { name => 'longname9', value => 'x', mode => 0 },
1489 { name => 'longname9', value => 'x', mode => 0 }]});
1490 $frames = h2_read($sess, all => [{ sid => $sid, fin => 1 }]);
1491
1492 ($frame) = grep { $_->{type} eq 'GOAWAY' } @$frames;
1493 is($frame->{code}, 0xb, 'header size indexed greater');
1456 1494
1457 # stream multiplexing + WINDOW_UPDATE 1495 # stream multiplexing + WINDOW_UPDATE
1458 1496
1459 $sess = new_session(); 1497 $sess = new_session();
1460 $sid = new_stream($sess, { path => '/t1.html' }); 1498 $sid = new_stream($sess, { path => '/t1.html' });