tractor/tests
Gud Boi 20cb99ecd4 Add `cpu_perf_headroom()` for throttle-aware deadlines
Mass `trio` deadline-miss failures on byte-identical code turned
out to be a firmware/EC power-cap (AMD PPT/STAPM) clamping the
all-core sustained clock while every static knob (`governor`,
`scaling_max_freq`, EPP, platform-profile) still read "performance"
— invisible to the existing `cpu_scaling_factor()` check. See
`scripts/cpu-perf-check` + the
`ai/conc-anal/trio_033_cancel_cascade_slowdown_depth3_issue.md`
notes.

Deats,
- add `_measure_sustained_headroom()` to `tests/conftest.py`: a
  one-shot ~0.9s all-core burn (explicit `fork`-ctx `mp` procs)
  sampling achieved-vs-max freq AFTER the boost window; under a 0.6
  gate it returns the full inverse fraction (capped 4x), else 1.0;
  best-effort 1.0 on non-linux or any error,
- add `cpu_perf_headroom()`: `max()` of the static scaling factor
  and the (session-cached) sustained probe,
- inflate deadline budgets by it in `test_dynamic_pub_sub`, both
  `test_clustering` cases, the
  `test_multi_nested_subactors_error_through_nurseries` pexpect
  waits + `test_nested_multierrors`,
- `xfail(strict=False)` `test_nested_multierrors` depth=3 under
  throttle: the deep tree trips tractor's INTERNAL reap deadlines
  (`soft_kill`/`hard_kill` `terminate_after=1.6`) minting a
  `Cancelled` inside the runtime — not fixable by test-budget
  inflation; auto-clears once the box un-throttles.

(this patch was generated in some part by [`claude-code`][claude-code-gh])
[claude-code-gh]: https://github.com/anthropics/claude-code
2026-06-12 13:37:05 -04:00
..
devx Add `cpu_perf_headroom()` for throttle-aware deadlines 2026-06-12 13:37:05 -04:00
discovery Add boot-race conc-anal, widen `xfail` to `n_dups=8` 2026-05-13 09:45:45 -04:00
ipc Add `enable_transports`/`registry_addrs` proto guard 2026-05-06 15:13:02 -04:00
msg Add `set_fork_aware_capture`, timeout to msg tests 2026-05-13 11:59:37 -04:00
spawn Drop test-local timeouts, +`sync_pause` to dev 2026-04-29 18:10:40 -04:00
trionics Add `supervise_run_process` to `trionics._subproc` 2026-06-01 19:29:46 -04:00
__init__.py Add `tests/__init__.py` for `.conftest` imports 2025-03-20 20:53:54 -04:00
conftest.py Add `cpu_perf_headroom()` for throttle-aware deadlines 2026-06-12 13:37:05 -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 Add `cpu_perf_headroom()` for throttle-aware deadlines 2026-06-12 13:37:05 -04:00
test_cancellation.py Add `cpu_perf_headroom()` for throttle-aware deadlines 2026-06-12 13:37:05 -04:00
test_child_manages_service_nursery.py Swap `open_channel_from()` to yield `(chan, first)` 2026-03-13 19:28:57 -04:00
test_clustering.py Add `cpu_perf_headroom()` for throttle-aware deadlines 2026-06-12 13:37:05 -04:00
test_context_stream_semantics.py Adjust `test_simple_context` timeout for forking spawner 2026-05-13 12:03:58 -04:00
test_docs_examples.py Move `get_cpu_state()` to `conftest` as shared latency headroom 2026-04-02 17:59:13 -04:00
test_infected_asyncio.py Bump trio `echoserver` cancel timeout 1→4s 2026-06-02 00:49:54 -04:00
test_inter_peer_cancellation.py Enrich `pytestmark` in `test_inter_peer_cancellation` 2026-05-13 12:28:17 -04:00
test_legacy_one_way_streaming.py Adjust legacy streaming test timeouts for fork+UDS 2026-05-11 21:43:19 -04:00
test_local.py Mk `test_no_runtime()` not require `pytest-trio` 2026-05-13 20:43:22 -04:00
test_log_sys.py Add `add_log_level()` factory + register `IO`=21 2026-06-01 19:42:03 -04:00
test_oob_cancellation.py Woops, fix missing `assert` thanks to copilot 2025-09-11 13:13:18 -04:00
test_pubsub.py Mark `subint`-hanging tests with `skipon_spawn_backend` 2026-04-23 18:47:49 -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 Scale `test_open_local_sub_to_stream` timeout by CPU factor 2026-04-16 20:03:32 -04:00
test_ringbuf.py Avoid skip `.ipc._ringbuf` import when no `cffi` 2026-04-23 18:47:49 -04:00
test_root_infect_asyncio.py Swap `open_channel_from()` to yield `(chan, first)` 2026-03-13 19:28:57 -04:00
test_root_runtime.py Update tests+examples imports for new subpkgs 2026-04-02 17:59:13 -04:00
test_rpc.py Rename `Arbiter` -> `Registrar`, mv to `discovery._registry` 2026-04-02 17:59:13 -04:00
test_runtime.py Repair lifetime-stack suite's flakiness 2026-03-13 21:10:52 -04:00
test_shm.py Sweep `subint_forkserver` → `main_thread_forkserver` in code 2026-04-27 19:55:37 -04:00
test_spawning.py Sweep `subint_forkserver` → `main_thread_forkserver` in code 2026-04-27 19:55:37 -04:00
test_task_broadcasting.py Tweak timeouts and rm `arbiter_addr` in tests 2026-04-14 19:54:14 -04:00
test_trioisms.py Tweaks from copilot, type fix, typos, language. 2025-09-11 10:01:25 -04:00