aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2015-08-06 10:54:14 +0900
committerKazuki Yamaguchi <k@rhe.jp>2015-08-06 10:54:14 +0900
commit716809dad0a7ac1a9eeda98b27fdf4b1feabcfef (patch)
treecacc432b1d9936bb247f00f55beffd111424551b
parentf5a929d12d67c00361477adcc6b9a33cf04fea35 (diff)
downloadplum-716809dad0a7ac1a9eeda98b27fdf4b1feabcfef.tar.gz
test: stream: add test case for exclusive flag
-rw-r--r--test/plum/stream/test_handle_frame.rb33
-rw-r--r--test/plum/test_stream.rb2
-rw-r--r--test/utils/server.rb8
3 files changed, 30 insertions, 13 deletions
diff --git a/test/plum/stream/test_handle_frame.rb b/test/plum/stream/test_handle_frame.rb
index 654656d..0c4b86e 100644
--- a/test/plum/stream/test_handle_frame.rb
+++ b/test/plum/stream/test_handle_frame.rb
@@ -6,7 +6,7 @@ class StreamHandleFrameTest < Minitest::Test
## DATA
def test_stream_handle_data
payload = "ABC" * 5
- open_new_stream(:open) {|stream|
+ open_new_stream(state: :open) {|stream|
data = nil
stream.on(:data) {|_data| data = _data }
stream.process_frame(Frame.new(type: :data, stream_id: stream.id,
@@ -17,7 +17,7 @@ class StreamHandleFrameTest < Minitest::Test
def test_stream_handle_data_padded
payload = "ABC" * 5
- open_new_stream(:open) {|stream|
+ open_new_stream(state: :open) {|stream|
data = nil
stream.on(:data) {|_data| data = _data }
stream.process_frame(Frame.new(type: :data, stream_id: stream.id,
@@ -28,7 +28,7 @@ class StreamHandleFrameTest < Minitest::Test
def test_stream_handle_data_too_long_padding
payload = "ABC" * 5
- open_new_stream(:open) {|stream|
+ open_new_stream(state: :open) {|stream|
assert_connection_error(:protocol_error) {
stream.process_frame(Frame.new(type: :data, stream_id: stream.id,
flags: [:padded], payload: "".push_uint8(100).push(payload).push("\x00"*6)))
@@ -38,7 +38,7 @@ class StreamHandleFrameTest < Minitest::Test
def test_stream_handle_data_end_stream
payload = "ABC" * 5
- open_new_stream(:open) {|stream|
+ open_new_stream(state: :open) {|stream|
stream.process_frame(Frame.new(type: :data, stream_id: stream.id,
flags: [:end_stream], payload: payload))
assert_equal(:half_closed_remote, stream.state)
@@ -47,7 +47,7 @@ class StreamHandleFrameTest < Minitest::Test
def test_stream_handle_data_invalid_state
payload = "ABC" * 5
- open_new_stream(:half_closed_remote) {|stream|
+ open_new_stream(state: :half_closed_remote) {|stream|
stream.process_frame(Frame.new(type: :data, stream_id: stream.id,
flags: [:end_stream], payload: payload))
last = sent_frames.last
@@ -134,17 +134,17 @@ class StreamHandleFrameTest < Minitest::Test
def test_stream_handle_headers_state
_payload = HPACK::Encoder.new(0).encode([[":path", "/"]])
- open_new_stream(:reserved_local) {|stream|
+ open_new_stream(state: :reserved_local) {|stream|
assert_connection_error(:protocol_error) {
stream.process_frame(Frame.new(type: :headers, stream_id: stream.id, flags: [:end_headers, :end_stream], payload: _payload))
}
}
- open_new_stream(:closed) {|stream|
+ open_new_stream(state: :closed) {|stream|
assert_connection_error(:stream_closed) {
stream.process_frame(Frame.new(type: :headers, stream_id: stream.id, flags: [:end_headers, :end_stream], payload: _payload))
}
}
- open_new_stream(:half_closed_remote) {|stream|
+ open_new_stream(state: :half_closed_remote) {|stream|
stream.process_frame(Frame.new(type: :headers, stream_id: stream.id, flags: [:end_headers, :end_stream], payload: _payload))
last = sent_frames.last
assert_equal(:rst_stream, last.type)
@@ -203,4 +203,21 @@ class StreamHandleFrameTest < Minitest::Test
assert_equal(ERROR_CODES[:protocol_error], last.payload.uint32)
}
end
+
+ def test_stream_handle_priority_exclusive
+ open_server_connection {|con|
+ parent = open_new_stream(con)
+ stream0 = open_new_stream(con, parent: parent)
+ stream1 = open_new_stream(con, parent: parent)
+ stream2 = open_new_stream(con, parent: parent)
+
+ payload = "".push_uint32((1 << 31) | parent.id).push_uint8(6)
+ stream0.process_frame(Frame.new(type: :priority,
+ stream_id: stream0.id,
+ payload: payload))
+ assert_equal(parent, stream0.parent)
+ assert_equal(stream0, stream1.parent)
+ assert_equal(stream0, stream2.parent)
+ }
+ end
end
diff --git a/test/plum/test_stream.rb b/test/plum/test_stream.rb
index 2fd48ce..ab0a135 100644
--- a/test/plum/test_stream.rb
+++ b/test/plum/test_stream.rb
@@ -12,7 +12,7 @@ class StreamTest < Minitest::Test
end
def test_stream_close
- open_new_stream(:half_closed_local) {|stream|
+ open_new_stream(state: :half_closed_local) {|stream|
stream.close(StreamError.new(:frame_size_error).http2_error_code)
last = sent_frames.last
diff --git a/test/utils/server.rb b/test/utils/server.rb
index 4c56eed..91c0b59 100644
--- a/test/utils/server.rb
+++ b/test/utils/server.rb
@@ -13,16 +13,16 @@ module ServerUtils
end
end
- def open_new_stream(arg1 = nil, arg2 = nil)
+ def open_new_stream(arg1 = nil, **kwargs)
if arg1.is_a?(ServerConnection)
con = arg1
- state = arg2 || :idle
else
con = open_server_connection
- state = arg1 || :idle
end
- @_stream = con.instance_eval { new_stream((con.streams.keys.last||0/2)*2+1, state: state) }
+ @_stream = con.instance_eval {
+ new_stream((con.streams.keys.last||0/2)*2+1, **kwargs)
+ }
if block_given?
yield @_stream
else