ariadne/tests/test_testing_triage_scope.py
2026-05-20 06:06:07 -03:00

61 lines
2.5 KiB
Python

from __future__ import annotations
from ariadne.services import testing_triage
class SettingsStub:
def __init__(self, **overrides) -> None: # type: ignore[no-untyped-def]
self.vm_url = ""
self.cluster_state_vm_timeout_sec = 1.0
self.jenkins_base_url = ""
self.jenkins_api_user = ""
self.jenkins_api_token = ""
self.jenkins_api_timeout_sec = 1.0
for key, value in overrides.items():
setattr(self, key, value)
def test_jenkins_signals_filters_to_in_scope_suite_jobs(monkeypatch) -> None:
jobs = [
{"job": "lesavka", "status": "running", "last_run_ts": 50},
{"job": "harbor-arm-build", "status": "failure", "last_run_ts": 40},
{"job": "data-prepper", "status": "running", "last_run_ts": 30},
{"job": "folder/ariadne", "status": "failure", "last_run_ts": 20},
{"job": "bstein-dev-home", "status": "unknown", "last_run_ts": 10},
]
attached: list[str] = []
monkeypatch.setattr(testing_triage, "settings", SettingsStub(jenkins_base_url="http://jenkins"))
monkeypatch.setattr(testing_triage, "_fetch_jenkins_jobs", lambda base_url: jobs)
monkeypatch.setattr(testing_triage, "_attach_jenkins_log_tail", lambda job, errors: attached.append(job["job"]))
signals = testing_triage._jenkins_signals([]) # noqa: SLF001
assert [item["job"] for item in signals["failed_builds"]] == [
"data-prepper",
"folder/ariadne",
"bstein-dev-home",
]
assert attached == ["data-prepper", "folder/ariadne", "bstein-dev-home"]
def test_quality_signals_filters_to_in_scope_suites(monkeypatch) -> None:
rows = [
{"labels": {"suite": "ariadne"}, "value": 1.0},
{"labels": {"suite": "lesavka"}, "value": 1.0},
{"labels": {"suite": "typhon"}, "value": 1.0},
{"labels": {"exported_job": "titan-iac"}, "value": 1.0},
{"labels": {"exported_job": "harbor-arm-build"}, "value": 1.0},
{"labels": {}, "value": 1.0},
]
monkeypatch.setattr(testing_triage, "settings", SettingsStub(vm_url="http://vm"))
monkeypatch.setattr(testing_triage, "_vm_items", lambda query, errors: rows)
quality = testing_triage._quality_signals([]) # noqa: SLF001
assert quality["failed_runs_24h"]["items"] == [
{"labels": {"suite": "ariadne"}, "value": 1.0},
{"labels": {"exported_job": "titan-iac"}, "value": 1.0},
{"labels": {}, "value": 1.0},
]
assert testing_triage._failed_suites(quality) == {"ariadne"} # noqa: SLF001