135 lines
5.0 KiB
Python
135 lines
5.0 KiB
Python
import importlib.util
|
|
import pathlib
|
|
|
|
|
|
def load_module():
|
|
path = pathlib.Path(__file__).resolve().parents[1] / "dashboards_render_atlas.py"
|
|
spec = importlib.util.spec_from_file_location("scripts.dashboards_render_atlas", path)
|
|
module = importlib.util.module_from_spec(spec)
|
|
assert spec.loader is not None
|
|
spec.loader.exec_module(module)
|
|
return module
|
|
|
|
|
|
def flatten_panels(panels):
|
|
flat = []
|
|
for panel in panels:
|
|
flat.append(panel)
|
|
flat.extend(panel.get("panels", []))
|
|
return flat
|
|
|
|
|
|
def test_table_panel_options_and_filterable():
|
|
mod = load_module()
|
|
panel = mod.table_panel(
|
|
1,
|
|
"test",
|
|
"metric",
|
|
{"h": 1, "w": 1, "x": 0, "y": 0},
|
|
unit="percent",
|
|
transformations=[{"id": "labelsToFields", "options": {}}],
|
|
instant=True,
|
|
options={"showColumnFilters": False},
|
|
filterable=False,
|
|
footer={"show": False, "fields": "", "calcs": []},
|
|
format="table",
|
|
)
|
|
assert panel["fieldConfig"]["defaults"]["unit"] == "percent"
|
|
assert panel["fieldConfig"]["defaults"]["custom"]["filterable"] is False
|
|
assert panel["options"]["showHeader"] is True
|
|
assert panel["targets"][0]["format"] == "table"
|
|
|
|
|
|
def test_node_filter_and_expr_helpers():
|
|
mod = load_module()
|
|
expr = mod.node_filter("titan-.*")
|
|
assert "label_replace" in expr
|
|
cpu_expr = mod.node_cpu_expr("titan-.*")
|
|
mem_expr = mod.node_mem_expr("titan-.*")
|
|
assert "node_cpu_seconds_total" in cpu_expr
|
|
assert "node_memory_MemAvailable_bytes" in mem_expr
|
|
|
|
|
|
def test_render_configmap_writes(tmp_path):
|
|
mod = load_module()
|
|
mod.DASHBOARD_DIR = tmp_path / "dash"
|
|
mod.ROOT = tmp_path
|
|
uid = "atlas-test"
|
|
info = {"configmap": tmp_path / "cm.yaml"}
|
|
data = {"title": "Atlas Test"}
|
|
mod.write_json(uid, data)
|
|
mod.render_configmap(uid, info)
|
|
json_path = mod.DASHBOARD_DIR / f"{uid}.json"
|
|
assert json_path.exists()
|
|
content = (tmp_path / "cm.yaml").read_text()
|
|
assert "kind: ConfigMap" in content
|
|
assert f"{uid}.json" in content
|
|
|
|
|
|
def test_testing_suite_variable_uses_canonical_values_only():
|
|
mod = load_module()
|
|
variable = mod.testing_suite_variable()
|
|
canonical_matcher = "|".join(mod.PLATFORM_TEST_SUITE_NAMES)
|
|
legacy_names = {"bstein-home", "data-prepper", "titan-iac", "pegasus-health"}
|
|
|
|
assert variable["allValue"] == canonical_matcher
|
|
assert not any(alias in variable["query"] for alias in legacy_names)
|
|
assert not any(alias in variable["allValue"] for alias in legacy_names)
|
|
assert [option["value"] for option in variable["options"]] == mod.PLATFORM_TEST_SUITE_NAMES
|
|
|
|
|
|
def test_jobs_dashboard_separates_current_gate_health_from_reliability():
|
|
mod = load_module()
|
|
dashboard = mod.build_jobs_dashboard()
|
|
panels_by_title = {panel["title"]: panel for panel in flatten_panels(dashboard["panels"])}
|
|
|
|
assert "Current Gate Health by Suite" in panels_by_title
|
|
assert "Run Reliability by Suite (24h)" in panels_by_title
|
|
assert "Run Reliability History by Suite" in panels_by_title
|
|
assert "Failures by Suite (24h)" not in panels_by_title
|
|
assert "Success Rate by Suite (24h)" not in panels_by_title
|
|
|
|
current_gate_expr = panels_by_title["Current Gate Health by Suite"]["targets"][0]["expr"]
|
|
assert 'check)' in current_gate_expr
|
|
assert 'result=~"ok|passed|success|not_applicable|skipped|na|n/a"' in current_gate_expr
|
|
|
|
reliability_panel = panels_by_title["Run Reliability by Suite (24h)"]
|
|
reliability_expr = reliability_panel["targets"][0]["expr"]
|
|
assert "platform_quality_gate_runs_total" in reliability_expr
|
|
assert "> 0" in reliability_expr
|
|
assert "- 1" in reliability_expr
|
|
assert reliability_panel["fieldConfig"]["defaults"]["mappings"] == [
|
|
{"type": "value", "options": {"-1": {"text": "no runs"}}}
|
|
]
|
|
|
|
|
|
def test_jobs_dashboard_collapses_heavy_drilldowns_for_light_first_paint():
|
|
mod = load_module()
|
|
dashboard = mod.build_jobs_dashboard()
|
|
panels = dashboard["panels"]
|
|
rows = [panel for panel in panels if panel["type"] == "row"]
|
|
visible_query_panels = [panel for panel in panels if panel["type"] != "row"]
|
|
nested_panels_by_title = {
|
|
child["title"]: child
|
|
for row in rows
|
|
for child in row.get("panels", [])
|
|
}
|
|
|
|
assert len(panels) == 16
|
|
assert len(visible_query_panels) == 11
|
|
assert sum(len(panel.get("targets", [])) for panel in visible_query_panels) == 11
|
|
assert [row["title"] for row in rows] == [
|
|
"Reliability And Run History",
|
|
"Failure Trends By Check",
|
|
"Success Trends By Check",
|
|
"Test Drilldowns And Problem Tests",
|
|
"Telemetry Completeness, SonarQube, And Branches",
|
|
]
|
|
assert all(row["collapsed"] for row in rows)
|
|
|
|
assert "Failure Trend: Coverage" in nested_panels_by_title
|
|
assert "Success Trend: Supply Chain" in nested_panels_by_title
|
|
assert "Selected Test Pass Rate History" in nested_panels_by_title
|
|
assert "Missing Coverage Metrics by Suite" in nested_panels_by_title
|
|
assert "SonarQube API Up" in nested_panels_by_title
|