61 lines
2.5 KiB
Python
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
|