Skip to content

Commit 3e52ec7

Browse files
committed
adding tests for more edge cases
Signed-off-by: Jesse Jaggars <jjaggars@redhat.com>
1 parent 73f82e4 commit 3e52ec7

2 files changed

Lines changed: 31 additions & 4 deletions

File tree

receptor/protocol.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ def connection_lost(self, exc):
5858
self.receptor.remove_connection(self)
5959

6060
def data_received(self, data):
61+
# TODO: The put() call can raise an exception which should trigger a
62+
# transport failure.
6163
self.loop.create_task(self.incoming_buffer.put(data))
6264

6365
async def wait_greeting(self):

receptor/tests/test_framedbuffer.py

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ async def test_framedbuffer(framed_buffer, msg_id):
2424

2525
await framed_buffer.put(f1.serialize() + header_bytes)
2626

27-
payload = b"tina loves butts"
28-
payload2 = b"yep yep yep"
27+
payload = b"payload one is very boring"
28+
payload2 = b"payload two is also very boring"
2929
f2 = Frame(Frame.Types.PAYLOAD, 1, len(payload) + len(payload2), msg_id, 2)
3030

3131
await framed_buffer.put(f2.serialize() + payload)
@@ -84,7 +84,7 @@ async def test_command(framed_buffer, msg_id):
8484
@pytest.mark.asyncio
8585
async def test_overfull(framed_buffer, msg_id):
8686
header = {"foo": "bar"}
87-
payload = b'this is a test'
87+
payload = b"this is a test"
8888
msg = FramedMessage(header=header, payload=payload)
8989

9090
await framed_buffer.put(msg.serialize())
@@ -98,7 +98,7 @@ async def test_overfull(framed_buffer, msg_id):
9898
@pytest.mark.asyncio
9999
async def test_underfull(framed_buffer, msg_id):
100100
header = {"foo": "bar"}
101-
payload = b'this is a test'
101+
payload = b"this is a test"
102102
msg = FramedMessage(header=header, payload=payload)
103103
b = msg.serialize()
104104

@@ -109,3 +109,28 @@ async def test_underfull(framed_buffer, msg_id):
109109

110110
assert m.header == header
111111
assert m.payload == payload
112+
113+
114+
@pytest.mark.asyncio
115+
async def test_malformed_frame(framed_buffer, msg_id):
116+
with pytest.raises(ValueError):
117+
await framed_buffer.put(
118+
b"this is total garbage and should break things very nicely"
119+
)
120+
121+
122+
@pytest.mark.skip(
123+
reason="""
124+
This test illustrates that sending an incomplete stream corrupts the transport"""
125+
)
126+
@pytest.mark.asyncio
127+
async def test_too_short(framed_buffer, msg_id):
128+
f1 = Frame(Frame.Types.HEADER, 1, 100, 1, 1)
129+
too_short_header = b"this is not long enough"
130+
f2 = Frame(Frame.Types.PAYLOAD, 1, 100, 1, 2)
131+
too_short_payload = b"this is also not long enough"
132+
133+
await framed_buffer.put(f1.serialize() + too_short_header)
134+
await framed_buffer.put(f2.serialize() + too_short_payload)
135+
136+
await framed_buffer.get()

0 commit comments

Comments
 (0)