Mercurial > hg > nginx-tests
diff h2_priority.t @ 948:4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Stopped exporting any subroutines. A subset of them now act as class methods.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Fri, 17 Jun 2016 11:36:33 +0300 |
parents | a6abbfed42c0 |
children | e9064d691790 |
line wrap: on
line diff
--- a/h2_priority.t +++ b/h2_priority.t @@ -16,7 +16,7 @@ BEGIN { use FindBin; chdir($FindBin::Bin use lib 'lib'; use Test::Nginx; -use Test::Nginx::HTTP2 qw/ :DEFAULT :frame /; +use Test::Nginx::HTTP2; ############################################################################### @@ -57,21 +57,21 @@ EOF # stream muliplexing + PRIORITY frames -my $sess = new_session(); -my $sid = new_stream($sess, { path => '/t1.html' }); -h2_read($sess, all => [{ sid => $sid, length => 2**16 - 1 }]); +my $s = Test::Nginx::HTTP2->new(); +my $sid = $s->new_stream({ path => '/t1.html' }); +$s->read(all => [{ sid => $sid, length => 2**16 - 1 }]); -my $sid2 = new_stream($sess, { path => '/t2.html' }); -h2_read($sess, all => [{ sid => $sid2, fin => 0x4 }]); +my $sid2 = $s->new_stream({ path => '/t2.html' }); +$s->read(all => [{ sid => $sid2, fin => 0x4 }]); -h2_priority($sess, 0, $sid); -h2_priority($sess, 255, $sid2); +$s->h2_priority(0, $sid); +$s->h2_priority(255, $sid2); -h2_window($sess, 2**17, $sid); -h2_window($sess, 2**17, $sid2); -h2_window($sess, 2**17); +$s->h2_window(2**17, $sid); +$s->h2_window(2**17, $sid2); +$s->h2_window(2**17); -my $frames = h2_read($sess, all => [ +my $frames = $s->read(all => [ { sid => $sid, fin => 1 }, { sid => $sid2, fin => 1 } ]); @@ -81,21 +81,21 @@ is(join(' ', map { $_->{sid} } @data), " # and vice versa -$sess = new_session(); -$sid = new_stream($sess, { path => '/t1.html' }); -h2_read($sess, all => [{ sid => $sid, length => 2**16 - 1 }]); +$s = Test::Nginx::HTTP2->new(); +$sid = $s->new_stream({ path => '/t1.html' }); +$s->read(all => [{ sid => $sid, length => 2**16 - 1 }]); -$sid2 = new_stream($sess, { path => '/t2.html' }); -h2_read($sess, all => [{ sid => $sid2, fin => 0x4 }]); +$sid2 = $s->new_stream({ path => '/t2.html' }); +$s->read(all => [{ sid => $sid2, fin => 0x4 }]); -h2_priority($sess, 255, $sid); -h2_priority($sess, 0, $sid2); +$s->h2_priority(255, $sid); +$s->h2_priority(0, $sid2); -h2_window($sess, 2**17, $sid); -h2_window($sess, 2**17, $sid2); -h2_window($sess, 2**17); +$s->h2_window(2**17, $sid); +$s->h2_window(2**17, $sid2); +$s->h2_window(2**17); -$frames = h2_read($sess, all => [ +$frames = $s->read(all => [ { sid => $sid, fin => 1 }, { sid => $sid2, fin => 1 } ]); @@ -105,18 +105,18 @@ is(join(' ', map { $_->{sid} } @data), " # stream muliplexing + HEADERS PRIORITY flag -$sess = new_session(); -$sid = new_stream($sess, { path => '/t1.html', prio => 0 }); -h2_read($sess, all => [{ sid => $sid, length => 2**16 - 1 }]); +$s = Test::Nginx::HTTP2->new(); +$sid = $s->new_stream({ path => '/t1.html', prio => 0 }); +$s->read(all => [{ sid => $sid, length => 2**16 - 1 }]); -$sid2 = new_stream($sess, { path => '/t2.html', prio => 255 }); -h2_read($sess, all => [{ sid => $sid2, fin => 0x4 }]); +$sid2 = $s->new_stream({ path => '/t2.html', prio => 255 }); +$s->read(all => [{ sid => $sid2, fin => 0x4 }]); -h2_window($sess, 2**17, $sid); -h2_window($sess, 2**17, $sid2); -h2_window($sess, 2**17); +$s->h2_window(2**17, $sid); +$s->h2_window(2**17, $sid2); +$s->h2_window(2**17); -$frames = h2_read($sess, all => [ +$frames = $s->read(all => [ { sid => $sid, fin => 1 }, { sid => $sid2, fin => 1 } ]); @@ -127,18 +127,18 @@ is($sids, "$sid2 $sid", 'weight - HEADER # and vice versa -$sess = new_session(); -$sid = new_stream($sess, { path => '/t1.html', prio => 255 }); -h2_read($sess, all => [{ sid => $sid, length => 2**16 - 1 }]); +$s = Test::Nginx::HTTP2->new(); +$sid = $s->new_stream({ path => '/t1.html', prio => 255 }); +$s->read(all => [{ sid => $sid, length => 2**16 - 1 }]); -$sid2 = new_stream($sess, { path => '/t2.html', prio => 0 }); -h2_read($sess, all => [{ sid => $sid2, fin => 0x4 }]); +$sid2 = $s->new_stream({ path => '/t2.html', prio => 0 }); +$s->read(all => [{ sid => $sid2, fin => 0x4 }]); -h2_window($sess, 2**17, $sid); -h2_window($sess, 2**17, $sid2); -h2_window($sess, 2**17); +$s->h2_window(2**17, $sid); +$s->h2_window(2**17, $sid2); +$s->h2_window(2**17); -$frames = h2_read($sess, all => [ +$frames = $s->read(all => [ { sid => $sid, fin => 1 }, { sid => $sid2, fin => 1 } ]); @@ -151,22 +151,22 @@ is($sids, "$sid $sid2", 'weight - HEADER # PRIORITY frame -$sess = new_session(); +$s = Test::Nginx::HTTP2->new(); -h2_priority($sess, 16, 3, 0); -h2_priority($sess, 16, 1, 3); +$s->h2_priority(16, 3, 0); +$s->h2_priority(16, 1, 3); -$sid = new_stream($sess, { path => '/t1.html' }); -h2_read($sess, all => [{ sid => $sid, length => 2**16 - 1 }]); +$sid = $s->new_stream({ path => '/t1.html' }); +$s->read(all => [{ sid => $sid, length => 2**16 - 1 }]); -$sid2 = new_stream($sess, { path => '/t2.html' }); -h2_read($sess, all => [{ sid => $sid2, fin => 0x4 }]); +$sid2 = $s->new_stream({ path => '/t2.html' }); +$s->read(all => [{ sid => $sid2, fin => 0x4 }]); -h2_window($sess, 2**17, $sid); -h2_window($sess, 2**17, $sid2); -h2_window($sess, 2**17); +$s->h2_window(2**17, $sid); +$s->h2_window(2**17, $sid2); +$s->h2_window(2**17); -$frames = h2_read($sess, all => [ +$frames = $s->read(all => [ { sid => $sid, fin => 1 }, { sid => $sid2, fin => 1 }, ]); @@ -177,22 +177,22 @@ is($sids, "$sid2 $sid", 'dependency - PR # and vice versa -$sess = new_session(); +$s = Test::Nginx::HTTP2->new(); -h2_priority($sess, 16, 1, 0); -h2_priority($sess, 16, 3, 1); +$s->h2_priority(16, 1, 0); +$s->h2_priority(16, 3, 1); -$sid = new_stream($sess, { path => '/t1.html' }); -h2_read($sess, all => [{ sid => $sid, length => 2**16 - 1 }]); +$sid = $s->new_stream({ path => '/t1.html' }); +$s->read(all => [{ sid => $sid, length => 2**16 - 1 }]); -$sid2 = new_stream($sess, { path => '/t2.html' }); -h2_read($sess, all => [{ sid => $sid2, fin => 0x4 }]); +$sid2 = $s->new_stream({ path => '/t2.html' }); +$s->read(all => [{ sid => $sid2, fin => 0x4 }]); -h2_window($sess, 2**17, $sid); -h2_window($sess, 2**17, $sid2); -h2_window($sess, 2**17); +$s->h2_window(2**17, $sid); +$s->h2_window(2**17, $sid2); +$s->h2_window(2**17); -$frames = h2_read($sess, all => [ +$frames = $s->read(all => [ { sid => $sid, fin => 1 }, { sid => $sid2, fin => 1 }, ]); @@ -207,12 +207,12 @@ is($sids, "$sid $sid2", 'dependency - PR # A stream cannot depend on itself. An endpoint MUST treat this as a # stream error of type PROTOCOL_ERROR. -$sess = new_session(); -$sid = new_stream($sess); -h2_read($sess, all => [{ sid => $sid, fin => 1 }]); +$s = Test::Nginx::HTTP2->new(); +$sid = $s->new_stream(); +$s->read(all => [{ sid => $sid, fin => 1 }]); -h2_priority($sess, 0, $sid, $sid); -$frames = h2_read($sess, all => [{ type => 'RST_STREAM' }]); +$s->h2_priority(0, $sid, $sid); +$frames = $s->read(all => [{ type => 'RST_STREAM' }]); my ($frame) = grep { $_->{type} eq "RST_STREAM" } @$frames; is($frame->{sid}, $sid, 'dependency - PRIORITY self - RST_STREAM'); @@ -220,22 +220,22 @@ is($frame->{code}, 1, 'dependency - PRIO # HEADERS PRIORITY flag, reprioritize prior PRIORITY frame records -$sess = new_session(); +$s = Test::Nginx::HTTP2->new(); -h2_priority($sess, 16, 1, 0); -h2_priority($sess, 16, 3, 0); +$s->h2_priority(16, 1, 0); +$s->h2_priority(16, 3, 0); -$sid = new_stream($sess, { path => '/t1.html', dep => 3 }); -h2_read($sess, all => [{ sid => $sid, length => 2**16 - 1 }]); +$sid = $s->new_stream({ path => '/t1.html', dep => 3 }); +$s->read(all => [{ sid => $sid, length => 2**16 - 1 }]); -$sid2 = new_stream($sess, { path => '/t2.html' }); -h2_read($sess, all => [{ sid => $sid2, fin => 0x4 }]); +$sid2 = $s->new_stream({ path => '/t2.html' }); +$s->read(all => [{ sid => $sid2, fin => 0x4 }]); -h2_window($sess, 2**17, $sid); -h2_window($sess, 2**17, $sid2); -h2_window($sess, 2**17); +$s->h2_window(2**17, $sid); +$s->h2_window(2**17, $sid2); +$s->h2_window(2**17); -$frames = h2_read($sess, all => [ +$frames = $s->read(all => [ { sid => $sid, fin => 1 }, { sid => $sid2, fin => 1 }, ]); @@ -246,22 +246,22 @@ is($sids, "$sid2 $sid", 'dependency - HE # and vice versa -$sess = new_session(); +$s = Test::Nginx::HTTP2->new(); -h2_priority($sess, 16, 1, 0); -h2_priority($sess, 16, 3, 0); +$s->h2_priority(16, 1, 0); +$s->h2_priority(16, 3, 0); -$sid = new_stream($sess, { path => '/t1.html' }); -h2_read($sess, all => [{ sid => $sid, length => 2**16 - 1 }]); +$sid = $s->new_stream({ path => '/t1.html' }); +$s->read(all => [{ sid => $sid, length => 2**16 - 1 }]); -$sid2 = new_stream($sess, { path => '/t2.html', dep => 1 }); -h2_read($sess, all => [{ sid => $sid2, fin => 0x4 }]); +$sid2 = $s->new_stream({ path => '/t2.html', dep => 1 }); +$s->read(all => [{ sid => $sid2, fin => 0x4 }]); -h2_window($sess, 2**17, $sid); -h2_window($sess, 2**17, $sid2); -h2_window($sess, 2**17); +$s->h2_window(2**17, $sid); +$s->h2_window(2**17, $sid2); +$s->h2_window(2**17); -$frames = h2_read($sess, all => [ +$frames = $s->read(all => [ { sid => $sid, fin => 1 }, { sid => $sid2, fin => 1 }, ]); @@ -272,9 +272,9 @@ is($sids, "$sid $sid2", 'dependency - HE # HEADERS - self dependency -$sess = new_session(); -$sid = new_stream($sess, { dep => 1 }); -$frames = h2_read($sess, all => [{ type => 'RST_STREAM' }]); +$s = Test::Nginx::HTTP2->new(); +$sid = $s->new_stream({ dep => 1 }); +$frames = $s->read(all => [{ type => 'RST_STREAM' }]); ($frame) = grep { $_->{type} eq "RST_STREAM" } @$frames; is($frame->{sid}, $sid, 'dependency - HEADERS self - RST_STREAM'); @@ -282,27 +282,27 @@ is($frame->{code}, 1, 'dependency - HEAD # PRIORITY frame, weighted dependencies -$sess = new_session(); +$s = Test::Nginx::HTTP2->new(); -h2_priority($sess, 16, 5, 0); -h2_priority($sess, 255, 1, 5); -h2_priority($sess, 0, 3, 5); +$s->h2_priority(16, 5, 0); +$s->h2_priority(255, 1, 5); +$s->h2_priority(0, 3, 5); -$sid = new_stream($sess, { path => '/t1.html' }); -h2_read($sess, all => [{ sid => $sid, length => 2**16 - 1 }]); +$sid = $s->new_stream({ path => '/t1.html' }); +$s->read(all => [{ sid => $sid, length => 2**16 - 1 }]); -$sid2 = new_stream($sess, { path => '/t2.html' }); -h2_read($sess, all => [{ sid => $sid2, fin => 0x4 }]); +$sid2 = $s->new_stream({ path => '/t2.html' }); +$s->read(all => [{ sid => $sid2, fin => 0x4 }]); -my $sid3 = new_stream($sess, { path => '/t2.html' }); -h2_read($sess, all => [{ sid => $sid3, fin => 0x4 }]); +my $sid3 = $s->new_stream({ path => '/t2.html' }); +$s->read(all => [{ sid => $sid3, fin => 0x4 }]); -h2_window($sess, 2**16, 1); -h2_window($sess, 2**16, 3); -h2_window($sess, 2**16, 5); -h2_window($sess, 2**16); +$s->h2_window(2**16, 1); +$s->h2_window(2**16, 3); +$s->h2_window(2**16, 5); +$s->h2_window(2**16); -$frames = h2_read($sess, all => [ +$frames = $s->read(all => [ { sid => $sid, fin => 1 }, { sid => $sid2, fin => 1 }, { sid => $sid3, fin => 1 }, @@ -314,27 +314,27 @@ is($sids, "$sid3 $sid $sid2", 'weighted # and vice versa -$sess = new_session(); +$s = Test::Nginx::HTTP2->new(); -h2_priority($sess, 16, 5, 0); -h2_priority($sess, 0, 1, 5); -h2_priority($sess, 255, 3, 5); +$s->h2_priority(16, 5, 0); +$s->h2_priority(0, 1, 5); +$s->h2_priority(255, 3, 5); -$sid = new_stream($sess, { path => '/t1.html' }); -h2_read($sess, all => [{ sid => $sid, length => 2**16 - 1 }]); +$sid = $s->new_stream({ path => '/t1.html' }); +$s->read(all => [{ sid => $sid, length => 2**16 - 1 }]); -$sid2 = new_stream($sess, { path => '/t2.html' }); -h2_read($sess, all => [{ sid => $sid2, fin => 0x4 }]); +$sid2 = $s->new_stream({ path => '/t2.html' }); +$s->read(all => [{ sid => $sid2, fin => 0x4 }]); -$sid3 = new_stream($sess, { path => '/t2.html' }); -h2_read($sess, all => [{ sid => $sid3, fin => 0x4 }]); +$sid3 = $s->new_stream({ path => '/t2.html' }); +$s->read(all => [{ sid => $sid3, fin => 0x4 }]); -h2_window($sess, 2**16, 1); -h2_window($sess, 2**16, 3); -h2_window($sess, 2**16, 5); -h2_window($sess, 2**16); +$s->h2_window(2**16, 1); +$s->h2_window(2**16, 3); +$s->h2_window(2**16, 5); +$s->h2_window(2**16); -$frames = h2_read($sess, all => [ +$frames = $s->read(all => [ { sid => $sid, fin => 1 }, { sid => $sid2, fin => 1 }, { sid => $sid3, fin => 1 }, @@ -348,31 +348,31 @@ is($sids, "$sid3 $sid2 $sid", 'weighted # initial dependency tree: # 1 <- [3] <- 5 -$sess = new_session(); +$s = Test::Nginx::HTTP2->new(); -h2_window($sess, 2**18); +$s->h2_window(2**18); -h2_priority($sess, 16, 1, 0); -h2_priority($sess, 16, 3, 1); -h2_priority($sess, 16, 5, 3); +$s->h2_priority(16, 1, 0); +$s->h2_priority(16, 3, 1); +$s->h2_priority(16, 5, 3); -$sid = new_stream($sess, { path => '/t1.html' }); -h2_read($sess, all => [{ sid => $sid, length => 2**16 - 1 }]); +$sid = $s->new_stream({ path => '/t1.html' }); +$s->read(all => [{ sid => $sid, length => 2**16 - 1 }]); -$sid2 = new_stream($sess, { path => '/t1.html' }); -h2_read($sess, all => [{ sid => $sid2, length => 2**16 - 1 }]); +$sid2 = $s->new_stream({ path => '/t1.html' }); +$s->read(all => [{ sid => $sid2, length => 2**16 - 1 }]); -$sid3 = new_stream($sess, { path => '/t1.html' }); -h2_read($sess, all => [{ sid => $sid3, length => 2**16 - 1 }]); +$sid3 = $s->new_stream({ path => '/t1.html' }); +$s->read(all => [{ sid => $sid3, length => 2**16 - 1 }]); -h2_window($sess, 2**16, $sid2); +$s->h2_window(2**16, $sid2); -$frames = h2_read($sess, all => [{ sid => $sid2, fin => 1 }]); +$frames = $s->read(all => [{ sid => $sid2, fin => 1 }]); $sids = join ' ', map { $_->{sid} } grep { $_->{type} eq "DATA" } @$frames; is($sids, $sid2, 'removed dependency'); for (1 .. 40) { - h2_read($sess, all => [{ sid => new_stream($sess), fin => 1 }]); + $s->read(all => [{ sid => $s->new_stream(), fin => 1 }]); } # make circular dependency @@ -380,13 +380,13 @@ for (1 .. 40) { # 5 <- 1 # 1 <- 5 -h2_priority($sess, 16, 1, 5); -h2_priority($sess, 16, 5, 1); +$s->h2_priority(16, 1, 5); +$s->h2_priority(16, 5, 1); -h2_window($sess, 2**16, $sid); -h2_window($sess, 2**16, $sid3); +$s->h2_window(2**16, $sid); +$s->h2_window(2**16, $sid3); -$frames = h2_read($sess, all => [ +$frames = $s->read(all => [ { sid => $sid, fin => 1 }, { sid => $sid3, fin => 1 }, ]); @@ -400,26 +400,26 @@ is($frame->{length}, 81, 'removed depend # PRIORITY - reprioritization with circular dependency - exclusive [5] # 1 <- [5] <- 3 -$sess = new_session(); +$s = Test::Nginx::HTTP2->new(); -h2_window($sess, 2**18); +$s->h2_window(2**18); -h2_priority($sess, 16, 1, 0); -h2_priority($sess, 16, 3, 1); -h2_priority($sess, 16, 5, 1, excl => 1); +$s->h2_priority(16, 1, 0); +$s->h2_priority(16, 3, 1); +$s->h2_priority(16, 5, 1, excl => 1); -$sid = new_stream($sess, { path => '/t1.html' }); -h2_read($sess, all => [{ sid => $sid, length => 2**16 - 1 }]); +$sid = $s->new_stream({ path => '/t1.html' }); +$s->read(all => [{ sid => $sid, length => 2**16 - 1 }]); -$sid2 = new_stream($sess, { path => '/t1.html' }); -h2_read($sess, all => [{ sid => $sid2, length => 2**16 - 1 }]); +$sid2 = $s->new_stream({ path => '/t1.html' }); +$s->read(all => [{ sid => $sid2, length => 2**16 - 1 }]); -$sid3 = new_stream($sess, { path => '/t1.html' }); -h2_read($sess, all => [{ sid => $sid3, length => 2**16 - 1 }]); +$sid3 = $s->new_stream({ path => '/t1.html' }); +$s->read(all => [{ sid => $sid3, length => 2**16 - 1 }]); -h2_window($sess, 2**16, $sid); +$s->h2_window(2**16, $sid); -$frames = h2_read($sess, all => [{ sid => $sid, fin => 1 }]); +$frames = $s->read(all => [{ sid => $sid, fin => 1 }]); $sids = join ' ', map { $_->{sid} } grep { $_->{type} eq "DATA" } @$frames; is($sids, $sid, 'exclusive dependency - parent removed'); @@ -427,12 +427,12 @@ is($sids, $sid, 'exclusive dependency - # 5 <- 3 -- current dependency tree before reprioritization # 3 <- 5 -h2_priority($sess, 16, 5, 3); +$s->h2_priority(16, 5, 3); -h2_window($sess, 2**16, $sid2); -h2_window($sess, 2**16, $sid3); +$s->h2_window(2**16, $sid2); +$s->h2_window(2**16, $sid3); -$frames = h2_read($sess, all => [ +$frames = $s->read(all => [ { sid => $sid2, fin => 1 }, { sid => $sid3, fin => 1 }, ]);