Files
Restreamer/tests/test_broadcaster.py

36 lines
897 B
Python

import asyncio
from restreamer.broadcaster import ChannelBroadcaster
async def test_publish_fans_out_to_all_subscribers() -> None:
broadcaster = ChannelBroadcaster("test")
first = broadcaster.subscribe()
second = broadcaster.subscribe()
broadcaster.publish(b"chunk")
assert await first.get() == b"chunk"
assert await second.get() == b"chunk"
async def test_unsubscribe_stops_receiving() -> None:
broadcaster = ChannelBroadcaster("test")
queue = broadcaster.subscribe()
broadcaster.unsubscribe(queue)
broadcaster.publish(b"chunk")
assert queue.empty()
async def test_full_queue_drops_slow_subscriber() -> None:
broadcaster = ChannelBroadcaster("test")
queue = broadcaster.subscribe()
for _ in range(queue.maxsize + 1):
broadcaster.publish(b"x")
await asyncio.sleep(0)
assert broadcaster.subscriber_count == 0