diff --git a/scripts/dashboards_render_atlas.py b/scripts/dashboards_render_atlas.py index 4a4c540c..f4d0bf76 100644 --- a/scripts/dashboards_render_atlas.py +++ b/scripts/dashboards_render_atlas.py @@ -1325,25 +1325,29 @@ def testing_suite_variable(): def overview_testing_suite_variable(): - preferred = "lesavka" - options = [ + preferred = "$__all" + options = [{"text": "All", "value": "$__all", "selected": True}] + options.extend( { "text": suite, "value": suite, - "selected": suite == preferred, + "selected": False, } for suite in PLATFORM_TEST_SUITE_NAMES - ] + ) return { "name": "overview_suite", "label": "Testing Suite", "type": "custom", "query": ",".join(f"{suite} : {suite}" for suite in PLATFORM_TEST_SUITE_NAMES), - "current": {"text": preferred, "value": preferred, "selected": True}, + "current": {"text": "All", "value": preferred, "selected": True}, "options": options, - "hide": 0, + # Grafana variables are dashboard-scoped controls; hide this one because only the + # Test Category Pass Rate panel consumes it. + "hide": 2, "multi": False, - "includeAll": False, + "includeAll": True, + "allValue": PLATFORM_TEST_SUITE_CANONICAL_MATCHER, "refresh": 1, "sort": 1, "skipUrlSync": False, @@ -2093,7 +2097,7 @@ def build_overview(): overview_category_pass_rate = ( 'avg by (category) (platform_quality:test_case_pass_rate:percent_1h{' 'suite=~"${overview_suite:regex}",branch!="",branch=~"main|master|origin/main|origin/master",' - f'test!="",test!="__no_test_cases__",category!="",category!~"{PLATFORM_TEST_SUPPORT_CATEGORY_REGEX}"' + f'test!="",test!="__no_test_cases__",category!="",category!~"uncategorized|{PLATFORM_TEST_SUPPORT_CATEGORY_REGEX}"' "})" ) for panel_id, title, draw_expr, runtime_expr, y_pos in [ @@ -2425,23 +2429,21 @@ def build_overview(): ) panels.append(apply_bar_timeseries_style(ariadne_volume, stacked=False)) panels.append( - state_timeline_panel( + bargauge_panel( 46, "Test Category Pass Rate", overview_category_pass_rate, {"h": 6, "w": 6, "x": 15, "y": 13}, unit="percent", - min_value=0, - max_value=100, + instant=True, legend="{{category}}", + sort_order="asc", thresholds=test_success_thresholds, + decimals=1, links=overview_link("atlas-testing"), - description="Pass rate by test category for the selected suite. Blue means clean categories; warmer colors show where attention belongs.", + description="Current pass rate by test category for the selected suite set. Blue is clean; warmer colors show categories needing attention.", ) ) - panels[-1]["options"]["legend"] = {"displayMode": "list", "placement": "bottom"} - panels[-1]["options"]["mergeValues"] = False - panels[-1]["options"]["showValue"] = "auto" for panel_id, title, metric, x_pos, description in [ ( 142, diff --git a/scripts/tests/test_dashboards_render_atlas.py b/scripts/tests/test_dashboards_render_atlas.py index 88916c6e..eb326faf 100644 --- a/scripts/tests/test_dashboards_render_atlas.py +++ b/scripts/tests/test_dashboards_render_atlas.py @@ -72,7 +72,7 @@ def test_overview_uses_readable_quality_power_and_gitops_panels(): ] assert "atlas-jobs" not in repr(dashboard) assert "Platform Test Success Rate" not in panels_by_title - assert panels_by_title["Test Category Pass Rate"]["type"] == "state-timeline" + assert panels_by_title["Test Category Pass Rate"]["type"] == "bargauge" assert panels_by_title["Test Category Pass Rate"]["gridPos"] == {"h": 6, "w": 6, "x": 15, "y": 13} assert panels_by_title["Test Category Pass Rate"]["targets"][0]["legendFormat"] == "{{category}}" assert "${overview_suite:regex}" in panels_by_title["Test Category Pass Rate"]["targets"][0]["expr"] @@ -131,12 +131,17 @@ def test_overview_uses_readable_quality_power_and_gitops_panels(): gitops_expr = panels_by_title["GitOps Health"]["targets"][0]["expr"] assert "Kustomizations Not Suspended" in gitops_expr assert "HelmReleases Not Suspended" in gitops_expr - assert panels_by_title["Test Category Pass Rate"]["options"]["legend"]["displayMode"] == "list" - assert panels_by_title["Test Category Pass Rate"]["options"]["legend"]["placement"] == "bottom" - assert panels_by_title["Test Category Pass Rate"]["options"]["mergeValues"] is False - assert panels_by_title["Test Category Pass Rate"]["options"]["showValue"] == "auto" - assert "rowHeight" not in panels_by_title["Test Category Pass Rate"]["options"] - assert any(variable["name"] == "overview_suite" for variable in dashboard["templating"]["list"]) + assert panels_by_title["Test Category Pass Rate"]["type"] == "bargauge" + assert panels_by_title["Test Category Pass Rate"]["options"]["orientation"] == "horizontal" + assert panels_by_title["Test Category Pass Rate"]["targets"][0]["instant"] is True + assert panels_by_title["Test Category Pass Rate"]["targets"][0]["legendFormat"] == "{{category}}" + assert panels_by_title["Test Category Pass Rate"]["transformations"][0]["id"] == "sortBy" + assert panels_by_title["Test Category Pass Rate"]["transformations"][0]["options"]["order"] == "asc" + overview_suite = next(variable for variable in dashboard["templating"]["list"] if variable["name"] == "overview_suite") + assert overview_suite["current"] == {"text": "All", "value": "$__all", "selected": True} + assert overview_suite["includeAll"] is True + assert overview_suite["allValue"] == mod.PLATFORM_TEST_SUITE_CANONICAL_MATCHER + assert overview_suite["hide"] == 2 pvc_backup_expr = panels_by_title["PVC Backup Health / Age"]["targets"][0]["expr"] assert "backup-telemetry-missing" in pvc_backup_expr diff --git a/services/monitoring/dashboards/atlas-overview.json b/services/monitoring/dashboards/atlas-overview.json index 0dead016..88b2811d 100644 --- a/services/monitoring/dashboards/atlas-overview.json +++ b/services/monitoring/dashboards/atlas-overview.json @@ -2794,9 +2794,8 @@ }, { "id": 46, - "type": "state-timeline", + "type": "bargauge", "title": "Test Category Pass Rate", - "description": "Pass rate by test category for the selected suite. Blue means clean categories; warmer colors show where attention belongs.", "datasource": { "type": "prometheus", "uid": "atlas-vm" @@ -2809,9 +2808,10 @@ }, "targets": [ { - "expr": "avg by (category) (platform_quality:test_case_pass_rate:percent_1h{suite=~\"${overview_suite:regex}\",branch!=\"\",branch=~\"main|master|origin/main|origin/master\",test!=\"\",test!=\"__no_test_cases__\",category!=\"\",category!~\"fixtures|golden|helpers\"})", + "expr": "sort(avg by (category) (platform_quality:test_case_pass_rate:percent_1h{suite=~\"${overview_suite:regex}\",branch!=\"\",branch=~\"main|master|origin/main|origin/master\",test!=\"\",test!=\"__no_test_cases__\",category!=\"\",category!~\"uncategorized|fixtures|golden|helpers\"}))", "refId": "A", - "legendFormat": "{{category}}" + "legendFormat": "{{category}}", + "instant": true } ], "fieldConfig": { @@ -2820,6 +2820,8 @@ "mode": "thresholds" }, "unit": "percent", + "min": 0, + "max": 100, "thresholds": { "mode": "absolute", "steps": [ @@ -2845,26 +2847,19 @@ } ] }, - "custom": { - "fillOpacity": 70, - "lineWidth": 0, - "spanNulls": true - }, - "min": 0, - "max": 100 + "decimals": 1 }, "overrides": [] }, "options": { - "mergeValues": false, - "showValue": "auto", - "legend": { - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" + "displayMode": "basic", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false } }, "links": [ @@ -2873,6 +2868,18 @@ "url": "/d/atlas-testing", "targetBlank": true } + ], + "description": "Current pass rate by test category for the selected suite set. Blue is clean; warmer colors show categories needing attention.", + "transformations": [ + { + "id": "sortBy", + "options": { + "fields": [ + "Value" + ], + "order": "asc" + } + } ] }, { @@ -4490,11 +4497,16 @@ "type": "custom", "query": "ariadne : ariadne,metis : metis,ananke : ananke,atlasbot : atlasbot,lesavka : lesavka,pegasus : pegasus,soteria : soteria,titan_iac : titan_iac,typhon : typhon,bstein_home : bstein_home,data_prepper : data_prepper", "current": { - "text": "lesavka", - "value": "lesavka", + "text": "All", + "value": "$__all", "selected": true }, "options": [ + { + "text": "All", + "value": "$__all", + "selected": true + }, { "text": "ariadne", "value": "ariadne", @@ -4518,7 +4530,7 @@ { "text": "lesavka", "value": "lesavka", - "selected": true + "selected": false }, { "text": "pegasus", @@ -4551,9 +4563,10 @@ "selected": false } ], - "hide": 0, + "hide": 2, "multi": false, - "includeAll": false, + "includeAll": true, + "allValue": "ariadne|metis|ananke|atlasbot|lesavka|pegasus|soteria|titan_iac|typhon|bstein_home|data_prepper", "refresh": 1, "sort": 1, "skipUrlSync": false diff --git a/services/monitoring/grafana-dashboard-overview.yaml b/services/monitoring/grafana-dashboard-overview.yaml index 0c5fa4ce..8b3b1643 100644 --- a/services/monitoring/grafana-dashboard-overview.yaml +++ b/services/monitoring/grafana-dashboard-overview.yaml @@ -2803,9 +2803,8 @@ data: }, { "id": 46, - "type": "state-timeline", + "type": "bargauge", "title": "Test Category Pass Rate", - "description": "Pass rate by test category for the selected suite. Blue means clean categories; warmer colors show where attention belongs.", "datasource": { "type": "prometheus", "uid": "atlas-vm" @@ -2818,9 +2817,10 @@ data: }, "targets": [ { - "expr": "avg by (category) (platform_quality:test_case_pass_rate:percent_1h{suite=~\"${overview_suite:regex}\",branch!=\"\",branch=~\"main|master|origin/main|origin/master\",test!=\"\",test!=\"__no_test_cases__\",category!=\"\",category!~\"fixtures|golden|helpers\"})", + "expr": "sort(avg by (category) (platform_quality:test_case_pass_rate:percent_1h{suite=~\"${overview_suite:regex}\",branch!=\"\",branch=~\"main|master|origin/main|origin/master\",test!=\"\",test!=\"__no_test_cases__\",category!=\"\",category!~\"uncategorized|fixtures|golden|helpers\"}))", "refId": "A", - "legendFormat": "{{category}}" + "legendFormat": "{{category}}", + "instant": true } ], "fieldConfig": { @@ -2829,6 +2829,8 @@ data: "mode": "thresholds" }, "unit": "percent", + "min": 0, + "max": 100, "thresholds": { "mode": "absolute", "steps": [ @@ -2854,26 +2856,19 @@ data: } ] }, - "custom": { - "fillOpacity": 70, - "lineWidth": 0, - "spanNulls": true - }, - "min": 0, - "max": 100 + "decimals": 1 }, "overrides": [] }, "options": { - "mergeValues": false, - "showValue": "auto", - "legend": { - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" + "displayMode": "basic", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false } }, "links": [ @@ -2882,6 +2877,18 @@ data: "url": "/d/atlas-testing", "targetBlank": true } + ], + "description": "Current pass rate by test category for the selected suite set. Blue is clean; warmer colors show categories needing attention.", + "transformations": [ + { + "id": "sortBy", + "options": { + "fields": [ + "Value" + ], + "order": "asc" + } + } ] }, { @@ -4499,11 +4506,16 @@ data: "type": "custom", "query": "ariadne : ariadne,metis : metis,ananke : ananke,atlasbot : atlasbot,lesavka : lesavka,pegasus : pegasus,soteria : soteria,titan_iac : titan_iac,typhon : typhon,bstein_home : bstein_home,data_prepper : data_prepper", "current": { - "text": "lesavka", - "value": "lesavka", + "text": "All", + "value": "$__all", "selected": true }, "options": [ + { + "text": "All", + "value": "$__all", + "selected": true + }, { "text": "ariadne", "value": "ariadne", @@ -4527,7 +4539,7 @@ data: { "text": "lesavka", "value": "lesavka", - "selected": true + "selected": false }, { "text": "pegasus", @@ -4560,9 +4572,10 @@ data: "selected": false } ], - "hide": 0, + "hide": 2, "multi": false, - "includeAll": false, + "includeAll": true, + "allValue": "ariadne|metis|ananke|atlasbot|lesavka|pegasus|soteria|titan_iac|typhon|bstein_home|data_prepper", "refresh": 1, "sort": 1, "skipUrlSync": false