from __future__ import annotations import os from pathlib import Path from autocad_bench.orchestration.controller_metrics import controller_metrics def test_controller_metrics_reads_memory_threads_and_worker_counts( tmp_path: Path, ) -> None: proc = tmp_path / "proc" own = proc / str(os.getpid()) own.mkdir(parents=True) (own / "status").write_text("VmRSS:\t1234 kB\nThreads:\t17\n") (proc / "meminfo").write_text( "MemTotal: 32768 kB\n" "MemAvailable: 16384 kB\n" "SwapTotal: 8192 kB\n" "SwapFree: 2048 kB\n" ) tunnel = proc / "101" wrapper = proc / "102" tunnel.mkdir() wrapper.mkdir() (tunnel / "cmdline").write_bytes(b"aws\0AWS-StartPortForwardingSession\0") (wrapper / "cmdline").write_bytes( b"python\0-m\0autocad_bench.sandbox.runner\0" ) metrics = controller_metrics(proc_root=proc) assert metrics["rss_bytes"] == 1234 * 1024 assert metrics["threads"] == 17 assert metrics["host_available_memory_bytes"] == 16384 * 1024 assert metrics["host_swap_used_bytes"] == (8192 - 2048) * 1024 assert metrics["ssm_tunnels"] == 1 assert metrics["legacy_rollout_wrappers"] == 1