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 },
 ]);