Mercurial > hg > nginx-tests
comparison h2_headers.t @ 1020:196d33c2bb45
Tests: removed TODO and try_run() checks for legacy versions.
Also removed now unused spdy.t and shmem prerequisite.
author | Andrey Zelenkov <zelenkov@nginx.com> |
---|---|
date | Wed, 31 Aug 2016 18:21:07 +0300 |
parents | 882267679006 |
children | e2adef0c3faa |
comparison
equal
deleted
inserted
replaced
1019:41139d6f8b7b | 1020:196d33c2bb45 |
---|---|
403 { name => 'x-foo', value => 'aaaaa', mode => 2 }]}); | 403 { name => 'x-foo', value => 'aaaaa', mode => 2 }]}); |
404 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); | 404 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
405 | 405 |
406 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; | 406 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
407 is($frame->{headers}->{'x-sent-foo'}, 'aaaaa', 'well known chars'); | 407 is($frame->{headers}->{'x-sent-foo'}, 'aaaaa', 'well known chars'); |
408 | |
409 TODO: { | |
410 local $TODO = 'not yet' unless $t->has_version('1.9.12'); | |
411 | |
412 unlike($s->{headers}, qr/aaaaa/, 'well known chars - huffman encoding'); | 408 unlike($s->{headers}, qr/aaaaa/, 'well known chars - huffman encoding'); |
413 | |
414 } | |
415 | 409 |
416 # response header field with huffman encoding - complete table mod \0, CR, LF | 410 # response header field with huffman encoding - complete table mod \0, CR, LF |
417 # first saturate with short-encoded characters (NB: implementation detail) | 411 # first saturate with short-encoded characters (NB: implementation detail) |
418 | 412 |
419 my $field = pack "C*", ((map { 97 } (1 .. 862)), 1 .. 9, 11, 12, 14 .. 255); | 413 my $field = pack "C*", ((map { 97 } (1 .. 862)), 1 .. 9, 11, 12, 14 .. 255); |
427 { name => 'x-foo', value => $field, mode => 2 }]}); | 421 { name => 'x-foo', value => $field, mode => 2 }]}); |
428 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); | 422 $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
429 | 423 |
430 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; | 424 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
431 is($frame->{headers}->{'x-sent-foo'}, $field, 'all chars'); | 425 is($frame->{headers}->{'x-sent-foo'}, $field, 'all chars'); |
432 | |
433 TODO: { | |
434 local $TODO = 'not yet' unless $t->has_version('1.9.12'); | |
435 | |
436 unlike($s->{headers}, qr/abcde/, 'all chars - huffman encoding'); | 426 unlike($s->{headers}, qr/abcde/, 'all chars - huffman encoding'); |
437 | |
438 } | |
439 | 427 |
440 # 6.3. Dynamic Table Size Update | 428 # 6.3. Dynamic Table Size Update |
441 | 429 |
442 # remove some indexed headers from the dynamic table | 430 # remove some indexed headers from the dynamic table |
443 # by maintaining dynamic table space only for index 0 | 431 # by maintaining dynamic table space only for index 0 |
655 @data = sort { $a <=> $b } map { $_->{length} } @data; | 643 @data = sort { $a <=> $b } map { $_->{length} } @data; |
656 cmp_ok($data[-1], '<=', 2**14, 'response header frames limited'); | 644 cmp_ok($data[-1], '<=', 2**14, 'response header frames limited'); |
657 | 645 |
658 # response header frame sent in parts | 646 # response header frame sent in parts |
659 | 647 |
660 TODO: { | |
661 local $TODO = 'not yet' unless $t->has_version('1.9.7'); | |
662 | |
663 $s = Test::Nginx::HTTP2->new(port(8082)); | 648 $s = Test::Nginx::HTTP2->new(port(8082)); |
664 $s->h2_settings(0, 0x5 => 2**17); | 649 $s->h2_settings(0, 0x5 => 2**17); |
665 | 650 |
666 $sid = $s->new_stream({ path => '/frame_size?h=' . 'x' x 2**15 }); | 651 $sid = $s->new_stream({ path => '/frame_size?h=' . 'x' x 2**15 }); |
667 $frames = $s->read(all => [{ sid => $sid, fin => 0x4 }]); | 652 $frames = $s->read(all => [{ sid => $sid, fin => 0x4 }]); |
687 my ($lengths) = sort { $b <=> $a } map { $_->{length} } @data; | 672 my ($lengths) = sort { $b <=> $a } map { $_->{length} } @data; |
688 cmp_ok($lengths, '<=', 16384, 'response header split - max size'); | 673 cmp_ok($lengths, '<=', 16384, 'response header split - max size'); |
689 | 674 |
690 is(length join('', @{@$frames[-1]->{headers}->{'x-longheader'}}), 98304, | 675 is(length join('', @{@$frames[-1]->{headers}->{'x-longheader'}}), 98304, |
691 'response header split - headers'); | 676 'response header split - headers'); |
692 | |
693 } | |
694 | 677 |
695 # max_field_size - header field name | 678 # max_field_size - header field name |
696 | 679 |
697 $s = Test::Nginx::HTTP2->new(port(8084)); | 680 $s = Test::Nginx::HTTP2->new(port(8084)); |
698 $sid = $s->new_stream({ headers => [ | 681 $sid = $s->new_stream({ headers => [ |
949 is($frame->{flags}, 0, 'newline in request header - RST_STREAM flags'); | 932 is($frame->{flags}, 0, 'newline in request header - RST_STREAM flags'); |
950 is($frame->{code}, 1, 'newline in request header - RST_STREAM code'); | 933 is($frame->{code}, 1, 'newline in request header - RST_STREAM code'); |
951 | 934 |
952 # invalid header name as seen with underscore should not lead to ignoring rest | 935 # invalid header name as seen with underscore should not lead to ignoring rest |
953 | 936 |
954 TODO: { | |
955 local $TODO = 'not yet' unless $t->has_version('1.9.7'); | |
956 | |
957 $s = Test::Nginx::HTTP2->new(); | 937 $s = Test::Nginx::HTTP2->new(); |
958 $sid = $s->new_stream({ headers => [ | 938 $sid = $s->new_stream({ headers => [ |
959 { name => ':method', value => 'GET', mode => 0 }, | 939 { name => ':method', value => 'GET', mode => 0 }, |
960 { name => ':scheme', value => 'http', mode => 0 }, | 940 { name => ':scheme', value => 'http', mode => 0 }, |
961 { name => ':path', value => '/', mode => 0 }, | 941 { name => ':path', value => '/', mode => 0 }, |
964 { name => 'referer', value => "see-this", mode => 1 }]}); | 944 { name => 'referer', value => "see-this", mode => 1 }]}); |
965 $frames = $s->read(all => [{ type => 'HEADERS' }]); | 945 $frames = $s->read(all => [{ type => 'HEADERS' }]); |
966 | 946 |
967 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; | 947 ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
968 is($frame->{headers}->{'x-referer'}, 'see-this', 'after invalid header name'); | 948 is($frame->{headers}->{'x-referer'}, 'see-this', 'after invalid header name'); |
969 | |
970 } | |
971 | 949 |
972 # missing mandatory request header ':scheme' | 950 # missing mandatory request header ':scheme' |
973 | 951 |
974 TODO: { | 952 TODO: { |
975 local $TODO = 'not yet'; | 953 local $TODO = 'not yet'; |