CodexDashBoard / tests /test_processes.py
smlflg's picture
Initial public upload from Projekte/CodexDashBoard
981aa5d verified
Raw History Blame Contribute Delete
1.6 kB
from types import SimpleNamespace
from codex_dashboard.processes import format_uptime, scan_processes
def test_scan_processes_filters_codex_lines():
output = "\n".join(
[
"smlflg 101 0.0 0.1 1000 2048 ? S 10:00 0:00 codex",
"smlflg 102 0.0 0.1 1000 2048 ? S 10:00 0:00 bash",
"smlflg 103 1.5 0.2 1000 4096 pts/1 S 10:00 0:00 node mcp-server",
]
)
processes = scan_processes(ps_output=output)
assert [process.pid for process in processes] == [103, 101]
assert processes[0].name in {"MCP Server", "node/mcp-server"}
def test_scan_processes_reads_proc_metadata_for_live_ps(monkeypatch):
import codex_dashboard.processes as processes_module
output = "smlflg 4242 0.0 0.1 1000 2048 ? S 10:00 0:00 codex"
monkeypatch.setattr(
processes_module.subprocess,
"run",
lambda *_, **__: SimpleNamespace(returncode=0, stdout=output),
)
monkeypatch.setattr(processes_module.os, "getpid", lambda: 9999)
monkeypatch.setattr(processes_module, "_read_cwd", lambda pid: f"/work/{pid}")
monkeypatch.setattr(processes_module, "_read_uptime_seconds", lambda pid, now=None: 25 * 3600)
result = scan_processes()
assert len(result) == 1
assert result[0].pid == 4242
assert result[0].cwd == "/work/4242"
assert result[0].uptime_seconds == 25 * 3600
assert result[0].stale is True
def test_format_uptime():
assert format_uptime(30) == "<1m"
assert format_uptime(600) == "10m"
assert format_uptime(7200) == "2h"
assert format_uptime(172800) == "2d"