Files
awoooi/apps/api/tests/test_diagnostician_degraded_fallback.py
Your Name 0bb4773b9e
Some checks failed
CD Pipeline / tests (push) Successful in 1m26s
Code Review / ai-code-review (push) Successful in 12s
CD Pipeline / build-and-deploy (push) Has been cancelled
CD Pipeline / post-deploy-checks (push) Has been cancelled
fix(aiops): preserve alert identity in degraded diagnosis
2026-06-04 11:32:31 +08:00

74 lines
2.5 KiB
Python

from types import SimpleNamespace
from src.agents.diagnostician_agent import (
_build_degraded_description,
_guess_category_from_snapshot,
)
def test_degraded_fallback_preserves_docker_memory_alertname() -> None:
snapshot = SimpleNamespace(
alert_info={
"alert_name": "DockerContainerMemoryLimitPressure",
"labels": {
"alertname": "DockerContainerMemoryLimitPressure",
"layer": "docker",
"container_name": "gitea",
"host": "110",
},
},
evidence_summary="容器 gitea 記憶體超過 limit 85%",
)
category = _guess_category_from_snapshot(snapshot)
description = _build_degraded_description(snapshot, "step_timeout", category)
assert category == "DockerContainerMemoryLimitPressure"
assert "KubePodOOM" not in description
assert "保留原始告警: DockerContainerMemoryLimitPressure" in description
assert "target=gitea" in description
assert "host=110" in description
def test_degraded_fallback_preserves_gitea_memory_pressure() -> None:
snapshot = SimpleNamespace(
alert_info={
"alert_name": "GiteaMemoryPressure",
"labels": {
"alertname": "GiteaMemoryPressure",
"name": "gitea",
"host": "110",
},
},
evidence_summary="Gitea 記憶體工作集 > 85% limit",
)
assert _guess_category_from_snapshot(snapshot) == "GiteaMemoryPressure"
def test_degraded_fallback_uses_generic_memory_pressure_without_alertname() -> None:
snapshot = SimpleNamespace(
alert_info={"labels": {"layer": "docker", "container_name": "momo-pro-system"}},
evidence_summary="container_name=momo-pro-system layer=docker memory limit pressure",
)
assert _guess_category_from_snapshot(snapshot) == "DockerContainerMemoryPressure"
def test_degraded_fallback_handles_chinese_memory_summary_without_alertname() -> None:
snapshot = SimpleNamespace(
alert_info={"labels": {"layer": "docker", "container_name": "gitea"}},
evidence_summary="gitea 容器記憶體超過 limit 85%",
)
assert _guess_category_from_snapshot(snapshot) == "DockerContainerMemoryPressure"
def test_degraded_fallback_only_uses_kube_oom_for_k8s_oom_context() -> None:
snapshot = SimpleNamespace(
alert_info={"labels": {"pod": "awoooi-api-123"}},
evidence_summary="Kubernetes pod terminated with OOMKilled",
)
assert _guess_category_from_snapshot(snapshot) == "KubePodOOM"