| 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 | |