Add initial Restreamer implementation for YouTube-to-Jellyfin live restreaming
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
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
|
||||
Reference in New Issue
Block a user