tractor/tests
Gud Boi 7343c943fa Add `open_topology_events()`, push-based discovery
Second half of layer B: an `@acm` yielding a `trio` receive-chan
of `TIPCNameEvent` fed by a nursery-spawned reader on a
`SOCK_SEQPACKET` conn to `TIPC_TOP_SRV`.

This is the bit that makes #378's "end game cluster proto" claim
real — the kernel *tells* us when any actor anywhere in the
cluster publishes or withdraws a service name, so a registrar
never has to poll `find_actor()`. Groundwork for the push
registry in `discovery/_registry.py` (gh #184, #216).

Deats,
- `filt` selects granularity; `TIPC_SUB_SERVICE` is one event
  per *name*, `TIPC_SUB_PORTS` one per *publisher* — the latter
  makes the §2.3 duplicate-name/round-robin crosstalk case
  externally observable, which is how a push-registry could
  ever detect it.
- a full event buf **drops** w/ a loud warning rather than
  blocking the reader; stalling it just backs up the kernel's
  own queue and loses the event less visibly.
- `SOCK_SEQPACKET` is fine here bc this sock never goes through
  `MsgpackTransport` — the contract's "`SOCK_STREAM` only" rule
  is about `MsgTransport` streams, not this.

XXX teardown order is load-bearing: cancel the nursery BEFORE
closing the fd. `.close()`ing out from under a pending
`.recv()` races — trio's retry can land on an already-freed fd
and raise a bare `OSError(EBADF)` instead of the
`ClosedResourceError` the reader guards for, which then escapes
the nursery as an eg.

(this patch was generated in some part by `claude-code` using `claude-opus-5` (`anthropic`))
2026-08-29 22:58:48 -04:00
..
devx Strengthen context and debugger regressions 2026-08-25 15:05:55 -04:00
discovery Add the interim `/tipc/` maddr grammar 2026-08-29 22:58:48 -04:00
ipc Add `open_topology_events()`, push-based discovery 2026-08-29 22:58:48 -04:00
msg Move `NamespacePath` ref test into `tests.msg` 2026-08-24 23:49:09 -04:00
trionics Assert cancellation at the startup boundary 2026-08-12 15:45:30 -04:00
__init__.py Add `tests/__init__.py` for `.conftest` imports 2025-03-20 20:53:54 -04:00
_helpers.py Strengthen `to_actor` API contract tests 2026-08-25 13:44:50 -04:00
conftest.py Fix uds `get_random` reaper-regex break (+2 nits) 2026-06-29 18:51:26 -04:00
test_2way.py Tidy a typing-typo, add explicit `ids=` for paramed suites 2026-03-09 19:35:47 -04:00
test_advanced_faults.py Revert advanced-fault UDS edge case handling 2026-03-13 21:10:52 -04:00
test_advanced_streaming.py Wait for active pub/sub cancellation targets 2026-08-25 20:23:53 -04:00
test_cancellation.py Restore high-fanout startup cancellation stress 2026-08-26 17:00:44 -04:00
test_child_manages_service_nursery.py Name every `ActorNursery` binding `an` in tests/examples 2026-08-25 19:19:28 -04:00
test_clustering.py Add `cpu_perf_headroom()` for throttle-aware deadlines 2026-06-29 18:08:50 -04:00
test_context_stream_semantics.py Strengthen context and debugger regressions 2026-08-25 15:05:55 -04:00
test_docs_examples.py Document stable macOS UDS operation 2026-08-14 10:37:19 -04:00
test_infected_asyncio.py Link asyncio cancellation regression provenance 2026-08-26 17:00:54 -04:00
test_inter_peer_cancellation.py Name every `ActorNursery` binding `an` in tests/examples 2026-08-25 19:19:28 -04:00
test_lazy_imports.py Guard the cold import latency budget 2026-08-13 02:35:07 -04:00
test_legacy_one_way_streaming.py Use `cpu_perf_headroom()` for timing-test deadlines 2026-06-29 18:08:50 -04:00
test_local.py Use `.aid` fields over deprecated `.uid` in tests 2026-06-25 17:44:22 -04:00
test_log_sys.py Retain dynamic logger caller discovery 2026-08-12 20:52:47 -04:00
test_oob_cancellation.py Woops, fix missing `assert` thanks to copilot 2025-09-11 13:13:18 -04:00
test_pubsub.py Propagate unexpected `@pub` subscriber errors 2026-08-25 20:38:57 -04:00
test_reg_err_types.py Drop stale `.cancel()`, fix docstring typo in tests 2026-04-02 18:21:19 -04:00
test_remote_exc_relay.py Adjust ep-masking-suite for the real-use-case 2025-07-15 07:23:21 -04:00
test_resource_cache.py Wait for ctx exit in `maybe_open_context()` 2026-08-03 23:45:42 -04:00
test_ringbuf.py Remove `run_in_actor()` + the ria reap cluster 2026-08-25 19:16:32 -04:00
test_root_infect_asyncio.py Skip `infect_asyncio` tests on Windows 2026-08-14 23:12:02 -04:00
test_root_runtime.py Update tests+examples imports for new subpkgs 2026-04-02 17:59:13 -04:00
test_rpc.py Bind named `to_actor.run()` inputs with partials 2026-08-25 19:20:43 -04:00
test_runtime.py Bind named `to_actor.run()` inputs with partials 2026-08-25 19:20:43 -04:00
test_shm.py Skip Windows-hanging shm IPC test 2026-08-14 23:17:11 -04:00
test_spawning.py Clarify recursive one-shot spawning test 2026-08-26 18:27:11 -04:00
test_task_broadcasting.py Reject concurrent `BroadcastReceiver.receive()` calls 2026-08-27 22:11:55 -04:00
test_to_actor.py Remove `run_in_actor()` + the ria reap cluster 2026-08-25 19:16:32 -04:00
test_trioisms.py Tweaks from copilot, type fix, typos, language. 2025-09-11 10:01:25 -04:00