Mercurial > hg > nginx-tests
comparison h2.t @ 737:abf42eb6cf48
Tests: HTTP/2 test for indexed header field name in dynamic table.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Mon, 19 Oct 2015 17:02:20 +0300 |
parents | dcbe4c3d6871 |
children | 0881219c0699 |
comparison
equal
deleted
inserted
replaced
736:dcbe4c3d6871 | 737:abf42eb6cf48 |
---|---|
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(222); | 35 ->has_daemon('openssl')->plan(223); |
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 |
555 $frames = h2_read($sess, all => [{ sid => $sid, fin => 1 }]); | 555 $frames = h2_read($sess, all => [{ sid => $sid, fin => 1 }]); |
556 | 556 |
557 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; | 557 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
558 is($frame->{headers}->{'x-sent-foo'}, 'X-Bar', 'name with indexing - indexed'); | 558 is($frame->{headers}->{'x-sent-foo'}, 'X-Bar', 'name with indexing - indexed'); |
559 | 559 |
560 # reuse literal with indexing - reused name only | |
561 | |
562 $sid = new_stream($sess, { headers => [ | |
563 { name => ':method', value => 'GET', mode => 0 }, | |
564 { name => ':scheme', value => 'http', mode => 0 }, | |
565 { name => ':path', value => '/', mode => 0 }, | |
566 { name => ':authority', value => 'localhost', mode => 0 }, | |
567 { name => 'x-foo', value => 'X-Baz', mode => 1 }]}); | |
568 $frames = h2_read($sess, all => [{ sid => $sid, fin => 1 }]); | |
569 | |
570 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; | |
571 is($frame->{headers}->{'x-sent-foo'}, 'X-Baz', | |
572 'name with indexing - indexed name'); | |
573 | |
560 # 6.3. Dynamic Table Size Update | 574 # 6.3. Dynamic Table Size Update |
561 | 575 |
562 # remove some indexed headers from the dynamic table | 576 # remove some indexed headers from the dynamic table |
563 # by maintaining dynamic table space only for index 0 | 577 # by maintaining dynamic table space only for index 0 |
564 # 'x-foo' has index 0, and 'referer' has index 1 | 578 # 'x-foo' has index 0, and 'referer' has index 1 |
579 | |
580 $sess = new_session(); | |
581 $sid = new_stream($sess, { headers => [ | |
582 { name => ':method', value => 'GET', mode => 0 }, | |
583 { name => ':scheme', value => 'http', mode => 0 }, | |
584 { name => ':path', value => '/', mode => 0 }, | |
585 { name => ':authority', value => 'localhost', mode => 1 }, | |
586 { name => 'referer', value => 'foo', mode => 1 }, | |
587 { name => 'x-foo', value => 'X-Bar', mode => 2 }]}); | |
588 $frames = h2_read($sess, all => [{ sid => $sid, fin => 1 }]); | |
565 | 589 |
566 $sid = new_stream($sess, { table_size => 61, headers => [ | 590 $sid = new_stream($sess, { table_size => 61, headers => [ |
567 { name => ':method', value => 'GET', mode => 0 }, | 591 { name => ':method', value => 'GET', mode => 0 }, |
568 { name => ':scheme', value => 'http', mode => 0 }, | 592 { name => ':scheme', value => 'http', mode => 0 }, |
569 { name => ':path', value => '/', mode => 0 }, | 593 { name => ':path', value => '/', mode => 0 }, |