Add repetitive attach to existing segment test

shm_apis
Tyler Goodlet 2022-10-17 15:13:05 -04:00
parent c32b21b4b1
commit 339d787cf8
1 changed files with 45 additions and 0 deletions

View File

@ -2,6 +2,7 @@
Shared mem primitives and APIs.
"""
import uuid
# import numpy
import pytest
@ -13,6 +14,50 @@ from tractor._shm import (
)
@tractor.context
async def child_attach_shml_alot(
ctx: tractor.Context,
shm_key: str,
) -> None:
await ctx.started(shm_key)
# now try to attach a boatload of times in a loop..
for _ in range(1000):
shml = attach_shm_list(key=shm_key)
assert shml.shm.name == shm_key
await trio.sleep(0.001)
def test_child_attaches_alot():
async def main():
async with tractor.open_nursery() as an:
# allocate writeable list in parent
key = f'shml_{uuid.uuid4()}'
shml = open_shm_list(
key=key,
)
portal = await an.start_actor(
'shm_attacher',
enable_modules=[__name__],
)
async with (
portal.open_context(
child_attach_shml_alot, # taken from pytest parameterization
shm_key=key,
) as (ctx, start_val),
):
assert start_val == key
await ctx.result()
await portal.cancel_actor()
trio.run(main)
@tractor.context
async def child_read_shm_list(
ctx: tractor.Context,