tractor/tests/discovery
Gud Boi 7f2654770a Read WireGuard iface keys through `pyroute2`
Add async `read_wg_pubkey()` and `read_wg_peers()` helpers which
offload `WireGuard.info()` calls to a `trio` worker thread.

Deats,
- add the Linux-only `wg` extra and pin `pyroute2`
- pass `flags=0` so a read never creates a named netns
- normalize multipart replies, validate keys and de-dup peers
- always close the netlink client, including error paths
- test thread offload, netns forwarding and client cleanup

Prompt-IO: ai/prompt-io/opencode/20260821T233204Z_5d92595f_prompt_io.md

(this patch was generated in some part by `opencode` using `gpt-5.6-sol` (`openai`))
2026-08-21 22:21:22 -04:00
..
__init__.py Add `test_multiaddr.py` suite for `mk_maddr()` 2026-04-14 19:54:14 -04:00
conftest.py Mv `daemon` + `test_multi_program` to `discovery/` 2026-06-17 17:39:44 -04:00
test_address_serialization.py Emit canonical tagged addresses 2026-08-20 10:42:18 -04:00
test_multi_program.py Use `aid.uid` over manual `(name, uuid)` tuples 2026-06-27 21:38:30 -04:00
test_multiaddr.py Emit canonical tagged addresses 2026-08-20 10:42:18 -04:00
test_registrar.py Harden `test_registrar` with reap fixtures, timeouts 2026-06-17 17:39:44 -04:00
test_tpt_bind_addrs.py Emit canonical tagged addresses 2026-08-20 10:42:18 -04:00
test_tunnelled_addr.py Support nested `wg` maddrs 2026-08-18 23:25:56 -04:00
test_wg_inspection.py Read WireGuard iface keys through `pyroute2` 2026-08-21 22:21:22 -04:00