spec/stream_spec.rb in http-2-0.6.1 vs spec/stream_spec.rb in http-2-0.6.3
- old
+ new
@@ -1,22 +1,21 @@
require "helper"
describe HTTP2::Stream do
before(:each) do
- @conn = Connection.new
- @stream = @conn.new_stream
+ @client = Client.new
+ @stream = @client.new_stream
end
context "stream states" do
it "should initiliaze all streams to IDLE" do
@stream.state.should eq :idle
end
- it "should set stream priority and flow window" do
- stream = @conn.new_stream(priority: 3, window: 1024)
+ it "should set custom stream priority" do
+ stream = @client.new_stream(priority: 3)
stream.priority.should eq 3
- stream.window.should eq 1024
end
context "reserved (local)" do
before(:each) { @stream.send PUSH_PROMISE }
@@ -135,20 +134,20 @@
s.state.should eq :half_closed_remote
end
end
it "should transition to half closed if remote opened with END_STREAM" do
- s = @conn.new_stream
+ s = @client.new_stream
hclose = HEADERS.dup
hclose[:flags] = [:end_stream]
s.receive hclose
s.state.should eq :half_closed_remote
end
it "should transition to half closed if local opened with END_STREAM" do
- s = @conn.new_stream
+ s = @client.new_stream
hclose = HEADERS.dup
hclose[:flags] = [:end_stream]
s.send hclose
s.state.should eq :half_closed_local
@@ -164,12 +163,12 @@
@stream.state.should eq :closed
end
it "should emit :active on open transition" do
openp, openr = false, false
- sp = @conn.new_stream
- sr = @conn.new_stream
+ sp = @client.new_stream
+ sr = @client.new_stream
sp.on(:active) { openp = true }
sr.on(:active) { openr = true }
sp.receive HEADERS
sr.send HEADERS
@@ -177,11 +176,11 @@
openp.should be_true
openr.should be_true
end
it "should not emit :active on transition from open" do
- order, stream = [], @conn.new_stream
+ order, stream = [], @client.new_stream
stream.on(:active) { order << :active }
stream.on(:half_close) { order << :half_close }
stream.on(:close) { order << :close }
@@ -206,11 +205,11 @@
closep.should be_true
closer.should be_true
end
it "should emit :close after frame is processed" do
- order, stream = [], @conn.new_stream
+ order, stream = [], @client.new_stream
stream.on(:active) { order << :active }
stream.on(:data) { order << :data }
stream.on(:half_close) { order << :half_close }
stream.on(:close) { order << :close }
@@ -268,11 +267,11 @@
@stream.state.should eq :half_closed_local
end
it "should emit :half_close event on transition" do
order = []
- stream = @conn.new_stream
+ stream = @client.new_stream
stream.on(:active) { order << :active }
stream.on(:half_close) { order << :half_close }
req = HEADERS.dup
req[:flags] = [:end_stream, :end_headers]
@@ -328,11 +327,11 @@
@stream.state.should eq :half_closed_remote
end
it "should emit :half_close event on transition" do
order = []
- stream = @conn.new_stream
+ stream = @client.new_stream
stream.on(:active) { order << :active }
stream.on(:half_close) { order << :half_close }
req = HEADERS.dup
req[:flags] = [:end_stream, :end_headers]
@@ -458,22 +457,22 @@
settings, data = SETTINGS.dup, DATA.dup
settings[:payload] = { settings_initial_window_size: 1000 }
settings[:stream] = 0
framer = Framer.new
- @conn << framer.generate(settings)
+ @client << framer.generate(settings)
- s1 = @conn.new_stream
+ s1 = @client.new_stream
s1.send HEADERS
s1.send data.merge({payload: "x" * 900, flags: []})
s1.window.should eq 100
s1.send data.merge({payload: "x" * 200})
s1.window.should eq 0
s1.buffered_amount.should eq 100
- @conn << framer.generate(WINDOW_UPDATE.merge({
+ @client << framer.generate(WINDOW_UPDATE.merge({
stream: s1.id, increment: 1000
}))
s1.buffered_amount.should eq 0
s1.window.should eq 900
end
@@ -488,12 +487,12 @@
@stream.reprioritize 30
end
it ".reprioritize should raise error if invoked by server" do
- conn = Connection.new(:server)
- stream = conn.new_stream
+ srv = Server.new
+ stream = srv.new_stream
expect { stream.reprioritize(10) }.to raise_error(StreamError)
end
it ".headers should emit HEADERS frames" do
@@ -555,15 +554,15 @@
end
end
context "server API" do
before(:each) do
- @srv = Connection.new(:server)
+ @srv = Server.new
@frm = Framer.new
- @conn.on(:frame) {|bytes| @srv << bytes }
- @client_stream = @conn.new_stream
+ @client.on(:frame) {|bytes| @srv << bytes }
+ @client_stream = @client.new_stream
end
it "should emit received headers via on(:headers)" do
headers, recv = {"header" => "value"}, nil
@srv.on(:stream) do |stream|
@@ -598,25 +597,19 @@
@client_stream.reprioritize(new_priority)
end
context "push" do
before(:each) do
- @srv.on(:frame) {|bytes| @conn << bytes }
+ @srv.on(:frame) {|bytes| @client << bytes }
@srv.on(:stream) do |stream|
@server_stream = stream
end
- @srv << @frm.generate(SETTINGS)
+ # @srv << @frm.generate(SETTINGS)
@client_stream.headers({"key" => "value"})
end
- it ".promise should raise error on client push" do
- expect do
- @client_stream.promise({}) {}
- end.to raise_error(ProtocolError)
- end
-
it ".promise should emit server initiated stream" do
push = nil
@server_stream.promise({"key" => "val"}) { |pstream| push = pstream }
push.id.should eq 2
end
@@ -649,10 +642,10 @@
order.should eq [:reserved, :active, :half_close, :close]
end
it "client: headers > active > headers > .. > data > close" do
order, headers = [], {}
- @conn.on(:promise) do |push|
+ @client.on(:promise) do |push|
order << :reserved
push.on(:active) { order << :active }
push.on(:data) { order << :data }
push.on(:half_close){ order << :half_close }