Files
hermes-webui/tests/test_issue1458_stability_hardening.py

67 lines
2.1 KiB
Python

"""Regression coverage for issue #1458 persistent-host hardening."""
import json
import urllib.request
from tests._pytest_port import BASE
def _get(path):
with urllib.request.urlopen(BASE + path, timeout=10) as r:
return json.loads(r.read()), r.status
def test_health_exposes_accept_loop_heartbeat():
data, status = _get("/health")
assert status == 200
heartbeat = data.get("accept_loop")
assert isinstance(heartbeat, dict)
assert isinstance(heartbeat.get("requests_total"), int)
assert heartbeat["requests_total"] >= 1
assert isinstance(heartbeat.get("last_request_at"), (int, float))
assert heartbeat["last_request_at"] > 0
def test_deep_health_exercises_session_project_and_sqlite_paths():
data, status = _get("/health?deep=1")
assert status == 200
assert data["status"] == "ok"
checks = data.get("checks")
assert isinstance(checks, dict)
assert checks["streams_lock"]["status"] == "ok"
assert isinstance(checks["streams_lock"].get("active_streams"), int)
assert checks["sessions"]["status"] == "ok"
assert isinstance(checks["sessions"].get("count"), int)
assert checks["projects"]["status"] == "ok"
assert isinstance(checks["projects"].get("count"), int)
# The isolated test home may not have a Hermes state.db yet. Deep health
# should still report the state-db probe explicitly so watchdogs can tell
# whether sqlite was checked or absent.
assert checks["state_db"]["status"] in {"ok", "missing"}
def test_server_raises_fd_soft_limit_when_resource_allows(monkeypatch):
import server
calls = []
class FakeResource:
RLIMIT_NOFILE = object()
@staticmethod
def getrlimit(which):
return (256, 8192)
@staticmethod
def setrlimit(which, limits):
calls.append((which, limits))
monkeypatch.setattr(server, "resource", FakeResource, raising=False)
result = server._raise_fd_soft_limit(target=4096)
assert result["status"] == "raised"
assert result["soft"] == 4096
assert calls == [(FakeResource.RLIMIT_NOFILE, (4096, 8192))]