forked from goodboy/tractor
Add a clustering test
parent
3130a04c61
commit
c1089dbd95
|
@ -0,0 +1,41 @@
|
|||
import itertools
|
||||
|
||||
import trio
|
||||
import tractor
|
||||
from tractor import open_actor_cluster
|
||||
from tractor.trionics import async_enter_all
|
||||
|
||||
from conftest import tractor_test
|
||||
|
||||
|
||||
MESSAGE = 'tractoring at full speed'
|
||||
|
||||
|
||||
@tractor.context
|
||||
async def worker(ctx: tractor.Context) -> None:
|
||||
await ctx.started()
|
||||
async with ctx.open_stream() as stream:
|
||||
async for msg in stream:
|
||||
# do something with msg
|
||||
print(msg)
|
||||
assert msg == MESSAGE
|
||||
|
||||
|
||||
@tractor_test
|
||||
async def test_streaming_to_actor_cluster() -> None:
|
||||
teardown_trigger = trio.Event()
|
||||
async with (
|
||||
open_actor_cluster(modules=[__name__]) as portals,
|
||||
async_enter_all(
|
||||
mngrs=[p.open_context(worker) for p in portals.values()],
|
||||
teardown_trigger=teardown_trigger,
|
||||
) as contexts,
|
||||
async_enter_all(
|
||||
mngrs=[ctx[0].open_stream() for ctx in contexts],
|
||||
teardown_trigger=teardown_trigger,
|
||||
) as streams,
|
||||
):
|
||||
with trio.move_on_after(1):
|
||||
for stream in itertools.cycle(streams):
|
||||
await stream.send(MESSAGE)
|
||||
teardown_trigger.set()
|
Loading…
Reference in New Issue