Facepalm, fix logic misstep on child side
Namely that `add_hooks: bool` should be the same as on the rent side.. Also, just drop the now unused `iter_maybe_sends`. This makes the suite entire greeeeen btw, including the new sub-suite which i hadn't runt before Boext_type_plds
parent
46e0dadd9c
commit
92e1a2313d
|
@ -323,8 +323,8 @@ def test_pld_limiting_usage(
|
||||||
limit_plds_args: tuple[dict, Exception|None],
|
limit_plds_args: tuple[dict, Exception|None],
|
||||||
):
|
):
|
||||||
'''
|
'''
|
||||||
Verify `dec_hook()` and `ext_types` need to either both be provided
|
Verify `dec_hook()` and `ext_types` need to either both be
|
||||||
or we raise a explanator type-error.
|
provided or we raise a explanator type-error.
|
||||||
|
|
||||||
'''
|
'''
|
||||||
kwargs, maybe_err = limit_plds_args
|
kwargs, maybe_err = limit_plds_args
|
||||||
|
@ -406,117 +406,11 @@ def chk_codec_applied(
|
||||||
assert enter_value is same_codec
|
assert enter_value is same_codec
|
||||||
|
|
||||||
|
|
||||||
# def iter_maybe_sends(
|
|
||||||
# send_items: dict[Union[Type], Any] | list[tuple],
|
|
||||||
# ipc_pld_spec: Union[Type] | Any,
|
|
||||||
# add_codec_hooks: bool,
|
|
||||||
|
|
||||||
# codec: MsgCodec|None = None,
|
|
||||||
|
|
||||||
# ) -> tuple[Any, bool]:
|
|
||||||
|
|
||||||
# if isinstance(send_items, dict):
|
|
||||||
# send_items = send_items.items()
|
|
||||||
|
|
||||||
# for (
|
|
||||||
# send_type_spec,
|
|
||||||
# send_value,
|
|
||||||
# ) in send_items:
|
|
||||||
|
|
||||||
# expect_roundtrip: bool = False
|
|
||||||
|
|
||||||
# # values-to-typespec santiy
|
|
||||||
# send_type = type(send_value)
|
|
||||||
# assert send_type == send_type_spec or (
|
|
||||||
# (subtypes := getattr(send_type_spec, '__args__', None))
|
|
||||||
# and send_type in subtypes
|
|
||||||
# )
|
|
||||||
|
|
||||||
# spec_subtypes: set[Union[Type]] = (
|
|
||||||
# getattr(
|
|
||||||
# ipc_pld_spec,
|
|
||||||
# '__args__',
|
|
||||||
# {ipc_pld_spec,},
|
|
||||||
# )
|
|
||||||
# )
|
|
||||||
# send_in_spec: bool = (
|
|
||||||
# send_type == ipc_pld_spec
|
|
||||||
# or (
|
|
||||||
# ipc_pld_spec != Any
|
|
||||||
# and # presume `Union` of types
|
|
||||||
# send_type in spec_subtypes
|
|
||||||
# )
|
|
||||||
# or (
|
|
||||||
# ipc_pld_spec == Any
|
|
||||||
# and
|
|
||||||
# send_type != NamespacePath
|
|
||||||
# )
|
|
||||||
# )
|
|
||||||
# expect_roundtrip = (
|
|
||||||
# send_in_spec
|
|
||||||
# # any spec should support all other
|
|
||||||
# # builtin py values that we send
|
|
||||||
# # except our custom nsp type which
|
|
||||||
# # we should be able to send as long
|
|
||||||
# # as we provide the custom codec hooks.
|
|
||||||
# or (
|
|
||||||
# ipc_pld_spec == Any
|
|
||||||
# and
|
|
||||||
# send_type == NamespacePath
|
|
||||||
# and
|
|
||||||
# add_codec_hooks
|
|
||||||
# )
|
|
||||||
# )
|
|
||||||
|
|
||||||
# if codec is not None:
|
|
||||||
# # XXX FIRST XXX ensure roundtripping works
|
|
||||||
# # before touching any IPC primitives/APIs.
|
|
||||||
# wire_bytes: bytes = codec.encode(
|
|
||||||
# Started(
|
|
||||||
# cid='blahblah',
|
|
||||||
# pld=send_value,
|
|
||||||
# )
|
|
||||||
# )
|
|
||||||
# # NOTE: demonstrates the decoder loading
|
|
||||||
# # to via our native SCIPP msg-spec
|
|
||||||
# # (structurred-conc-inter-proc-protocol)
|
|
||||||
# # implemented as per,
|
|
||||||
# try:
|
|
||||||
# msg: Started = codec.decode(wire_bytes)
|
|
||||||
# if not expect_roundtrip:
|
|
||||||
# pytest.fail(
|
|
||||||
# f'NOT-EXPECTED able to roundtrip value given spec:\n'
|
|
||||||
# f'ipc_pld_spec -> {ipc_pld_spec}\n'
|
|
||||||
# f'value -> {send_value}: {send_type}\n'
|
|
||||||
# )
|
|
||||||
|
|
||||||
# pld = msg.pld
|
|
||||||
# assert pld == send_value
|
|
||||||
|
|
||||||
# except ValidationError:
|
|
||||||
# if expect_roundtrip:
|
|
||||||
# pytest.fail(
|
|
||||||
# f'EXPECTED to roundtrip value given spec:\n'
|
|
||||||
# f'ipc_pld_spec -> {ipc_pld_spec}\n'
|
|
||||||
# f'value -> {send_value}: {send_type}\n'
|
|
||||||
# )
|
|
||||||
|
|
||||||
# yield (
|
|
||||||
# str(send_type),
|
|
||||||
# send_value,
|
|
||||||
# expect_roundtrip,
|
|
||||||
# )
|
|
||||||
|
|
||||||
|
|
||||||
@tractor.context
|
@tractor.context
|
||||||
async def send_back_values(
|
async def send_back_values(
|
||||||
ctx: Context,
|
ctx: Context,
|
||||||
rent_pld_spec_type_strs: list[str],
|
rent_pld_spec_type_strs: list[str],
|
||||||
add_hooks: bool,
|
add_hooks: bool,
|
||||||
# expect_ipc_send: dict[str, tuple[Any, bool]],
|
|
||||||
|
|
||||||
# expect_debug: bool,
|
|
||||||
# started_msg_bytes: bytes,
|
|
||||||
|
|
||||||
) -> None:
|
) -> None:
|
||||||
'''
|
'''
|
||||||
|
@ -545,6 +439,8 @@ async def send_back_values(
|
||||||
# ONLY add ext-hooks if the rent specified a non-std type!
|
# ONLY add ext-hooks if the rent specified a non-std type!
|
||||||
add_hooks: bool = (
|
add_hooks: bool = (
|
||||||
NamespacePath in rent_pld_spec_types
|
NamespacePath in rent_pld_spec_types
|
||||||
|
and
|
||||||
|
add_hooks
|
||||||
)
|
)
|
||||||
|
|
||||||
# same as on parent side config.
|
# same as on parent side config.
|
||||||
|
@ -580,19 +476,11 @@ async def send_back_values(
|
||||||
child_pld_spec,
|
child_pld_spec,
|
||||||
)
|
)
|
||||||
assert (
|
assert (
|
||||||
# child_pld_spec == rent_pld_spec
|
|
||||||
child_pld_spec_types.issuperset(
|
child_pld_spec_types.issuperset(
|
||||||
rent_pld_spec_types
|
rent_pld_spec_types
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
# expected_pld_spec_str: str = str(ipc_spec)
|
|
||||||
# assert (
|
|
||||||
# pld_spec_str == expected_pld_spec_str
|
|
||||||
# and
|
|
||||||
# ipc_pld_spec == ipc_spec
|
|
||||||
# )
|
|
||||||
|
|
||||||
# ?TODO, try loop for each of the types in pld-superset?
|
# ?TODO, try loop for each of the types in pld-superset?
|
||||||
#
|
#
|
||||||
# for send_value in [
|
# for send_value in [
|
||||||
|
@ -609,6 +497,7 @@ async def send_back_values(
|
||||||
f'child_pld_spec: {child_pld_spec}\n'
|
f'child_pld_spec: {child_pld_spec}\n'
|
||||||
f'codec: {codec}\n'
|
f'codec: {codec}\n'
|
||||||
)
|
)
|
||||||
|
# await tractor.pause()
|
||||||
await ctx.started(nsp)
|
await ctx.started(nsp)
|
||||||
|
|
||||||
except tractor.MsgTypeError as _mte:
|
except tractor.MsgTypeError as _mte:
|
||||||
|
@ -826,11 +715,13 @@ def test_ext_types_over_ipc(
|
||||||
assert nsp_rt.load_ref() is ex_func
|
assert nsp_rt.load_ref() is ex_func
|
||||||
|
|
||||||
# this test passes bc we can go no further!
|
# this test passes bc we can go no further!
|
||||||
except MsgTypeError:
|
except MsgTypeError as mte:
|
||||||
if not add_hooks:
|
# if not add_hooks:
|
||||||
# teardown nursery
|
# # teardown nursery
|
||||||
await p.cancel_actor()
|
# await p.cancel_actor()
|
||||||
return
|
# return
|
||||||
|
|
||||||
|
raise mte
|
||||||
|
|
||||||
await p.cancel_actor()
|
await p.cancel_actor()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue