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