async def test_outside_source_stream_immediate_data(): stream = OutsideSourceReplayStream() f1 = asyncio.ensure_future(stream.wait_for_header()) f2 = asyncio.ensure_future(stream.wait_for_data(0)) stream.set_header("header") stream.feed_data(b"Lorem") assert await f1 == "header" assert await f2 == 5 assert stream.header == "header" assert stream.data.bytes() == b"Lorem"
async def test_outside_source_stream_read(event_loop): stream = OutsideSourceReplayStream() f = asyncio.ensure_future(stream.wait_for_data(0)) stream.set_header("header") await exhaust_callbacks(event_loop) assert not f.done() stream.feed_data(b"Lorem") assert await f == 5 assert stream.data.bytes() == b"Lorem" stream.finish() await stream.wait_for_ended()
async def test_outside_source_stream_wait_until_position(event_loop): stream = OutsideSourceReplayStream() f = asyncio.ensure_future(stream.wait_for_data(3)) stream.set_header("header") stream.feed_data(b"a") exhaust_callbacks(event_loop) assert not f.done() stream.feed_data(b"aa") exhaust_callbacks(event_loop) assert not f.done() stream.feed_data(b"ccc") assert await f == 3 assert stream.data[3:6] == b"ccc"
async def test_outside_source_stream_immediate_end(event_loop): stream = OutsideSourceReplayStream() f1 = asyncio.ensure_future(stream.wait_for_header()) f2 = asyncio.ensure_future(stream.wait_for_data(0)) f3 = asyncio.ensure_future(stream.wait_for_ended()) exhaust_callbacks(event_loop) assert not any(x.done() for x in [f1, f2, f3]) stream.finish() assert await f1 is None assert await f2 == 0 assert stream.header is None assert stream.data.bytes() == b"" await f3
async def test_outside_source_stream_finish(): stream = OutsideSourceReplayStream() f = asyncio.ensure_future(stream.wait_for_data(0)) stream.finish() await f assert stream.ended()