File size: 1,225 Bytes
1866d85
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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