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