From 23beb08e5ecf2f03cf353c8f5aa918dfc24567cb Mon Sep 17 00:00:00 2001 From: jenkins Date: Wed, 22 Apr 2026 12:42:33 -0300 Subject: [PATCH] monitoring(testing): split quality trend panels --- scripts/dashboards_render_atlas.py | 462 ++--- services/logging/Jenkinsfile.data-prepper | 149 +- .../monitoring/dashboards/atlas-jobs.json | 1502 +++++++---------- .../monitoring/dashboards/atlas-testing.json | 1502 +++++++---------- .../monitoring/grafana-dashboard-jobs.yaml | 1502 +++++++---------- .../monitoring/grafana-dashboard-testing.yaml | 1502 +++++++---------- 6 files changed, 2571 insertions(+), 4048 deletions(-) diff --git a/scripts/dashboards_render_atlas.py b/scripts/dashboards_render_atlas.py index 9f907add..a65b48c5 100644 --- a/scripts/dashboards_render_atlas.py +++ b/scripts/dashboards_render_atlas.py @@ -3088,6 +3088,10 @@ def build_jobs_dashboard(): smell_selector = f'suite=~"{suite_var}",{exported}' test_case_selector = f'suite=~"{suite_var}",branch=~"{branch_var}",test=~"{test_var}",test!="__no_test_cases__",{exported}' build_info_selector = f'suite=~"{suite_var}",branch=~"{branch_var}",{exported}' + selected_suite_universe = ( + f'(sum by (suite) (increase(platform_quality_gate_runs_total{{{runs_selector}}}[30d])) >= bool 0)' + ) + selected_suite_zero = f"(0 * {selected_suite_universe})" suite_universe = " or ".join( f'label_replace(vector(1), "suite", "{suite}", "__name__", ".*")' @@ -3169,7 +3173,7 @@ def build_jobs_dashboard(): core = ( f'sum by (suite) (max_over_time(({{{checks_selector},check=~"{regex}",{state}}})[$__interval]))' ) - return f'({core}) or on(suite) (0 * ({suite_universe}))' + return f'({core}) or on(suite) ({selected_suite_zero})' problematic_tests_history_core = ( f'topk(12, sum by (suite, test, jenkins_job) (increase(platform_quality_gate_test_case_result{{suite=~"{suite_var}",branch=~"{branch_var}",test!="__no_test_cases__",status="failed",{exported}}}[$__interval])))' @@ -3196,6 +3200,10 @@ def build_jobs_dashboard(): "legendFormat": "skipped · {{suite}} · #{{build_number}}", }, ] + selected_test_pass_rate = ( + f'100 * (sum by (suite, test) (max_over_time(platform_quality_gate_test_case_result{{{test_case_selector},status="passed"}}[$__interval]))) ' + f'/ clamp_min((sum by (suite, test) (max_over_time(platform_quality_gate_test_case_result{{{test_case_selector},status=~"passed|failed|error|skipped"}}[$__interval]))), 1)' + ) recent_branch_evidence = ( f'sort_desc(count by (suite, branch) (max_over_time(platform_quality_gate_build_info{{{build_info_selector}}}[30d])))' ) @@ -3222,16 +3230,21 @@ def build_jobs_dashboard(): missing_test_case_by_suite = _missing_suite_series( f"count by (suite) (platform_quality_gate_test_case_result{{{exported}}})" ) + placeholder_test_case_by_suite = _missing_suite_series( + f'count by (suite) (platform_quality_gate_test_case_result{{{exported},test!="__no_test_cases__"}})' + ) success_thresholds = { "mode": "absolute", "steps": [ {"color": "red", "value": None}, - {"color": "orange", "value": 80}, - {"color": "yellow", "value": 95}, - {"color": "green", "value": 99}, + {"color": "orange", "value": 90}, + {"color": "yellow", "value": 93}, + {"color": "green", "value": 95}, + {"color": "blue", "value": 100}, ], } + coverage_thresholds = success_thresholds failures_thresholds = { "mode": "absolute", "steps": [ @@ -3341,101 +3354,12 @@ def build_jobs_dashboard(): ) ) - panels.append( - stat_panel( - 19, - "Failing Tests", - checks_failed_tests, - {"h": 4, "w": 3, "x": 0, "y": 5}, - unit="none", - instant=True, - thresholds=failures_thresholds, - ) - ) - panels.append( - stat_panel( - 20, - "Failing Coverage", - checks_failed_coverage, - {"h": 4, "w": 3, "x": 3, "y": 5}, - unit="none", - instant=True, - thresholds=failures_thresholds, - ) - ) - panels.append( - stat_panel( - 21, - "Failing LOC", - checks_failed_loc, - {"h": 4, "w": 3, "x": 6, "y": 5}, - unit="none", - instant=True, - thresholds=failures_thresholds, - ) - ) - panels.append( - stat_panel( - 22, - "Failing Docs/Naming", - checks_failed_docs, - {"h": 4, "w": 3, "x": 9, "y": 5}, - unit="none", - instant=True, - thresholds=failures_thresholds, - ) - ) - panels.append( - stat_panel( - 23, - "Failing Gate/Glue", - checks_failed_gate, - {"h": 4, "w": 3, "x": 12, "y": 5}, - unit="none", - instant=True, - thresholds=failures_thresholds, - ) - ) - panels.append( - stat_panel( - 24, - "Failing SonarQube", - checks_failed_sonarqube, - {"h": 4, "w": 3, "x": 15, "y": 5}, - unit="none", - instant=True, - thresholds=failures_thresholds, - ) - ) - panels.append( - stat_panel( - 25, - "Failing Supply Chain", - checks_failed_supply_chain, - {"h": 4, "w": 3, "x": 18, "y": 5}, - unit="none", - instant=True, - thresholds=failures_thresholds, - ) - ) - panels.append( - stat_panel( - 26, - "Total Failing Checks", - checks_failed_total, - {"h": 4, "w": 3, "x": 21, "y": 5}, - unit="none", - instant=True, - thresholds=failures_thresholds, - ) - ) - panels.append( bargauge_panel( 8, "Failures by Suite (24h)", failures_by_suite_24h, - {"h": 8, "w": 8, "x": 0, "y": 9}, + {"h": 8, "w": 8, "x": 0, "y": 5}, unit="none", instant=True, legend="{{suite}}", @@ -3447,7 +3371,7 @@ def build_jobs_dashboard(): 9, "Success Rate by Suite (24h)", success_rate_by_suite_24h, - {"h": 8, "w": 8, "x": 8, "y": 9}, + {"h": 8, "w": 8, "x": 8, "y": 5}, unit="percent", instant=True, legend="{{suite}}", @@ -3460,7 +3384,7 @@ def build_jobs_dashboard(): 10, "Coverage Gap to 95% by Suite", coverage_gap, - {"h": 8, "w": 8, "x": 16, "y": 9}, + {"h": 8, "w": 8, "x": 16, "y": 5}, unit="percent", instant=True, legend="{{suite}}", @@ -3475,7 +3399,7 @@ def build_jobs_dashboard(): 11, "Success History by Suite", success_history_by_suite, - {"h": 8, "w": 24, "x": 0, "y": 17}, + {"h": 8, "w": 24, "x": 0, "y": 13}, unit="percent", legend="{{suite}}", legend_display="list", @@ -3499,7 +3423,7 @@ def build_jobs_dashboard(): 12, "Run Outcomes (Selected Scope)", None, - {"h": 8, "w": 8, "x": 0, "y": 25}, + {"h": 8, "w": 8, "x": 0, "y": 21}, unit="none", targets=[ { @@ -3528,7 +3452,7 @@ def build_jobs_dashboard(): 13, "Coverage & LOC History (Selected Scope)", None, - {"h": 8, "w": 8, "x": 8, "y": 25}, + {"h": 8, "w": 8, "x": 8, "y": 21}, unit="none", targets=[ { @@ -3551,213 +3475,66 @@ def build_jobs_dashboard(): 14, "Run Status Mix (30d)", f'sum by (status) (increase(platform_quality_gate_runs_total{{{runs_selector}}}[30d]))', - {"h": 8, "w": 8, "x": 16, "y": 25}, + {"h": 8, "w": 8, "x": 16, "y": 21}, ) run_mix_panel["targets"][0]["legendFormat"] = "{{status}}" run_mix_panel["fieldConfig"]["defaults"]["unit"] = "none" panels.append(run_mix_panel) - panels.append( - timeseries_panel( - 130, - "Fail Trend: Tests", - _check_state_series(check_regex_tests, True), - {"h": 6, "w": 3, "x": 0, "y": 33}, - unit="none", - legend="{{suite}}", - legend_display="list", - legend_placement="bottom", - legend_calcs=["lastNotNull", "max"], - ) - ) - panels.append( - timeseries_panel( - 131, - "Fail Trend: Coverage", - _check_state_series(check_regex_coverage, True), - {"h": 6, "w": 3, "x": 3, "y": 33}, - unit="none", - legend="{{suite}}", - legend_display="list", - legend_placement="bottom", - legend_calcs=["lastNotNull", "max"], - ) - ) - panels.append( - timeseries_panel( - 132, - "Fail Trend: LOC", - _check_state_series(check_regex_loc, True), - {"h": 6, "w": 3, "x": 6, "y": 33}, - unit="none", - legend="{{suite}}", - legend_display="list", - legend_placement="bottom", - legend_calcs=["lastNotNull", "max"], - ) - ) - panels.append( - timeseries_panel( - 133, - "Fail Trend: Style", - _check_state_series(check_regex_style, True), - {"h": 6, "w": 3, "x": 9, "y": 33}, - unit="none", - legend="{{suite}}", - legend_display="list", - legend_placement="bottom", - legend_calcs=["lastNotNull", "max"], - ) - ) - panels.append( - timeseries_panel( - 134, - "Fail Trend: Gate Glue", - _check_state_series(check_regex_gate_glue, True), - {"h": 6, "w": 3, "x": 12, "y": 33}, - unit="none", - legend="{{suite}}", - legend_display="list", - legend_placement="bottom", - legend_calcs=["lastNotNull", "max"], - ) - ) - panels.append( - timeseries_panel( - 135, - "Fail Trend: SonarQube", - _check_state_series(check_regex_sonarqube, True), - {"h": 6, "w": 3, "x": 15, "y": 33}, - unit="none", - legend="{{suite}}", - legend_display="list", - legend_placement="bottom", - legend_calcs=["lastNotNull", "max"], - ) - ) - panels.append( - timeseries_panel( - 136, - "Fail Trend: Supply Chain", - _check_state_series(check_regex_supply_chain, True), - {"h": 6, "w": 3, "x": 18, "y": 33}, - unit="none", - legend="{{suite}}", - legend_display="list", - legend_placement="bottom", - legend_calcs=["lastNotNull", "max"], - ) - ) - panels.append( - timeseries_panel( - 138, - "Pass Trend: Tests", - _check_state_series(check_regex_tests, False), - {"h": 6, "w": 3, "x": 0, "y": 39}, - unit="none", - legend="{{suite}}", - legend_display="list", - legend_placement="bottom", - legend_calcs=["lastNotNull", "max"], - ) - ) - panels.append( - timeseries_panel( - 139, - "Pass Trend: Coverage", - _check_state_series(check_regex_coverage, False), - {"h": 6, "w": 3, "x": 3, "y": 39}, - unit="none", - legend="{{suite}}", - legend_display="list", - legend_placement="bottom", - legend_calcs=["lastNotNull", "max"], - ) - ) - panels.append( - timeseries_panel( - 140, - "Pass Trend: LOC", - _check_state_series(check_regex_loc, False), - {"h": 6, "w": 3, "x": 6, "y": 39}, - unit="none", - legend="{{suite}}", - legend_display="list", - legend_placement="bottom", - legend_calcs=["lastNotNull", "max"], - ) - ) - panels.append( - timeseries_panel( - 141, - "Pass Trend: Style", - _check_state_series(check_regex_style, False), - {"h": 6, "w": 3, "x": 9, "y": 39}, - unit="none", - legend="{{suite}}", - legend_display="list", - legend_placement="bottom", - legend_calcs=["lastNotNull", "max"], - ) - ) - panels.append( - timeseries_panel( - 142, - "Pass Trend: Gate Glue", - _check_state_series(check_regex_gate_glue, False), - {"h": 6, "w": 3, "x": 12, "y": 39}, - unit="none", - legend="{{suite}}", - legend_display="list", - legend_placement="bottom", - legend_calcs=["lastNotNull", "max"], - ) - ) - panels.append( - timeseries_panel( - 143, - "Pass Trend: SonarQube", - _check_state_series(check_regex_sonarqube, False), - {"h": 6, "w": 3, "x": 15, "y": 39}, - unit="none", - legend="{{suite}}", - legend_display="list", - legend_placement="bottom", - legend_calcs=["lastNotNull", "max"], - ) - ) - panels.append( - timeseries_panel( - 144, - "Pass Trend: Supply Chain", - _check_state_series(check_regex_supply_chain, False), - {"h": 6, "w": 3, "x": 18, "y": 39}, - unit="none", - legend="{{suite}}", - legend_display="list", - legend_placement="bottom", - legend_calcs=["lastNotNull", "max"], - ) - ) - panels.append( - bargauge_panel( - 15, - "Latest Test Counters (Suite + Result)", - f'sum by (suite, result) ({{{tests_selector}}})', - {"h": 6, "w": 3, "x": 21, "y": 39}, - unit="none", - instant=True, - legend="{{suite}} · {{result}}", - sort_order="desc", - limit=24, - ) - ) + check_dimensions = [ + ("Tests", check_regex_tests), + ("Coverage", check_regex_coverage), + ("LOC", check_regex_loc), + ("Style", check_regex_style), + ("Gate Glue", check_regex_gate_glue), + ("SonarQube", check_regex_sonarqube), + ("Supply Chain", check_regex_supply_chain), + ] + + def _append_check_trends(start_id: int, title_prefix: str, failed: bool, y: int) -> None: + for index, (label, regex) in enumerate(check_dimensions[:4]): + panel = timeseries_panel( + start_id + index, + f"{title_prefix}: {label}", + _check_state_series(regex, failed), + {"h": 7, "w": 6, "x": index * 6, "y": y}, + unit="none", + legend="{{suite}}", + legend_display="list", + legend_placement="bottom", + legend_calcs=["lastNotNull", "max"], + ) + panel["description"] = ( + "One line per selected suite. 1 means this check dimension was in that state during the bucket; " + "0 means the suite reported the dimension and it was not in that state." + ) + panels.append(panel) + for index, (label, regex) in enumerate(check_dimensions[4:]): + panel = timeseries_panel( + start_id + 4 + index, + f"{title_prefix}: {label}", + _check_state_series(regex, failed), + {"h": 7, "w": 8, "x": index * 8, "y": y + 7}, + unit="none", + legend="{{suite}}", + legend_display="list", + legend_placement="bottom", + legend_calcs=["lastNotNull", "max"], + ) + panel["description"] = ( + "One line per selected suite. 1 means this check dimension was in that state during the bucket; " + "0 means the suite reported the dimension and it was not in that state." + ) + panels.append(panel) + + _append_check_trends(130, "Failure Trend", True, 29) + _append_check_trends(138, "Success Trend", False, 43) panels.append( timeseries_panel( 145, "Problematic Tests Over Time (Top failures)", problematic_tests_history, - {"h": 8, "w": 12, "x": 0, "y": 45}, + {"h": 8, "w": 12, "x": 0, "y": 57}, unit="none", legend="{{suite}} · {{test}}", legend_display="list", @@ -3767,27 +3544,12 @@ def build_jobs_dashboard(): data_links=jenkins_latest_artifact_data_links(), ) ) - panels.append( - timeseries_panel( - 146, - "Selected Test Pass/Fail History", - None, - {"h": 8, "w": 8, "x": 12, "y": 45}, - unit="none", - targets=selected_test_pass_fail, - legend_display="list", - legend_placement="bottom", - legend_calcs=["lastNotNull", "sum"], - links=jenkins_suite_links(), - data_links=jenkins_artifact_data_links(), - ) - ) panels.append( bargauge_panel( 147, "Most Problematic Test by Suite (30d)", worst_test_per_suite, - {"h": 8, "w": 4, "x": 20, "y": 45}, + {"h": 8, "w": 12, "x": 12, "y": 57}, unit="none", instant=True, legend="{{suite}} · {{test}}", @@ -3798,17 +3560,49 @@ def build_jobs_dashboard(): data_links=jenkins_latest_artifact_data_links(), ) ) + panels.append( + timeseries_panel( + 146, + "Selected Test Pass/Fail History", + None, + {"h": 8, "w": 12, "x": 0, "y": 65}, + unit="none", + targets=selected_test_pass_fail, + legend_display="list", + legend_placement="bottom", + legend_calcs=["lastNotNull", "sum"], + links=jenkins_suite_links(), + data_links=jenkins_artifact_data_links(), + ) + ) + selected_pass_rate_panel = timeseries_panel( + 152, + "Selected Test Pass Rate History", + selected_test_pass_rate, + {"h": 8, "w": 12, "x": 12, "y": 65}, + unit="percent", + legend="{{suite}} · {{test}}", + legend_display="list", + legend_placement="bottom", + legend_calcs=["lastNotNull", "min"], + links=jenkins_suite_links(), + data_links=jenkins_artifact_data_links(), + ) + selected_pass_rate_panel["fieldConfig"]["defaults"]["min"] = 0 + selected_pass_rate_panel["fieldConfig"]["defaults"]["max"] = 100 + selected_pass_rate_panel["fieldConfig"]["defaults"]["thresholds"] = success_thresholds + panels.append(selected_pass_rate_panel) coverage_panel = bargauge_panel( 17, "Coverage by Suite (Latest, gate 95)", coverage_with_missing, - {"h": 8, "w": 12, "x": 0, "y": 53}, + {"h": 8, "w": 12, "x": 0, "y": 73}, unit="percent", instant=True, legend="{{suite}}", sort_order="asc", - thresholds=success_thresholds, + thresholds=coverage_thresholds, decimals=2, ) coverage_panel["fieldConfig"]["defaults"]["mappings"] = [ @@ -3820,7 +3614,7 @@ def build_jobs_dashboard(): 18, "Files >500 LOC by Suite (Latest)", smell_with_missing, - {"h": 8, "w": 12, "x": 12, "y": 53}, + {"h": 8, "w": 12, "x": 12, "y": 73}, unit="none", instant=True, legend="{{suite}}", @@ -3837,7 +3631,7 @@ def build_jobs_dashboard(): 27, "Missing Tests Metrics by Suite", missing_tests_by_suite, - {"h": 7, "w": 6, "x": 0, "y": 61}, + {"h": 7, "w": 6, "x": 0, "y": 81}, unit="none", instant=True, legend="{{suite}}", @@ -3851,7 +3645,7 @@ def build_jobs_dashboard(): 28, "Missing Checks Metrics by Suite", missing_checks_by_suite, - {"h": 7, "w": 6, "x": 6, "y": 61}, + {"h": 7, "w": 6, "x": 6, "y": 81}, unit="none", instant=True, legend="{{suite}}", @@ -3865,7 +3659,7 @@ def build_jobs_dashboard(): 29, "Missing Coverage Metrics by Suite", missing_coverage_by_suite, - {"h": 7, "w": 6, "x": 12, "y": 61}, + {"h": 7, "w": 6, "x": 12, "y": 81}, unit="none", instant=True, legend="{{suite}}", @@ -3879,7 +3673,7 @@ def build_jobs_dashboard(): 30, "Missing LOC Metrics by Suite", missing_loc_by_suite, - {"h": 7, "w": 6, "x": 18, "y": 61}, + {"h": 7, "w": 6, "x": 18, "y": 81}, unit="none", instant=True, legend="{{suite}}", @@ -3893,7 +3687,7 @@ def build_jobs_dashboard(): 31, "SonarQube API Up", "(max(sonarqube_up) or on() vector(0))", - {"h": 6, "w": 4, "x": 0, "y": 68}, + {"h": 6, "w": 4, "x": 0, "y": 88}, unit="none", instant=True, thresholds={ @@ -3910,7 +3704,7 @@ def build_jobs_dashboard(): 32, "Sonar Projects (Selected)", f'(count(sonarqube_project_quality_gate_pass{{project_key=~"{suite_var}"}}) or on() vector(0))', - {"h": 6, "w": 4, "x": 4, "y": 68}, + {"h": 6, "w": 4, "x": 4, "y": 88}, unit="none", instant=True, thresholds=failures_thresholds, @@ -3921,7 +3715,7 @@ def build_jobs_dashboard(): 33, "Sonar Gate Fetch Errors", "(max(sonarqube_quality_gate_fetch_errors_total) or on() vector(0))", - {"h": 6, "w": 4, "x": 8, "y": 68}, + {"h": 6, "w": 4, "x": 8, "y": 88}, unit="none", instant=True, thresholds=failures_thresholds, @@ -3931,7 +3725,7 @@ def build_jobs_dashboard(): 34, "Sonar Gate Status Mix (Selected)", f'count by (status) (sonarqube_project_quality_gate_pass{{project_key=~"{suite_var}"}})', - {"h": 6, "w": 6, "x": 12, "y": 68}, + {"h": 6, "w": 6, "x": 12, "y": 88}, ) sonar_status_mix_panel["targets"][0]["legendFormat"] = "{{status}}" panels.append(sonar_status_mix_panel) @@ -3941,7 +3735,7 @@ def build_jobs_dashboard(): "Projects Failing Sonar Gate", f'(sort_desc(count by (project_key) (sonarqube_project_quality_gate_pass{{project_key=~"{suite_var}",status!~"OK|ok"}})) ' f'or on() label_replace(vector(0), "project_key", "none", "__name__", ".*"))', - {"h": 6, "w": 6, "x": 18, "y": 68}, + {"h": 6, "w": 6, "x": 18, "y": 88}, unit="none", instant=True, legend="{{project_key}}", @@ -3954,7 +3748,21 @@ def build_jobs_dashboard(): 148, "Missing Test-Case Metrics by Suite", missing_test_case_by_suite, - {"h": 6, "w": 24, "x": 0, "y": 74}, + {"h": 6, "w": 12, "x": 0, "y": 94}, + unit="none", + instant=True, + legend="{{suite}}", + sort_order="desc", + thresholds=missing_thresholds, + decimals=0, + ) + ) + panels.append( + bargauge_panel( + 151, + "No Real Test Cases by Suite", + placeholder_test_case_by_suite, + {"h": 6, "w": 12, "x": 12, "y": 94}, unit="none", instant=True, legend="{{suite}}", @@ -3968,7 +3776,7 @@ def build_jobs_dashboard(): 149, "Recent Branch Evidence by Suite (30d)", recent_branch_evidence, - {"h": 7, "w": 12, "x": 0, "y": 80}, + {"h": 7, "w": 12, "x": 0, "y": 100}, unit="none", instant=True, legend="{{suite}} · {{branch}}", @@ -3983,7 +3791,7 @@ def build_jobs_dashboard(): 150, "Non-Primary Branch Evidence (30d)", non_primary_branch_evidence, - {"h": 7, "w": 12, "x": 12, "y": 80}, + {"h": 7, "w": 12, "x": 12, "y": 100}, unit="none", instant=True, legend="{{suite}} · {{branch}}", diff --git a/services/logging/Jenkinsfile.data-prepper b/services/logging/Jenkinsfile.data-prepper index ed3ceb39..1e09655d 100644 --- a/services/logging/Jenkinsfile.data-prepper +++ b/services/logging/Jenkinsfile.data-prepper @@ -182,6 +182,56 @@ EOF } } } + stage('Validation tests') { + steps { + container('git') { + sh '''#!/usr/bin/env sh + set -eu + mkdir -p build + failures=0 + cases="" + + add_case() { + name="$1" + message="$2" + if [ -n "${message}" ]; then + failures=$((failures + 1)) + cases="${cases}" + else + cases="${cases}" + fi + } + + if [ -s dockerfiles/Dockerfile.data-prepper ]; then + add_case "dockerfile_present" "" + else + add_case "dockerfile_present" "dockerfiles/Dockerfile.data-prepper is missing or empty" + fi + + if [ -s services/logging/scripts/data_prepper_pipelines.yaml ]; then + add_case "pipeline_config_present" "" + else + add_case "pipeline_config_present" "data_prepper_pipelines.yaml is missing or empty" + fi + + if grep -q 'data-prepper-helmrelease.yaml' services/logging/kustomization.yaml; then + add_case "logging_kustomization_includes_data_prepper" "" + else + add_case "logging_kustomization_includes_data_prepper" "services/logging/kustomization.yaml does not include data-prepper HelmRelease" + fi + + cat > build/junit-data-prepper.xml < +${cases} + +EOF + if [ "${failures}" -ne 0 ]; then + exit 1 + fi + ''' + } + } + } stage('Enforce quality gate') { steps { container('git') { @@ -290,7 +340,7 @@ EOF container('git') { sh ''' set -euo pipefail - apk add --no-cache curl jq >/dev/null 2>&1 || true + apk add --no-cache curl jq python3 >/dev/null 2>&1 || true suite="${SUITE_NAME}" gateway="${PUSHGATEWAY_URL}" status="${QUALITY_OUTCOME:-failed}" @@ -350,16 +400,90 @@ EOF metric_branch="$(printf '%s' "${metric_branch_raw}" | jq -Rsa . | sed -e 's/^"//' -e 's/"$//')" metric_build_number="$(printf '%s' "${BUILD_NUMBER:-unknown}" | jq -Rsa . | sed -e 's/^"//' -e 's/"$//')" metric_jenkins_job="$(printf '%s' "${JOB_NAME:-data-prepper}" | jq -Rsa . | sed -e 's/^"//' -e 's/"$//')" - cat </dev/null || \ - echo "warning: metrics push failed for suite=${suite}" >&2 + export METRIC_SUITE="${suite}" + export METRIC_BRANCH_RAW="${metric_branch_raw}" + export METRIC_BUILD_NUMBER_RAW="${BUILD_NUMBER:-unknown}" + export METRIC_JENKINS_JOB_RAW="${JOB_NAME:-data-prepper}" + python3 - <<'PY' +import glob +import os +import xml.etree.ElementTree as ET +from pathlib import Path + + +def label_value(value: str) -> str: + return value.replace("\\", "\\\\").replace("\n", "\\n").replace('"', '\\"') + + +totals = {"passed": 0, "failed": 0, "error": 0, "skipped": 0} +case_lines = [] +suite = os.environ["METRIC_SUITE"] +branch = os.environ["METRIC_BRANCH_RAW"] +build_number = os.environ["METRIC_BUILD_NUMBER_RAW"] +jenkins_job = os.environ["METRIC_JENKINS_JOB_RAW"] + +for path in glob.glob("build/junit-*.xml"): + try: + root = ET.parse(path).getroot() + except ET.ParseError: + totals["error"] += 1 + continue + for case in root.findall(".//testcase"): + name = case.get("name") or "unnamed" + classname = case.get("classname") or Path(path).stem + test_name = f"{classname}::{name}" if classname else name + status = "passed" + if case.find("error") is not None: + status = "error" + elif case.find("failure") is not None: + status = "failed" + elif case.find("skipped") is not None: + status = "skipped" + totals[status] += 1 + labels = { + "suite": suite, + "branch": branch, + "build_number": build_number, + "jenkins_job": jenkins_job, + "test": test_name, + "status": status, + } + label_blob = ",".join(f'{key}="{label_value(value)}"' for key, value in labels.items()) + case_lines.append(f"platform_quality_gate_test_case_result{{{label_blob}}} 1") + +if not case_lines: + totals["skipped"] += 1 + labels = { + "suite": suite, + "branch": branch, + "build_number": build_number, + "jenkins_job": jenkins_job, + "test": "__no_test_cases__", + "status": "skipped", + } + label_blob = ",".join(f'{key}="{label_value(value)}"' for key, value in labels.items()) + case_lines.append(f"platform_quality_gate_test_case_result{{{label_blob}}} 1") + +Path("build/test-counts.env").write_text( + "\n".join(f"test_{key}_count={value}" for key, value in totals.items()) + "\n", + encoding="utf-8", +) +Path("build/testcase-metrics.prom").write_text("\n".join(case_lines) + "\n", encoding="utf-8") +PY + . build/test-counts.env + tests_check="ok" + if [ "$((test_failed_count + test_error_count))" -gt 0 ]; then + tests_check="failed" + fi + cat > build/platform-quality-metrics.prom <> build/platform-quality-metrics.prom + curl -fsS -X PUT --data-binary @build/platform-quality-metrics.prom "${gateway}/metrics/job/platform-quality-ci/suite/${suite}" >/dev/null || \ + echo "warning: metrics push failed for suite=${suite}" >&2 ''' } + script { + if (fileExists('build/junit-data-prepper.xml')) { + junit allowEmptyResults: true, testResults: 'build/junit-*.xml' + } + } archiveArtifacts artifacts: 'build/**', allowEmptyArchive: true, fingerprint: true } } diff --git a/services/monitoring/dashboards/atlas-jobs.json b/services/monitoring/dashboards/atlas-jobs.json index 88ee7e8b..1a38da09 100644 --- a/services/monitoring/dashboards/atlas-jobs.json +++ b/services/monitoring/dashboards/atlas-jobs.json @@ -40,15 +40,19 @@ }, { "color": "orange", - "value": 80 + "value": 90 }, { "color": "yellow", - "value": 95 + "value": 93 }, { "color": "green", - "value": 99 + "value": 95 + }, + { + "color": "blue", + "value": 100 } ] }, @@ -110,15 +114,19 @@ }, { "color": "orange", - "value": 80 + "value": 90 }, { "color": "yellow", - "value": 95 + "value": 93 }, { "color": "green", - "value": 99 + "value": 95 + }, + { + "color": "blue", + "value": 100 } ] }, @@ -310,15 +318,19 @@ }, { "color": "orange", - "value": 80 + "value": 90 }, { "color": "yellow", - "value": 95 + "value": 93 }, { "color": "green", - "value": 99 + "value": 95 + }, + { + "color": "blue", + "value": 100 } ] }, @@ -417,558 +429,6 @@ "textMode": "value" } }, - { - "id": 19, - "type": "stat", - "title": "Failing Tests", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 0, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 20, - "type": "stat", - "title": "Failing Coverage", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 3, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 21, - "type": "stat", - "title": "Failing LOC", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 6, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 22, - "type": "stat", - "title": "Failing Docs/Naming", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 9, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 23, - "type": "stat", - "title": "Failing Gate/Glue", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 12, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 24, - "type": "stat", - "title": "Failing SonarQube", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 15, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 25, - "type": "stat", - "title": "Failing Supply Chain", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 18, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 26, - "type": "stat", - "title": "Total Failing Checks", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 21, - "y": 5 - }, - "targets": [ - { - "expr": "(sum({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, { "id": 8, "type": "bargauge", @@ -981,7 +441,7 @@ "h": 8, "w": 8, "x": 0, - "y": 9 + "y": 5 }, "targets": [ { @@ -1055,7 +515,7 @@ "h": 8, "w": 8, "x": 8, - "y": 9 + "y": 5 }, "targets": [ { @@ -1079,15 +539,19 @@ }, { "color": "orange", - "value": 80 + "value": 90 }, { "color": "yellow", - "value": 95 + "value": 93 }, { "color": "green", - "value": 99 + "value": 95 + }, + { + "color": "blue", + "value": 100 } ] }, @@ -1130,7 +594,7 @@ "h": 8, "w": 8, "x": 16, - "y": 9 + "y": 5 }, "targets": [ { @@ -1206,7 +670,7 @@ "h": 8, "w": 24, "x": 0, - "y": 17 + "y": 13 }, "targets": [ { @@ -1254,7 +718,7 @@ "h": 8, "w": 8, "x": 0, - "y": 25 + "y": 21 }, "targets": [ { @@ -1305,7 +769,7 @@ "h": 8, "w": 8, "x": 8, - "y": 25 + "y": 21 }, "targets": [ { @@ -1351,7 +815,7 @@ "h": 8, "w": 8, "x": 16, - "y": 25 + "y": 21 }, "targets": [ { @@ -1393,20 +857,20 @@ { "id": 130, "type": "timeseries", - "title": "Fail Trend: Tests", + "title": "Failure Trend: Tests", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, + "h": 7, + "w": 6, "x": 0, - "y": 33 + "y": 29 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1429,25 +893,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 131, "type": "timeseries", - "title": "Fail Trend: Coverage", + "title": "Failure Trend: Coverage", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 3, - "y": 33 + "h": 7, + "w": 6, + "x": 6, + "y": 29 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1470,25 +935,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 132, "type": "timeseries", - "title": "Fail Trend: LOC", + "title": "Failure Trend: LOC", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 6, - "y": 33 + "h": 7, + "w": 6, + "x": 12, + "y": 29 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1511,25 +977,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 133, "type": "timeseries", - "title": "Fail Trend: Style", + "title": "Failure Trend: Style", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 9, - "y": 33 + "h": 7, + "w": 6, + "x": 18, + "y": 29 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1552,25 +1019,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 134, "type": "timeseries", - "title": "Fail Trend: Gate Glue", + "title": "Failure Trend: Gate Glue", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 12, - "y": 33 + "h": 7, + "w": 8, + "x": 0, + "y": 36 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1593,25 +1061,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 135, "type": "timeseries", - "title": "Fail Trend: SonarQube", + "title": "Failure Trend: SonarQube", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 15, - "y": 33 + "h": 7, + "w": 8, + "x": 8, + "y": 36 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1634,25 +1103,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 136, "type": "timeseries", - "title": "Fail Trend: Supply Chain", + "title": "Failure Trend: Supply Chain", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 18, - "y": 33 + "h": 7, + "w": 8, + "x": 16, + "y": 36 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1675,25 +1145,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 138, "type": "timeseries", - "title": "Pass Trend: Tests", + "title": "Success Trend: Tests", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, + "h": 7, + "w": 6, "x": 0, - "y": 39 + "y": 43 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1716,25 +1187,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 139, "type": "timeseries", - "title": "Pass Trend: Coverage", + "title": "Success Trend: Coverage", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 3, - "y": 39 + "h": 7, + "w": 6, + "x": 6, + "y": 43 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1757,25 +1229,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 140, "type": "timeseries", - "title": "Pass Trend: LOC", + "title": "Success Trend: LOC", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 6, - "y": 39 + "h": 7, + "w": 6, + "x": 12, + "y": 43 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1798,25 +1271,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 141, "type": "timeseries", - "title": "Pass Trend: Style", + "title": "Success Trend: Style", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 9, - "y": 39 + "h": 7, + "w": 6, + "x": 18, + "y": 43 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1839,25 +1313,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 142, "type": "timeseries", - "title": "Pass Trend: Gate Glue", + "title": "Success Trend: Gate Glue", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 12, - "y": 39 + "h": 7, + "w": 8, + "x": 0, + "y": 50 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1880,25 +1355,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 143, "type": "timeseries", - "title": "Pass Trend: SonarQube", + "title": "Success Trend: SonarQube", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 15, - "y": 39 + "h": 7, + "w": 8, + "x": 8, + "y": 50 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1921,25 +1397,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 144, "type": "timeseries", - "title": "Pass Trend: Supply Chain", + "title": "Success Trend: Supply Chain", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 18, - "y": 39 + "h": 7, + "w": 8, + "x": 16, + "y": 50 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1962,87 +1439,8 @@ "tooltip": { "mode": "multi" } - } - }, - { - "id": 15, - "type": "bargauge", - "title": "Latest Test Counters (Suite + Result)", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" }, - "gridPos": { - "h": 6, - "w": 3, - "x": 21, - "y": 39 - }, - "targets": [ - { - "expr": "sort_desc(sum by (suite, result) ({__name__=~\".*_quality_gate_tests_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))", - "refId": "A", - "legendFormat": "{{suite}} \u00b7 {{result}}", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "unit": "none", - "min": 0, - "max": null, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 50 - }, - { - "color": "orange", - "value": 70 - }, - { - "color": "red", - "value": 85 - } - ] - } - }, - "overrides": [] - }, - "options": { - "displayMode": "gradient", - "orientation": "horizontal", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - } - }, - "transformations": [ - { - "id": "sortBy", - "options": { - "fields": [ - "Value" - ], - "order": "desc" - } - }, - { - "id": "limit", - "options": { - "limit": 24 - } - } - ] + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 145, @@ -2056,7 +1454,7 @@ "h": 8, "w": 12, "x": 0, - "y": 45 + "y": 57 }, "targets": [ { @@ -2195,166 +1593,6 @@ } ] }, - { - "id": 146, - "type": "timeseries", - "title": "Selected Test Pass/Fail History", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 12, - "y": 45 - }, - "targets": [ - { - "refId": "A", - "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"passed\"}[$__interval])) or on() vector(0)", - "legendFormat": "passed \u00b7 {{suite}} \u00b7 #{{build_number}}" - }, - { - "refId": "B", - "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"failed\"}[$__interval])) or on() vector(0)", - "legendFormat": "failed \u00b7 {{suite}} \u00b7 #{{build_number}}" - }, - { - "refId": "C", - "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"skipped\"}[$__interval])) or on() vector(0)", - "legendFormat": "skipped \u00b7 {{suite}} \u00b7 #{{build_number}}" - } - ], - "fieldConfig": { - "defaults": { - "unit": "none", - "links": [ - { - "title": "Open build artifacts", - "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/artifact/", - "targetBlank": true - }, - { - "title": "Open build", - "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/", - "targetBlank": true - } - ] - }, - "overrides": [] - }, - "options": { - "legend": { - "displayMode": "list", - "placement": "bottom", - "calcs": [ - "lastNotNull", - "sum" - ] - }, - "tooltip": { - "mode": "multi" - } - }, - "links": [ - { - "title": "Open Jenkins", - "url": "${jenkins_base}/", - "targetBlank": true - }, - { - "title": "ariadne: Job", - "url": "${jenkins_base}/job/ariadne/", - "targetBlank": true - }, - { - "title": "ariadne: Last Artifacts", - "url": "${jenkins_base}/job/ariadne/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "metis: Job", - "url": "${jenkins_base}/job/metis/", - "targetBlank": true - }, - { - "title": "metis: Last Artifacts", - "url": "${jenkins_base}/job/metis/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "ananke: Job", - "url": "${jenkins_base}/job/ananke/", - "targetBlank": true - }, - { - "title": "ananke: Last Artifacts", - "url": "${jenkins_base}/job/ananke/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "atlasbot: Job", - "url": "${jenkins_base}/job/atlasbot/", - "targetBlank": true - }, - { - "title": "atlasbot: Last Artifacts", - "url": "${jenkins_base}/job/atlasbot/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "pegasus: Job", - "url": "${jenkins_base}/job/pegasus/", - "targetBlank": true - }, - { - "title": "pegasus: Last Artifacts", - "url": "${jenkins_base}/job/pegasus/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "soteria: Job", - "url": "${jenkins_base}/job/Soteria/", - "targetBlank": true - }, - { - "title": "soteria: Last Artifacts", - "url": "${jenkins_base}/job/Soteria/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "titan_iac: Job", - "url": "${jenkins_base}/job/titan-iac/", - "targetBlank": true - }, - { - "title": "titan_iac: Last Artifacts", - "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "bstein_home: Job", - "url": "${jenkins_base}/job/bstein-dev-home/", - "targetBlank": true - }, - { - "title": "bstein_home: Last Artifacts", - "url": "${jenkins_base}/job/bstein-dev-home/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "data_prepper: Job", - "url": "${jenkins_base}/job/data-prepper/", - "targetBlank": true - }, - { - "title": "data_prepper: Last Artifacts", - "url": "${jenkins_base}/job/data-prepper/lastCompletedBuild/artifact/", - "targetBlank": true - } - ] - }, { "id": 147, "type": "bargauge", @@ -2365,9 +1603,9 @@ }, "gridPos": { "h": 8, - "w": 4, - "x": 20, - "y": 45 + "w": 12, + "x": 12, + "y": 57 }, "targets": [ { @@ -2544,6 +1782,343 @@ } ] }, + { + "id": 146, + "type": "timeseries", + "title": "Selected Test Pass/Fail History", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 65 + }, + "targets": [ + { + "refId": "A", + "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"passed\"}[$__interval])) or on() vector(0)", + "legendFormat": "passed \u00b7 {{suite}} \u00b7 #{{build_number}}" + }, + { + "refId": "B", + "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"failed\"}[$__interval])) or on() vector(0)", + "legendFormat": "failed \u00b7 {{suite}} \u00b7 #{{build_number}}" + }, + { + "refId": "C", + "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"skipped\"}[$__interval])) or on() vector(0)", + "legendFormat": "skipped \u00b7 {{suite}} \u00b7 #{{build_number}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none", + "links": [ + { + "title": "Open build artifacts", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/artifact/", + "targetBlank": true + }, + { + "title": "Open build", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/", + "targetBlank": true + } + ] + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "sum" + ] + }, + "tooltip": { + "mode": "multi" + } + }, + "links": [ + { + "title": "Open Jenkins", + "url": "${jenkins_base}/", + "targetBlank": true + }, + { + "title": "ariadne: Job", + "url": "${jenkins_base}/job/ariadne/", + "targetBlank": true + }, + { + "title": "ariadne: Last Artifacts", + "url": "${jenkins_base}/job/ariadne/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "metis: Job", + "url": "${jenkins_base}/job/metis/", + "targetBlank": true + }, + { + "title": "metis: Last Artifacts", + "url": "${jenkins_base}/job/metis/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "ananke: Job", + "url": "${jenkins_base}/job/ananke/", + "targetBlank": true + }, + { + "title": "ananke: Last Artifacts", + "url": "${jenkins_base}/job/ananke/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "atlasbot: Job", + "url": "${jenkins_base}/job/atlasbot/", + "targetBlank": true + }, + { + "title": "atlasbot: Last Artifacts", + "url": "${jenkins_base}/job/atlasbot/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "pegasus: Job", + "url": "${jenkins_base}/job/pegasus/", + "targetBlank": true + }, + { + "title": "pegasus: Last Artifacts", + "url": "${jenkins_base}/job/pegasus/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "soteria: Job", + "url": "${jenkins_base}/job/Soteria/", + "targetBlank": true + }, + { + "title": "soteria: Last Artifacts", + "url": "${jenkins_base}/job/Soteria/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "titan_iac: Job", + "url": "${jenkins_base}/job/titan-iac/", + "targetBlank": true + }, + { + "title": "titan_iac: Last Artifacts", + "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "bstein_home: Job", + "url": "${jenkins_base}/job/bstein-dev-home/", + "targetBlank": true + }, + { + "title": "bstein_home: Last Artifacts", + "url": "${jenkins_base}/job/bstein-dev-home/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "data_prepper: Job", + "url": "${jenkins_base}/job/data-prepper/", + "targetBlank": true + }, + { + "title": "data_prepper: Last Artifacts", + "url": "${jenkins_base}/job/data-prepper/lastCompletedBuild/artifact/", + "targetBlank": true + } + ] + }, + { + "id": 152, + "type": "timeseries", + "title": "Selected Test Pass Rate History", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 65 + }, + "targets": [ + { + "expr": "100 * (sum by (suite, test) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"passed\"}[$__interval]))) / clamp_min((sum by (suite, test) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=~\"passed|failed|error|skipped\"}[$__interval]))), 1)", + "refId": "A", + "legendFormat": "{{suite}} \u00b7 {{test}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "percent", + "links": [ + { + "title": "Open build artifacts", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/artifact/", + "targetBlank": true + }, + { + "title": "Open build", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/", + "targetBlank": true + } + ], + "min": 0, + "max": 100, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "orange", + "value": 90 + }, + { + "color": "yellow", + "value": 93 + }, + { + "color": "green", + "value": 95 + }, + { + "color": "blue", + "value": 100 + } + ] + } + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "min" + ] + }, + "tooltip": { + "mode": "multi" + } + }, + "links": [ + { + "title": "Open Jenkins", + "url": "${jenkins_base}/", + "targetBlank": true + }, + { + "title": "ariadne: Job", + "url": "${jenkins_base}/job/ariadne/", + "targetBlank": true + }, + { + "title": "ariadne: Last Artifacts", + "url": "${jenkins_base}/job/ariadne/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "metis: Job", + "url": "${jenkins_base}/job/metis/", + "targetBlank": true + }, + { + "title": "metis: Last Artifacts", + "url": "${jenkins_base}/job/metis/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "ananke: Job", + "url": "${jenkins_base}/job/ananke/", + "targetBlank": true + }, + { + "title": "ananke: Last Artifacts", + "url": "${jenkins_base}/job/ananke/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "atlasbot: Job", + "url": "${jenkins_base}/job/atlasbot/", + "targetBlank": true + }, + { + "title": "atlasbot: Last Artifacts", + "url": "${jenkins_base}/job/atlasbot/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "pegasus: Job", + "url": "${jenkins_base}/job/pegasus/", + "targetBlank": true + }, + { + "title": "pegasus: Last Artifacts", + "url": "${jenkins_base}/job/pegasus/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "soteria: Job", + "url": "${jenkins_base}/job/Soteria/", + "targetBlank": true + }, + { + "title": "soteria: Last Artifacts", + "url": "${jenkins_base}/job/Soteria/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "titan_iac: Job", + "url": "${jenkins_base}/job/titan-iac/", + "targetBlank": true + }, + { + "title": "titan_iac: Last Artifacts", + "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "bstein_home: Job", + "url": "${jenkins_base}/job/bstein-dev-home/", + "targetBlank": true + }, + { + "title": "bstein_home: Last Artifacts", + "url": "${jenkins_base}/job/bstein-dev-home/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "data_prepper: Job", + "url": "${jenkins_base}/job/data-prepper/", + "targetBlank": true + }, + { + "title": "data_prepper: Last Artifacts", + "url": "${jenkins_base}/job/data-prepper/lastCompletedBuild/artifact/", + "targetBlank": true + } + ] + }, { "id": 17, "type": "bargauge", @@ -2556,7 +2131,7 @@ "h": 8, "w": 12, "x": 0, - "y": 53 + "y": 73 }, "targets": [ { @@ -2580,15 +2155,19 @@ }, { "color": "orange", - "value": 80 + "value": 90 }, { "color": "yellow", - "value": 95 + "value": 93 }, { "color": "green", - "value": 99 + "value": 95 + }, + { + "color": "blue", + "value": 100 } ] }, @@ -2641,7 +2220,7 @@ "h": 8, "w": 12, "x": 12, - "y": 53 + "y": 73 }, "targets": [ { @@ -2729,7 +2308,7 @@ "h": 7, "w": 6, "x": 0, - "y": 61 + "y": 81 }, "targets": [ { @@ -2796,7 +2375,7 @@ "h": 7, "w": 6, "x": 6, - "y": 61 + "y": 81 }, "targets": [ { @@ -2863,7 +2442,7 @@ "h": 7, "w": 6, "x": 12, - "y": 61 + "y": 81 }, "targets": [ { @@ -2930,7 +2509,7 @@ "h": 7, "w": 6, "x": 18, - "y": 61 + "y": 81 }, "targets": [ { @@ -2997,7 +2576,7 @@ "h": 6, "w": 4, "x": 0, - "y": 68 + "y": 88 }, "targets": [ { @@ -3058,7 +2637,7 @@ "h": 6, "w": 4, "x": 4, - "y": 68 + "y": 88 }, "targets": [ { @@ -3127,7 +2706,7 @@ "h": 6, "w": 4, "x": 8, - "y": 68 + "y": 88 }, "targets": [ { @@ -3196,7 +2775,7 @@ "h": 6, "w": 6, "x": 12, - "y": 68 + "y": 88 }, "targets": [ { @@ -3247,7 +2826,7 @@ "h": 6, "w": 6, "x": 18, - "y": 68 + "y": 88 }, "targets": [ { @@ -3319,9 +2898,9 @@ }, "gridPos": { "h": 6, - "w": 24, + "w": 12, "x": 0, - "y": 74 + "y": 94 }, "targets": [ { @@ -3376,6 +2955,73 @@ } ] }, + { + "id": 151, + "type": "bargauge", + "title": "No Real Test Cases by Suite", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 12, + "y": 94 + }, + "targets": [ + { + "expr": "sort_desc((((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) unless on(suite) count by (suite) (platform_quality_gate_test_case_result{exported_job=\"platform-quality-ci\",test!=\"__no_test_cases__\"}))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "refId": "A", + "legendFormat": "{{suite}}", + "instant": true + } + ], + "fieldConfig": { + "defaults": { + "unit": "none", + "min": 0, + "max": null, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 1 + } + ] + }, + "decimals": 0 + }, + "overrides": [] + }, + "options": { + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + } + }, + "transformations": [ + { + "id": "sortBy", + "options": { + "fields": [ + "Value" + ], + "order": "desc" + } + } + ] + }, { "id": 149, "type": "bargauge", @@ -3388,7 +3034,7 @@ "h": 7, "w": 12, "x": 0, - "y": 80 + "y": 100 }, "targets": [ { @@ -3552,7 +3198,7 @@ "h": 7, "w": 12, "x": 12, - "y": 80 + "y": 100 }, "targets": [ { diff --git a/services/monitoring/dashboards/atlas-testing.json b/services/monitoring/dashboards/atlas-testing.json index 5ee1f94c..8fb5b8ed 100644 --- a/services/monitoring/dashboards/atlas-testing.json +++ b/services/monitoring/dashboards/atlas-testing.json @@ -40,15 +40,19 @@ }, { "color": "orange", - "value": 80 + "value": 90 }, { "color": "yellow", - "value": 95 + "value": 93 }, { "color": "green", - "value": 99 + "value": 95 + }, + { + "color": "blue", + "value": 100 } ] }, @@ -110,15 +114,19 @@ }, { "color": "orange", - "value": 80 + "value": 90 }, { "color": "yellow", - "value": 95 + "value": 93 }, { "color": "green", - "value": 99 + "value": 95 + }, + { + "color": "blue", + "value": 100 } ] }, @@ -310,15 +318,19 @@ }, { "color": "orange", - "value": 80 + "value": 90 }, { "color": "yellow", - "value": 95 + "value": 93 }, { "color": "green", - "value": 99 + "value": 95 + }, + { + "color": "blue", + "value": 100 } ] }, @@ -417,558 +429,6 @@ "textMode": "value" } }, - { - "id": 19, - "type": "stat", - "title": "Failing Tests", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 0, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 20, - "type": "stat", - "title": "Failing Coverage", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 3, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 21, - "type": "stat", - "title": "Failing LOC", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 6, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 22, - "type": "stat", - "title": "Failing Docs/Naming", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 9, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 23, - "type": "stat", - "title": "Failing Gate/Glue", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 12, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 24, - "type": "stat", - "title": "Failing SonarQube", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 15, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 25, - "type": "stat", - "title": "Failing Supply Chain", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 18, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 26, - "type": "stat", - "title": "Total Failing Checks", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 21, - "y": 5 - }, - "targets": [ - { - "expr": "(sum({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, { "id": 8, "type": "bargauge", @@ -981,7 +441,7 @@ "h": 8, "w": 8, "x": 0, - "y": 9 + "y": 5 }, "targets": [ { @@ -1055,7 +515,7 @@ "h": 8, "w": 8, "x": 8, - "y": 9 + "y": 5 }, "targets": [ { @@ -1079,15 +539,19 @@ }, { "color": "orange", - "value": 80 + "value": 90 }, { "color": "yellow", - "value": 95 + "value": 93 }, { "color": "green", - "value": 99 + "value": 95 + }, + { + "color": "blue", + "value": 100 } ] }, @@ -1130,7 +594,7 @@ "h": 8, "w": 8, "x": 16, - "y": 9 + "y": 5 }, "targets": [ { @@ -1206,7 +670,7 @@ "h": 8, "w": 24, "x": 0, - "y": 17 + "y": 13 }, "targets": [ { @@ -1254,7 +718,7 @@ "h": 8, "w": 8, "x": 0, - "y": 25 + "y": 21 }, "targets": [ { @@ -1305,7 +769,7 @@ "h": 8, "w": 8, "x": 8, - "y": 25 + "y": 21 }, "targets": [ { @@ -1351,7 +815,7 @@ "h": 8, "w": 8, "x": 16, - "y": 25 + "y": 21 }, "targets": [ { @@ -1393,20 +857,20 @@ { "id": 130, "type": "timeseries", - "title": "Fail Trend: Tests", + "title": "Failure Trend: Tests", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, + "h": 7, + "w": 6, "x": 0, - "y": 33 + "y": 29 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1429,25 +893,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 131, "type": "timeseries", - "title": "Fail Trend: Coverage", + "title": "Failure Trend: Coverage", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 3, - "y": 33 + "h": 7, + "w": 6, + "x": 6, + "y": 29 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1470,25 +935,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 132, "type": "timeseries", - "title": "Fail Trend: LOC", + "title": "Failure Trend: LOC", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 6, - "y": 33 + "h": 7, + "w": 6, + "x": 12, + "y": 29 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1511,25 +977,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 133, "type": "timeseries", - "title": "Fail Trend: Style", + "title": "Failure Trend: Style", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 9, - "y": 33 + "h": 7, + "w": 6, + "x": 18, + "y": 29 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1552,25 +1019,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 134, "type": "timeseries", - "title": "Fail Trend: Gate Glue", + "title": "Failure Trend: Gate Glue", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 12, - "y": 33 + "h": 7, + "w": 8, + "x": 0, + "y": 36 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1593,25 +1061,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 135, "type": "timeseries", - "title": "Fail Trend: SonarQube", + "title": "Failure Trend: SonarQube", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 15, - "y": 33 + "h": 7, + "w": 8, + "x": 8, + "y": 36 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1634,25 +1103,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 136, "type": "timeseries", - "title": "Fail Trend: Supply Chain", + "title": "Failure Trend: Supply Chain", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 18, - "y": 33 + "h": 7, + "w": 8, + "x": 16, + "y": 36 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1675,25 +1145,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 138, "type": "timeseries", - "title": "Pass Trend: Tests", + "title": "Success Trend: Tests", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, + "h": 7, + "w": 6, "x": 0, - "y": 39 + "y": 43 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1716,25 +1187,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 139, "type": "timeseries", - "title": "Pass Trend: Coverage", + "title": "Success Trend: Coverage", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 3, - "y": 39 + "h": 7, + "w": 6, + "x": 6, + "y": 43 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1757,25 +1229,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 140, "type": "timeseries", - "title": "Pass Trend: LOC", + "title": "Success Trend: LOC", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 6, - "y": 39 + "h": 7, + "w": 6, + "x": 12, + "y": 43 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1798,25 +1271,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 141, "type": "timeseries", - "title": "Pass Trend: Style", + "title": "Success Trend: Style", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 9, - "y": 39 + "h": 7, + "w": 6, + "x": 18, + "y": 43 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1839,25 +1313,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 142, "type": "timeseries", - "title": "Pass Trend: Gate Glue", + "title": "Success Trend: Gate Glue", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 12, - "y": 39 + "h": 7, + "w": 8, + "x": 0, + "y": 50 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1880,25 +1355,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 143, "type": "timeseries", - "title": "Pass Trend: SonarQube", + "title": "Success Trend: SonarQube", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 15, - "y": 39 + "h": 7, + "w": 8, + "x": 8, + "y": 50 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1921,25 +1397,26 @@ "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 144, "type": "timeseries", - "title": "Pass Trend: Supply Chain", + "title": "Success Trend: Supply Chain", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 18, - "y": 39 + "h": 7, + "w": 8, + "x": 16, + "y": 50 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1962,87 +1439,8 @@ "tooltip": { "mode": "multi" } - } - }, - { - "id": 15, - "type": "bargauge", - "title": "Latest Test Counters (Suite + Result)", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" }, - "gridPos": { - "h": 6, - "w": 3, - "x": 21, - "y": 39 - }, - "targets": [ - { - "expr": "sort_desc(sum by (suite, result) ({__name__=~\".*_quality_gate_tests_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))", - "refId": "A", - "legendFormat": "{{suite}} \u00b7 {{result}}", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "unit": "none", - "min": 0, - "max": null, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 50 - }, - { - "color": "orange", - "value": 70 - }, - { - "color": "red", - "value": 85 - } - ] - } - }, - "overrides": [] - }, - "options": { - "displayMode": "gradient", - "orientation": "horizontal", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - } - }, - "transformations": [ - { - "id": "sortBy", - "options": { - "fields": [ - "Value" - ], - "order": "desc" - } - }, - { - "id": "limit", - "options": { - "limit": 24 - } - } - ] + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 145, @@ -2056,7 +1454,7 @@ "h": 8, "w": 12, "x": 0, - "y": 45 + "y": 57 }, "targets": [ { @@ -2195,166 +1593,6 @@ } ] }, - { - "id": 146, - "type": "timeseries", - "title": "Selected Test Pass/Fail History", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 12, - "y": 45 - }, - "targets": [ - { - "refId": "A", - "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"passed\"}[$__interval])) or on() vector(0)", - "legendFormat": "passed \u00b7 {{suite}} \u00b7 #{{build_number}}" - }, - { - "refId": "B", - "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"failed\"}[$__interval])) or on() vector(0)", - "legendFormat": "failed \u00b7 {{suite}} \u00b7 #{{build_number}}" - }, - { - "refId": "C", - "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"skipped\"}[$__interval])) or on() vector(0)", - "legendFormat": "skipped \u00b7 {{suite}} \u00b7 #{{build_number}}" - } - ], - "fieldConfig": { - "defaults": { - "unit": "none", - "links": [ - { - "title": "Open build artifacts", - "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/artifact/", - "targetBlank": true - }, - { - "title": "Open build", - "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/", - "targetBlank": true - } - ] - }, - "overrides": [] - }, - "options": { - "legend": { - "displayMode": "list", - "placement": "bottom", - "calcs": [ - "lastNotNull", - "sum" - ] - }, - "tooltip": { - "mode": "multi" - } - }, - "links": [ - { - "title": "Open Jenkins", - "url": "${jenkins_base}/", - "targetBlank": true - }, - { - "title": "ariadne: Job", - "url": "${jenkins_base}/job/ariadne/", - "targetBlank": true - }, - { - "title": "ariadne: Last Artifacts", - "url": "${jenkins_base}/job/ariadne/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "metis: Job", - "url": "${jenkins_base}/job/metis/", - "targetBlank": true - }, - { - "title": "metis: Last Artifacts", - "url": "${jenkins_base}/job/metis/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "ananke: Job", - "url": "${jenkins_base}/job/ananke/", - "targetBlank": true - }, - { - "title": "ananke: Last Artifacts", - "url": "${jenkins_base}/job/ananke/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "atlasbot: Job", - "url": "${jenkins_base}/job/atlasbot/", - "targetBlank": true - }, - { - "title": "atlasbot: Last Artifacts", - "url": "${jenkins_base}/job/atlasbot/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "pegasus: Job", - "url": "${jenkins_base}/job/pegasus/", - "targetBlank": true - }, - { - "title": "pegasus: Last Artifacts", - "url": "${jenkins_base}/job/pegasus/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "soteria: Job", - "url": "${jenkins_base}/job/Soteria/", - "targetBlank": true - }, - { - "title": "soteria: Last Artifacts", - "url": "${jenkins_base}/job/Soteria/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "titan_iac: Job", - "url": "${jenkins_base}/job/titan-iac/", - "targetBlank": true - }, - { - "title": "titan_iac: Last Artifacts", - "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "bstein_home: Job", - "url": "${jenkins_base}/job/bstein-dev-home/", - "targetBlank": true - }, - { - "title": "bstein_home: Last Artifacts", - "url": "${jenkins_base}/job/bstein-dev-home/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "data_prepper: Job", - "url": "${jenkins_base}/job/data-prepper/", - "targetBlank": true - }, - { - "title": "data_prepper: Last Artifacts", - "url": "${jenkins_base}/job/data-prepper/lastCompletedBuild/artifact/", - "targetBlank": true - } - ] - }, { "id": 147, "type": "bargauge", @@ -2365,9 +1603,9 @@ }, "gridPos": { "h": 8, - "w": 4, - "x": 20, - "y": 45 + "w": 12, + "x": 12, + "y": 57 }, "targets": [ { @@ -2544,6 +1782,343 @@ } ] }, + { + "id": 146, + "type": "timeseries", + "title": "Selected Test Pass/Fail History", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 65 + }, + "targets": [ + { + "refId": "A", + "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"passed\"}[$__interval])) or on() vector(0)", + "legendFormat": "passed \u00b7 {{suite}} \u00b7 #{{build_number}}" + }, + { + "refId": "B", + "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"failed\"}[$__interval])) or on() vector(0)", + "legendFormat": "failed \u00b7 {{suite}} \u00b7 #{{build_number}}" + }, + { + "refId": "C", + "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"skipped\"}[$__interval])) or on() vector(0)", + "legendFormat": "skipped \u00b7 {{suite}} \u00b7 #{{build_number}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none", + "links": [ + { + "title": "Open build artifacts", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/artifact/", + "targetBlank": true + }, + { + "title": "Open build", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/", + "targetBlank": true + } + ] + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "sum" + ] + }, + "tooltip": { + "mode": "multi" + } + }, + "links": [ + { + "title": "Open Jenkins", + "url": "${jenkins_base}/", + "targetBlank": true + }, + { + "title": "ariadne: Job", + "url": "${jenkins_base}/job/ariadne/", + "targetBlank": true + }, + { + "title": "ariadne: Last Artifacts", + "url": "${jenkins_base}/job/ariadne/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "metis: Job", + "url": "${jenkins_base}/job/metis/", + "targetBlank": true + }, + { + "title": "metis: Last Artifacts", + "url": "${jenkins_base}/job/metis/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "ananke: Job", + "url": "${jenkins_base}/job/ananke/", + "targetBlank": true + }, + { + "title": "ananke: Last Artifacts", + "url": "${jenkins_base}/job/ananke/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "atlasbot: Job", + "url": "${jenkins_base}/job/atlasbot/", + "targetBlank": true + }, + { + "title": "atlasbot: Last Artifacts", + "url": "${jenkins_base}/job/atlasbot/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "pegasus: Job", + "url": "${jenkins_base}/job/pegasus/", + "targetBlank": true + }, + { + "title": "pegasus: Last Artifacts", + "url": "${jenkins_base}/job/pegasus/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "soteria: Job", + "url": "${jenkins_base}/job/Soteria/", + "targetBlank": true + }, + { + "title": "soteria: Last Artifacts", + "url": "${jenkins_base}/job/Soteria/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "titan_iac: Job", + "url": "${jenkins_base}/job/titan-iac/", + "targetBlank": true + }, + { + "title": "titan_iac: Last Artifacts", + "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "bstein_home: Job", + "url": "${jenkins_base}/job/bstein-dev-home/", + "targetBlank": true + }, + { + "title": "bstein_home: Last Artifacts", + "url": "${jenkins_base}/job/bstein-dev-home/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "data_prepper: Job", + "url": "${jenkins_base}/job/data-prepper/", + "targetBlank": true + }, + { + "title": "data_prepper: Last Artifacts", + "url": "${jenkins_base}/job/data-prepper/lastCompletedBuild/artifact/", + "targetBlank": true + } + ] + }, + { + "id": 152, + "type": "timeseries", + "title": "Selected Test Pass Rate History", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 65 + }, + "targets": [ + { + "expr": "100 * (sum by (suite, test) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"passed\"}[$__interval]))) / clamp_min((sum by (suite, test) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=~\"passed|failed|error|skipped\"}[$__interval]))), 1)", + "refId": "A", + "legendFormat": "{{suite}} \u00b7 {{test}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "percent", + "links": [ + { + "title": "Open build artifacts", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/artifact/", + "targetBlank": true + }, + { + "title": "Open build", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/", + "targetBlank": true + } + ], + "min": 0, + "max": 100, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "orange", + "value": 90 + }, + { + "color": "yellow", + "value": 93 + }, + { + "color": "green", + "value": 95 + }, + { + "color": "blue", + "value": 100 + } + ] + } + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "min" + ] + }, + "tooltip": { + "mode": "multi" + } + }, + "links": [ + { + "title": "Open Jenkins", + "url": "${jenkins_base}/", + "targetBlank": true + }, + { + "title": "ariadne: Job", + "url": "${jenkins_base}/job/ariadne/", + "targetBlank": true + }, + { + "title": "ariadne: Last Artifacts", + "url": "${jenkins_base}/job/ariadne/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "metis: Job", + "url": "${jenkins_base}/job/metis/", + "targetBlank": true + }, + { + "title": "metis: Last Artifacts", + "url": "${jenkins_base}/job/metis/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "ananke: Job", + "url": "${jenkins_base}/job/ananke/", + "targetBlank": true + }, + { + "title": "ananke: Last Artifacts", + "url": "${jenkins_base}/job/ananke/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "atlasbot: Job", + "url": "${jenkins_base}/job/atlasbot/", + "targetBlank": true + }, + { + "title": "atlasbot: Last Artifacts", + "url": "${jenkins_base}/job/atlasbot/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "pegasus: Job", + "url": "${jenkins_base}/job/pegasus/", + "targetBlank": true + }, + { + "title": "pegasus: Last Artifacts", + "url": "${jenkins_base}/job/pegasus/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "soteria: Job", + "url": "${jenkins_base}/job/Soteria/", + "targetBlank": true + }, + { + "title": "soteria: Last Artifacts", + "url": "${jenkins_base}/job/Soteria/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "titan_iac: Job", + "url": "${jenkins_base}/job/titan-iac/", + "targetBlank": true + }, + { + "title": "titan_iac: Last Artifacts", + "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "bstein_home: Job", + "url": "${jenkins_base}/job/bstein-dev-home/", + "targetBlank": true + }, + { + "title": "bstein_home: Last Artifacts", + "url": "${jenkins_base}/job/bstein-dev-home/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "data_prepper: Job", + "url": "${jenkins_base}/job/data-prepper/", + "targetBlank": true + }, + { + "title": "data_prepper: Last Artifacts", + "url": "${jenkins_base}/job/data-prepper/lastCompletedBuild/artifact/", + "targetBlank": true + } + ] + }, { "id": 17, "type": "bargauge", @@ -2556,7 +2131,7 @@ "h": 8, "w": 12, "x": 0, - "y": 53 + "y": 73 }, "targets": [ { @@ -2580,15 +2155,19 @@ }, { "color": "orange", - "value": 80 + "value": 90 }, { "color": "yellow", - "value": 95 + "value": 93 }, { "color": "green", - "value": 99 + "value": 95 + }, + { + "color": "blue", + "value": 100 } ] }, @@ -2641,7 +2220,7 @@ "h": 8, "w": 12, "x": 12, - "y": 53 + "y": 73 }, "targets": [ { @@ -2729,7 +2308,7 @@ "h": 7, "w": 6, "x": 0, - "y": 61 + "y": 81 }, "targets": [ { @@ -2796,7 +2375,7 @@ "h": 7, "w": 6, "x": 6, - "y": 61 + "y": 81 }, "targets": [ { @@ -2863,7 +2442,7 @@ "h": 7, "w": 6, "x": 12, - "y": 61 + "y": 81 }, "targets": [ { @@ -2930,7 +2509,7 @@ "h": 7, "w": 6, "x": 18, - "y": 61 + "y": 81 }, "targets": [ { @@ -2997,7 +2576,7 @@ "h": 6, "w": 4, "x": 0, - "y": 68 + "y": 88 }, "targets": [ { @@ -3058,7 +2637,7 @@ "h": 6, "w": 4, "x": 4, - "y": 68 + "y": 88 }, "targets": [ { @@ -3127,7 +2706,7 @@ "h": 6, "w": 4, "x": 8, - "y": 68 + "y": 88 }, "targets": [ { @@ -3196,7 +2775,7 @@ "h": 6, "w": 6, "x": 12, - "y": 68 + "y": 88 }, "targets": [ { @@ -3247,7 +2826,7 @@ "h": 6, "w": 6, "x": 18, - "y": 68 + "y": 88 }, "targets": [ { @@ -3319,9 +2898,9 @@ }, "gridPos": { "h": 6, - "w": 24, + "w": 12, "x": 0, - "y": 74 + "y": 94 }, "targets": [ { @@ -3376,6 +2955,73 @@ } ] }, + { + "id": 151, + "type": "bargauge", + "title": "No Real Test Cases by Suite", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 12, + "y": 94 + }, + "targets": [ + { + "expr": "sort_desc((((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) unless on(suite) count by (suite) (platform_quality_gate_test_case_result{exported_job=\"platform-quality-ci\",test!=\"__no_test_cases__\"}))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "refId": "A", + "legendFormat": "{{suite}}", + "instant": true + } + ], + "fieldConfig": { + "defaults": { + "unit": "none", + "min": 0, + "max": null, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 1 + } + ] + }, + "decimals": 0 + }, + "overrides": [] + }, + "options": { + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + } + }, + "transformations": [ + { + "id": "sortBy", + "options": { + "fields": [ + "Value" + ], + "order": "desc" + } + } + ] + }, { "id": 149, "type": "bargauge", @@ -3388,7 +3034,7 @@ "h": 7, "w": 12, "x": 0, - "y": 80 + "y": 100 }, "targets": [ { @@ -3552,7 +3198,7 @@ "h": 7, "w": 12, "x": 12, - "y": 80 + "y": 100 }, "targets": [ { diff --git a/services/monitoring/grafana-dashboard-jobs.yaml b/services/monitoring/grafana-dashboard-jobs.yaml index d2d62d39..135d992f 100644 --- a/services/monitoring/grafana-dashboard-jobs.yaml +++ b/services/monitoring/grafana-dashboard-jobs.yaml @@ -49,15 +49,19 @@ data: }, { "color": "orange", - "value": 80 + "value": 90 }, { "color": "yellow", - "value": 95 + "value": 93 }, { "color": "green", - "value": 99 + "value": 95 + }, + { + "color": "blue", + "value": 100 } ] }, @@ -119,15 +123,19 @@ data: }, { "color": "orange", - "value": 80 + "value": 90 }, { "color": "yellow", - "value": 95 + "value": 93 }, { "color": "green", - "value": 99 + "value": 95 + }, + { + "color": "blue", + "value": 100 } ] }, @@ -319,15 +327,19 @@ data: }, { "color": "orange", - "value": 80 + "value": 90 }, { "color": "yellow", - "value": 95 + "value": 93 }, { "color": "green", - "value": 99 + "value": 95 + }, + { + "color": "blue", + "value": 100 } ] }, @@ -426,558 +438,6 @@ data: "textMode": "value" } }, - { - "id": 19, - "type": "stat", - "title": "Failing Tests", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 0, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 20, - "type": "stat", - "title": "Failing Coverage", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 3, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 21, - "type": "stat", - "title": "Failing LOC", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 6, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 22, - "type": "stat", - "title": "Failing Docs/Naming", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 9, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 23, - "type": "stat", - "title": "Failing Gate/Glue", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 12, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 24, - "type": "stat", - "title": "Failing SonarQube", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 15, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 25, - "type": "stat", - "title": "Failing Supply Chain", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 18, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 26, - "type": "stat", - "title": "Total Failing Checks", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 21, - "y": 5 - }, - "targets": [ - { - "expr": "(sum({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, { "id": 8, "type": "bargauge", @@ -990,7 +450,7 @@ data: "h": 8, "w": 8, "x": 0, - "y": 9 + "y": 5 }, "targets": [ { @@ -1064,7 +524,7 @@ data: "h": 8, "w": 8, "x": 8, - "y": 9 + "y": 5 }, "targets": [ { @@ -1088,15 +548,19 @@ data: }, { "color": "orange", - "value": 80 + "value": 90 }, { "color": "yellow", - "value": 95 + "value": 93 }, { "color": "green", - "value": 99 + "value": 95 + }, + { + "color": "blue", + "value": 100 } ] }, @@ -1139,7 +603,7 @@ data: "h": 8, "w": 8, "x": 16, - "y": 9 + "y": 5 }, "targets": [ { @@ -1215,7 +679,7 @@ data: "h": 8, "w": 24, "x": 0, - "y": 17 + "y": 13 }, "targets": [ { @@ -1263,7 +727,7 @@ data: "h": 8, "w": 8, "x": 0, - "y": 25 + "y": 21 }, "targets": [ { @@ -1314,7 +778,7 @@ data: "h": 8, "w": 8, "x": 8, - "y": 25 + "y": 21 }, "targets": [ { @@ -1360,7 +824,7 @@ data: "h": 8, "w": 8, "x": 16, - "y": 25 + "y": 21 }, "targets": [ { @@ -1402,20 +866,20 @@ data: { "id": 130, "type": "timeseries", - "title": "Fail Trend: Tests", + "title": "Failure Trend: Tests", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, + "h": 7, + "w": 6, "x": 0, - "y": 33 + "y": 29 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1438,25 +902,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 131, "type": "timeseries", - "title": "Fail Trend: Coverage", + "title": "Failure Trend: Coverage", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 3, - "y": 33 + "h": 7, + "w": 6, + "x": 6, + "y": 29 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1479,25 +944,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 132, "type": "timeseries", - "title": "Fail Trend: LOC", + "title": "Failure Trend: LOC", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 6, - "y": 33 + "h": 7, + "w": 6, + "x": 12, + "y": 29 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1520,25 +986,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 133, "type": "timeseries", - "title": "Fail Trend: Style", + "title": "Failure Trend: Style", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 9, - "y": 33 + "h": 7, + "w": 6, + "x": 18, + "y": 29 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1561,25 +1028,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 134, "type": "timeseries", - "title": "Fail Trend: Gate Glue", + "title": "Failure Trend: Gate Glue", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 12, - "y": 33 + "h": 7, + "w": 8, + "x": 0, + "y": 36 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1602,25 +1070,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 135, "type": "timeseries", - "title": "Fail Trend: SonarQube", + "title": "Failure Trend: SonarQube", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 15, - "y": 33 + "h": 7, + "w": 8, + "x": 8, + "y": 36 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1643,25 +1112,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 136, "type": "timeseries", - "title": "Fail Trend: Supply Chain", + "title": "Failure Trend: Supply Chain", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 18, - "y": 33 + "h": 7, + "w": 8, + "x": 16, + "y": 36 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1684,25 +1154,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 138, "type": "timeseries", - "title": "Pass Trend: Tests", + "title": "Success Trend: Tests", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, + "h": 7, + "w": 6, "x": 0, - "y": 39 + "y": 43 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1725,25 +1196,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 139, "type": "timeseries", - "title": "Pass Trend: Coverage", + "title": "Success Trend: Coverage", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 3, - "y": 39 + "h": 7, + "w": 6, + "x": 6, + "y": 43 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1766,25 +1238,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 140, "type": "timeseries", - "title": "Pass Trend: LOC", + "title": "Success Trend: LOC", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 6, - "y": 39 + "h": 7, + "w": 6, + "x": 12, + "y": 43 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1807,25 +1280,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 141, "type": "timeseries", - "title": "Pass Trend: Style", + "title": "Success Trend: Style", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 9, - "y": 39 + "h": 7, + "w": 6, + "x": 18, + "y": 43 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1848,25 +1322,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 142, "type": "timeseries", - "title": "Pass Trend: Gate Glue", + "title": "Success Trend: Gate Glue", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 12, - "y": 39 + "h": 7, + "w": 8, + "x": 0, + "y": 50 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1889,25 +1364,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 143, "type": "timeseries", - "title": "Pass Trend: SonarQube", + "title": "Success Trend: SonarQube", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 15, - "y": 39 + "h": 7, + "w": 8, + "x": 8, + "y": 50 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1930,25 +1406,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 144, "type": "timeseries", - "title": "Pass Trend: Supply Chain", + "title": "Success Trend: Supply Chain", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 18, - "y": 39 + "h": 7, + "w": 8, + "x": 16, + "y": 50 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1971,87 +1448,8 @@ data: "tooltip": { "mode": "multi" } - } - }, - { - "id": 15, - "type": "bargauge", - "title": "Latest Test Counters (Suite + Result)", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" }, - "gridPos": { - "h": 6, - "w": 3, - "x": 21, - "y": 39 - }, - "targets": [ - { - "expr": "sort_desc(sum by (suite, result) ({__name__=~\".*_quality_gate_tests_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))", - "refId": "A", - "legendFormat": "{{suite}} \u00b7 {{result}}", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "unit": "none", - "min": 0, - "max": null, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 50 - }, - { - "color": "orange", - "value": 70 - }, - { - "color": "red", - "value": 85 - } - ] - } - }, - "overrides": [] - }, - "options": { - "displayMode": "gradient", - "orientation": "horizontal", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - } - }, - "transformations": [ - { - "id": "sortBy", - "options": { - "fields": [ - "Value" - ], - "order": "desc" - } - }, - { - "id": "limit", - "options": { - "limit": 24 - } - } - ] + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 145, @@ -2065,7 +1463,7 @@ data: "h": 8, "w": 12, "x": 0, - "y": 45 + "y": 57 }, "targets": [ { @@ -2204,166 +1602,6 @@ data: } ] }, - { - "id": 146, - "type": "timeseries", - "title": "Selected Test Pass/Fail History", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 12, - "y": 45 - }, - "targets": [ - { - "refId": "A", - "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"passed\"}[$__interval])) or on() vector(0)", - "legendFormat": "passed \u00b7 {{suite}} \u00b7 #{{build_number}}" - }, - { - "refId": "B", - "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"failed\"}[$__interval])) or on() vector(0)", - "legendFormat": "failed \u00b7 {{suite}} \u00b7 #{{build_number}}" - }, - { - "refId": "C", - "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"skipped\"}[$__interval])) or on() vector(0)", - "legendFormat": "skipped \u00b7 {{suite}} \u00b7 #{{build_number}}" - } - ], - "fieldConfig": { - "defaults": { - "unit": "none", - "links": [ - { - "title": "Open build artifacts", - "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/artifact/", - "targetBlank": true - }, - { - "title": "Open build", - "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/", - "targetBlank": true - } - ] - }, - "overrides": [] - }, - "options": { - "legend": { - "displayMode": "list", - "placement": "bottom", - "calcs": [ - "lastNotNull", - "sum" - ] - }, - "tooltip": { - "mode": "multi" - } - }, - "links": [ - { - "title": "Open Jenkins", - "url": "${jenkins_base}/", - "targetBlank": true - }, - { - "title": "ariadne: Job", - "url": "${jenkins_base}/job/ariadne/", - "targetBlank": true - }, - { - "title": "ariadne: Last Artifacts", - "url": "${jenkins_base}/job/ariadne/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "metis: Job", - "url": "${jenkins_base}/job/metis/", - "targetBlank": true - }, - { - "title": "metis: Last Artifacts", - "url": "${jenkins_base}/job/metis/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "ananke: Job", - "url": "${jenkins_base}/job/ananke/", - "targetBlank": true - }, - { - "title": "ananke: Last Artifacts", - "url": "${jenkins_base}/job/ananke/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "atlasbot: Job", - "url": "${jenkins_base}/job/atlasbot/", - "targetBlank": true - }, - { - "title": "atlasbot: Last Artifacts", - "url": "${jenkins_base}/job/atlasbot/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "pegasus: Job", - "url": "${jenkins_base}/job/pegasus/", - "targetBlank": true - }, - { - "title": "pegasus: Last Artifacts", - "url": "${jenkins_base}/job/pegasus/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "soteria: Job", - "url": "${jenkins_base}/job/Soteria/", - "targetBlank": true - }, - { - "title": "soteria: Last Artifacts", - "url": "${jenkins_base}/job/Soteria/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "titan_iac: Job", - "url": "${jenkins_base}/job/titan-iac/", - "targetBlank": true - }, - { - "title": "titan_iac: Last Artifacts", - "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "bstein_home: Job", - "url": "${jenkins_base}/job/bstein-dev-home/", - "targetBlank": true - }, - { - "title": "bstein_home: Last Artifacts", - "url": "${jenkins_base}/job/bstein-dev-home/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "data_prepper: Job", - "url": "${jenkins_base}/job/data-prepper/", - "targetBlank": true - }, - { - "title": "data_prepper: Last Artifacts", - "url": "${jenkins_base}/job/data-prepper/lastCompletedBuild/artifact/", - "targetBlank": true - } - ] - }, { "id": 147, "type": "bargauge", @@ -2374,9 +1612,9 @@ data: }, "gridPos": { "h": 8, - "w": 4, - "x": 20, - "y": 45 + "w": 12, + "x": 12, + "y": 57 }, "targets": [ { @@ -2553,6 +1791,343 @@ data: } ] }, + { + "id": 146, + "type": "timeseries", + "title": "Selected Test Pass/Fail History", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 65 + }, + "targets": [ + { + "refId": "A", + "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"passed\"}[$__interval])) or on() vector(0)", + "legendFormat": "passed \u00b7 {{suite}} \u00b7 #{{build_number}}" + }, + { + "refId": "B", + "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"failed\"}[$__interval])) or on() vector(0)", + "legendFormat": "failed \u00b7 {{suite}} \u00b7 #{{build_number}}" + }, + { + "refId": "C", + "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"skipped\"}[$__interval])) or on() vector(0)", + "legendFormat": "skipped \u00b7 {{suite}} \u00b7 #{{build_number}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none", + "links": [ + { + "title": "Open build artifacts", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/artifact/", + "targetBlank": true + }, + { + "title": "Open build", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/", + "targetBlank": true + } + ] + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "sum" + ] + }, + "tooltip": { + "mode": "multi" + } + }, + "links": [ + { + "title": "Open Jenkins", + "url": "${jenkins_base}/", + "targetBlank": true + }, + { + "title": "ariadne: Job", + "url": "${jenkins_base}/job/ariadne/", + "targetBlank": true + }, + { + "title": "ariadne: Last Artifacts", + "url": "${jenkins_base}/job/ariadne/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "metis: Job", + "url": "${jenkins_base}/job/metis/", + "targetBlank": true + }, + { + "title": "metis: Last Artifacts", + "url": "${jenkins_base}/job/metis/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "ananke: Job", + "url": "${jenkins_base}/job/ananke/", + "targetBlank": true + }, + { + "title": "ananke: Last Artifacts", + "url": "${jenkins_base}/job/ananke/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "atlasbot: Job", + "url": "${jenkins_base}/job/atlasbot/", + "targetBlank": true + }, + { + "title": "atlasbot: Last Artifacts", + "url": "${jenkins_base}/job/atlasbot/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "pegasus: Job", + "url": "${jenkins_base}/job/pegasus/", + "targetBlank": true + }, + { + "title": "pegasus: Last Artifacts", + "url": "${jenkins_base}/job/pegasus/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "soteria: Job", + "url": "${jenkins_base}/job/Soteria/", + "targetBlank": true + }, + { + "title": "soteria: Last Artifacts", + "url": "${jenkins_base}/job/Soteria/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "titan_iac: Job", + "url": "${jenkins_base}/job/titan-iac/", + "targetBlank": true + }, + { + "title": "titan_iac: Last Artifacts", + "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "bstein_home: Job", + "url": "${jenkins_base}/job/bstein-dev-home/", + "targetBlank": true + }, + { + "title": "bstein_home: Last Artifacts", + "url": "${jenkins_base}/job/bstein-dev-home/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "data_prepper: Job", + "url": "${jenkins_base}/job/data-prepper/", + "targetBlank": true + }, + { + "title": "data_prepper: Last Artifacts", + "url": "${jenkins_base}/job/data-prepper/lastCompletedBuild/artifact/", + "targetBlank": true + } + ] + }, + { + "id": 152, + "type": "timeseries", + "title": "Selected Test Pass Rate History", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 65 + }, + "targets": [ + { + "expr": "100 * (sum by (suite, test) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"passed\"}[$__interval]))) / clamp_min((sum by (suite, test) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=~\"passed|failed|error|skipped\"}[$__interval]))), 1)", + "refId": "A", + "legendFormat": "{{suite}} \u00b7 {{test}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "percent", + "links": [ + { + "title": "Open build artifacts", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/artifact/", + "targetBlank": true + }, + { + "title": "Open build", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/", + "targetBlank": true + } + ], + "min": 0, + "max": 100, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "orange", + "value": 90 + }, + { + "color": "yellow", + "value": 93 + }, + { + "color": "green", + "value": 95 + }, + { + "color": "blue", + "value": 100 + } + ] + } + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "min" + ] + }, + "tooltip": { + "mode": "multi" + } + }, + "links": [ + { + "title": "Open Jenkins", + "url": "${jenkins_base}/", + "targetBlank": true + }, + { + "title": "ariadne: Job", + "url": "${jenkins_base}/job/ariadne/", + "targetBlank": true + }, + { + "title": "ariadne: Last Artifacts", + "url": "${jenkins_base}/job/ariadne/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "metis: Job", + "url": "${jenkins_base}/job/metis/", + "targetBlank": true + }, + { + "title": "metis: Last Artifacts", + "url": "${jenkins_base}/job/metis/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "ananke: Job", + "url": "${jenkins_base}/job/ananke/", + "targetBlank": true + }, + { + "title": "ananke: Last Artifacts", + "url": "${jenkins_base}/job/ananke/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "atlasbot: Job", + "url": "${jenkins_base}/job/atlasbot/", + "targetBlank": true + }, + { + "title": "atlasbot: Last Artifacts", + "url": "${jenkins_base}/job/atlasbot/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "pegasus: Job", + "url": "${jenkins_base}/job/pegasus/", + "targetBlank": true + }, + { + "title": "pegasus: Last Artifacts", + "url": "${jenkins_base}/job/pegasus/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "soteria: Job", + "url": "${jenkins_base}/job/Soteria/", + "targetBlank": true + }, + { + "title": "soteria: Last Artifacts", + "url": "${jenkins_base}/job/Soteria/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "titan_iac: Job", + "url": "${jenkins_base}/job/titan-iac/", + "targetBlank": true + }, + { + "title": "titan_iac: Last Artifacts", + "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "bstein_home: Job", + "url": "${jenkins_base}/job/bstein-dev-home/", + "targetBlank": true + }, + { + "title": "bstein_home: Last Artifacts", + "url": "${jenkins_base}/job/bstein-dev-home/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "data_prepper: Job", + "url": "${jenkins_base}/job/data-prepper/", + "targetBlank": true + }, + { + "title": "data_prepper: Last Artifacts", + "url": "${jenkins_base}/job/data-prepper/lastCompletedBuild/artifact/", + "targetBlank": true + } + ] + }, { "id": 17, "type": "bargauge", @@ -2565,7 +2140,7 @@ data: "h": 8, "w": 12, "x": 0, - "y": 53 + "y": 73 }, "targets": [ { @@ -2589,15 +2164,19 @@ data: }, { "color": "orange", - "value": 80 + "value": 90 }, { "color": "yellow", - "value": 95 + "value": 93 }, { "color": "green", - "value": 99 + "value": 95 + }, + { + "color": "blue", + "value": 100 } ] }, @@ -2650,7 +2229,7 @@ data: "h": 8, "w": 12, "x": 12, - "y": 53 + "y": 73 }, "targets": [ { @@ -2738,7 +2317,7 @@ data: "h": 7, "w": 6, "x": 0, - "y": 61 + "y": 81 }, "targets": [ { @@ -2805,7 +2384,7 @@ data: "h": 7, "w": 6, "x": 6, - "y": 61 + "y": 81 }, "targets": [ { @@ -2872,7 +2451,7 @@ data: "h": 7, "w": 6, "x": 12, - "y": 61 + "y": 81 }, "targets": [ { @@ -2939,7 +2518,7 @@ data: "h": 7, "w": 6, "x": 18, - "y": 61 + "y": 81 }, "targets": [ { @@ -3006,7 +2585,7 @@ data: "h": 6, "w": 4, "x": 0, - "y": 68 + "y": 88 }, "targets": [ { @@ -3067,7 +2646,7 @@ data: "h": 6, "w": 4, "x": 4, - "y": 68 + "y": 88 }, "targets": [ { @@ -3136,7 +2715,7 @@ data: "h": 6, "w": 4, "x": 8, - "y": 68 + "y": 88 }, "targets": [ { @@ -3205,7 +2784,7 @@ data: "h": 6, "w": 6, "x": 12, - "y": 68 + "y": 88 }, "targets": [ { @@ -3256,7 +2835,7 @@ data: "h": 6, "w": 6, "x": 18, - "y": 68 + "y": 88 }, "targets": [ { @@ -3328,9 +2907,9 @@ data: }, "gridPos": { "h": 6, - "w": 24, + "w": 12, "x": 0, - "y": 74 + "y": 94 }, "targets": [ { @@ -3385,6 +2964,73 @@ data: } ] }, + { + "id": 151, + "type": "bargauge", + "title": "No Real Test Cases by Suite", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 12, + "y": 94 + }, + "targets": [ + { + "expr": "sort_desc((((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) unless on(suite) count by (suite) (platform_quality_gate_test_case_result{exported_job=\"platform-quality-ci\",test!=\"__no_test_cases__\"}))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "refId": "A", + "legendFormat": "{{suite}}", + "instant": true + } + ], + "fieldConfig": { + "defaults": { + "unit": "none", + "min": 0, + "max": null, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 1 + } + ] + }, + "decimals": 0 + }, + "overrides": [] + }, + "options": { + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + } + }, + "transformations": [ + { + "id": "sortBy", + "options": { + "fields": [ + "Value" + ], + "order": "desc" + } + } + ] + }, { "id": 149, "type": "bargauge", @@ -3397,7 +3043,7 @@ data: "h": 7, "w": 12, "x": 0, - "y": 80 + "y": 100 }, "targets": [ { @@ -3561,7 +3207,7 @@ data: "h": 7, "w": 12, "x": 12, - "y": 80 + "y": 100 }, "targets": [ { diff --git a/services/monitoring/grafana-dashboard-testing.yaml b/services/monitoring/grafana-dashboard-testing.yaml index ca1a4145..d6371f1f 100644 --- a/services/monitoring/grafana-dashboard-testing.yaml +++ b/services/monitoring/grafana-dashboard-testing.yaml @@ -49,15 +49,19 @@ data: }, { "color": "orange", - "value": 80 + "value": 90 }, { "color": "yellow", - "value": 95 + "value": 93 }, { "color": "green", - "value": 99 + "value": 95 + }, + { + "color": "blue", + "value": 100 } ] }, @@ -119,15 +123,19 @@ data: }, { "color": "orange", - "value": 80 + "value": 90 }, { "color": "yellow", - "value": 95 + "value": 93 }, { "color": "green", - "value": 99 + "value": 95 + }, + { + "color": "blue", + "value": 100 } ] }, @@ -319,15 +327,19 @@ data: }, { "color": "orange", - "value": 80 + "value": 90 }, { "color": "yellow", - "value": 95 + "value": 93 }, { "color": "green", - "value": 99 + "value": 95 + }, + { + "color": "blue", + "value": 100 } ] }, @@ -426,558 +438,6 @@ data: "textMode": "value" } }, - { - "id": 19, - "type": "stat", - "title": "Failing Tests", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 0, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 20, - "type": "stat", - "title": "Failing Coverage", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 3, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 21, - "type": "stat", - "title": "Failing LOC", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 6, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 22, - "type": "stat", - "title": "Failing Docs/Naming", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 9, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 23, - "type": "stat", - "title": "Failing Gate/Glue", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 12, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 24, - "type": "stat", - "title": "Failing SonarQube", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 15, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 25, - "type": "stat", - "title": "Failing Supply Chain", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 18, - "y": 5 - }, - "targets": [ - { - "expr": "(sum(count by (suite) ({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, - { - "id": 26, - "type": "stat", - "title": "Total Failing Checks", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 4, - "w": 3, - "x": 21, - "y": 5 - }, - "targets": [ - { - "expr": "(sum({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"}) or on() vector(0))", - "refId": "A", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "orange", - "value": 3 - }, - { - "color": "red", - "value": 5 - } - ] - }, - "unit": "none", - "custom": { - "displayMode": "auto" - } - }, - "overrides": [] - }, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "value" - } - }, { "id": 8, "type": "bargauge", @@ -990,7 +450,7 @@ data: "h": 8, "w": 8, "x": 0, - "y": 9 + "y": 5 }, "targets": [ { @@ -1064,7 +524,7 @@ data: "h": 8, "w": 8, "x": 8, - "y": 9 + "y": 5 }, "targets": [ { @@ -1088,15 +548,19 @@ data: }, { "color": "orange", - "value": 80 + "value": 90 }, { "color": "yellow", - "value": 95 + "value": 93 }, { "color": "green", - "value": 99 + "value": 95 + }, + { + "color": "blue", + "value": 100 } ] }, @@ -1139,7 +603,7 @@ data: "h": 8, "w": 8, "x": 16, - "y": 9 + "y": 5 }, "targets": [ { @@ -1215,7 +679,7 @@ data: "h": 8, "w": 24, "x": 0, - "y": 17 + "y": 13 }, "targets": [ { @@ -1263,7 +727,7 @@ data: "h": 8, "w": 8, "x": 0, - "y": 25 + "y": 21 }, "targets": [ { @@ -1314,7 +778,7 @@ data: "h": 8, "w": 8, "x": 8, - "y": 25 + "y": 21 }, "targets": [ { @@ -1360,7 +824,7 @@ data: "h": 8, "w": 8, "x": 16, - "y": 25 + "y": 21 }, "targets": [ { @@ -1402,20 +866,20 @@ data: { "id": 130, "type": "timeseries", - "title": "Fail Trend: Tests", + "title": "Failure Trend: Tests", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, + "h": 7, + "w": 6, "x": 0, - "y": 33 + "y": 29 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1438,25 +902,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 131, "type": "timeseries", - "title": "Fail Trend: Coverage", + "title": "Failure Trend: Coverage", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 3, - "y": 33 + "h": 7, + "w": 6, + "x": 6, + "y": 29 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1479,25 +944,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 132, "type": "timeseries", - "title": "Fail Trend: LOC", + "title": "Failure Trend: LOC", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 6, - "y": 33 + "h": 7, + "w": 6, + "x": 12, + "y": 29 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1520,25 +986,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 133, "type": "timeseries", - "title": "Fail Trend: Style", + "title": "Failure Trend: Style", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 9, - "y": 33 + "h": 7, + "w": 6, + "x": 18, + "y": 29 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1561,25 +1028,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 134, "type": "timeseries", - "title": "Fail Trend: Gate Glue", + "title": "Failure Trend: Gate Glue", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 12, - "y": 33 + "h": 7, + "w": 8, + "x": 0, + "y": 36 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1602,25 +1070,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 135, "type": "timeseries", - "title": "Fail Trend: SonarQube", + "title": "Failure Trend: SonarQube", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 15, - "y": 33 + "h": 7, + "w": 8, + "x": 8, + "y": 36 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1643,25 +1112,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 136, "type": "timeseries", - "title": "Fail Trend: Supply Chain", + "title": "Failure Trend: Supply Chain", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 18, - "y": 33 + "h": 7, + "w": 8, + "x": 16, + "y": 36 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result!~\"ok|passed|success|not_applicable|skipped|na|n/a\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1684,25 +1154,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 138, "type": "timeseries", - "title": "Pass Trend: Tests", + "title": "Success Trend: Tests", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, + "h": 7, + "w": 6, "x": 0, - "y": 39 + "y": 43 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"tests|unit|build\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1725,25 +1196,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 139, "type": "timeseries", - "title": "Pass Trend: Coverage", + "title": "Success Trend: Coverage", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 3, - "y": 39 + "h": 7, + "w": 6, + "x": 6, + "y": 43 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"coverage\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1766,25 +1238,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 140, "type": "timeseries", - "title": "Pass Trend: LOC", + "title": "Success Trend: LOC", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 6, - "y": 39 + "h": 7, + "w": 6, + "x": 12, + "y": 43 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"loc|smell\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1807,25 +1280,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 141, "type": "timeseries", - "title": "Pass Trend: Style", + "title": "Success Trend: Style", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 9, - "y": 39 + "h": 7, + "w": 6, + "x": 18, + "y": 43 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"docs|naming|hygiene|lint|docs_naming|style\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1848,25 +1322,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 142, "type": "timeseries", - "title": "Pass Trend: Gate Glue", + "title": "Success Trend: Gate Glue", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 12, - "y": 39 + "h": 7, + "w": 8, + "x": 0, + "y": 50 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"gate|glue|gate_glue\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1889,25 +1364,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 143, "type": "timeseries", - "title": "Pass Trend: SonarQube", + "title": "Success Trend: SonarQube", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 15, - "y": 39 + "h": 7, + "w": 8, + "x": 8, + "y": 50 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"sonarqube|sonar\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1930,25 +1406,26 @@ data: "tooltip": { "mode": "multi" } - } + }, + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 144, "type": "timeseries", - "title": "Pass Trend: Supply Chain", + "title": "Success Trend: Supply Chain", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, - "w": 3, - "x": 18, - "y": 39 + "h": 7, + "w": 8, + "x": 16, + "y": 50 }, "targets": [ { - "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")))", + "expr": "(sum by (suite) (max_over_time(({__name__=~\".*_quality_gate_checks_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",check=~\"ironbank|supply_chain|image_compliance|artifact_security\",result=~\"ok|passed|success\"})[$__interval]))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))", "refId": "A", "legendFormat": "{{suite}}" } @@ -1971,87 +1448,8 @@ data: "tooltip": { "mode": "multi" } - } - }, - { - "id": 15, - "type": "bargauge", - "title": "Latest Test Counters (Suite + Result)", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" }, - "gridPos": { - "h": 6, - "w": 3, - "x": 21, - "y": 39 - }, - "targets": [ - { - "expr": "sort_desc(sum by (suite, result) ({__name__=~\".*_quality_gate_tests_total\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))", - "refId": "A", - "legendFormat": "{{suite}} \u00b7 {{result}}", - "instant": true - } - ], - "fieldConfig": { - "defaults": { - "unit": "none", - "min": 0, - "max": null, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 50 - }, - { - "color": "orange", - "value": 70 - }, - { - "color": "red", - "value": 85 - } - ] - } - }, - "overrides": [] - }, - "options": { - "displayMode": "gradient", - "orientation": "horizontal", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - } - }, - "transformations": [ - { - "id": "sortBy", - "options": { - "fields": [ - "Value" - ], - "order": "desc" - } - }, - { - "id": "limit", - "options": { - "limit": 24 - } - } - ] + "description": "One line per selected suite. 1 means this check dimension was in that state during the bucket; 0 means the suite reported the dimension and it was not in that state." }, { "id": 145, @@ -2065,7 +1463,7 @@ data: "h": 8, "w": 12, "x": 0, - "y": 45 + "y": 57 }, "targets": [ { @@ -2204,166 +1602,6 @@ data: } ] }, - { - "id": 146, - "type": "timeseries", - "title": "Selected Test Pass/Fail History", - "datasource": { - "type": "prometheus", - "uid": "atlas-vm" - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 12, - "y": 45 - }, - "targets": [ - { - "refId": "A", - "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"passed\"}[$__interval])) or on() vector(0)", - "legendFormat": "passed \u00b7 {{suite}} \u00b7 #{{build_number}}" - }, - { - "refId": "B", - "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"failed\"}[$__interval])) or on() vector(0)", - "legendFormat": "failed \u00b7 {{suite}} \u00b7 #{{build_number}}" - }, - { - "refId": "C", - "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"skipped\"}[$__interval])) or on() vector(0)", - "legendFormat": "skipped \u00b7 {{suite}} \u00b7 #{{build_number}}" - } - ], - "fieldConfig": { - "defaults": { - "unit": "none", - "links": [ - { - "title": "Open build artifacts", - "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/artifact/", - "targetBlank": true - }, - { - "title": "Open build", - "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/", - "targetBlank": true - } - ] - }, - "overrides": [] - }, - "options": { - "legend": { - "displayMode": "list", - "placement": "bottom", - "calcs": [ - "lastNotNull", - "sum" - ] - }, - "tooltip": { - "mode": "multi" - } - }, - "links": [ - { - "title": "Open Jenkins", - "url": "${jenkins_base}/", - "targetBlank": true - }, - { - "title": "ariadne: Job", - "url": "${jenkins_base}/job/ariadne/", - "targetBlank": true - }, - { - "title": "ariadne: Last Artifacts", - "url": "${jenkins_base}/job/ariadne/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "metis: Job", - "url": "${jenkins_base}/job/metis/", - "targetBlank": true - }, - { - "title": "metis: Last Artifacts", - "url": "${jenkins_base}/job/metis/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "ananke: Job", - "url": "${jenkins_base}/job/ananke/", - "targetBlank": true - }, - { - "title": "ananke: Last Artifacts", - "url": "${jenkins_base}/job/ananke/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "atlasbot: Job", - "url": "${jenkins_base}/job/atlasbot/", - "targetBlank": true - }, - { - "title": "atlasbot: Last Artifacts", - "url": "${jenkins_base}/job/atlasbot/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "pegasus: Job", - "url": "${jenkins_base}/job/pegasus/", - "targetBlank": true - }, - { - "title": "pegasus: Last Artifacts", - "url": "${jenkins_base}/job/pegasus/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "soteria: Job", - "url": "${jenkins_base}/job/Soteria/", - "targetBlank": true - }, - { - "title": "soteria: Last Artifacts", - "url": "${jenkins_base}/job/Soteria/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "titan_iac: Job", - "url": "${jenkins_base}/job/titan-iac/", - "targetBlank": true - }, - { - "title": "titan_iac: Last Artifacts", - "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "bstein_home: Job", - "url": "${jenkins_base}/job/bstein-dev-home/", - "targetBlank": true - }, - { - "title": "bstein_home: Last Artifacts", - "url": "${jenkins_base}/job/bstein-dev-home/lastCompletedBuild/artifact/", - "targetBlank": true - }, - { - "title": "data_prepper: Job", - "url": "${jenkins_base}/job/data-prepper/", - "targetBlank": true - }, - { - "title": "data_prepper: Last Artifacts", - "url": "${jenkins_base}/job/data-prepper/lastCompletedBuild/artifact/", - "targetBlank": true - } - ] - }, { "id": 147, "type": "bargauge", @@ -2374,9 +1612,9 @@ data: }, "gridPos": { "h": 8, - "w": 4, - "x": 20, - "y": 45 + "w": 12, + "x": 12, + "y": 57 }, "targets": [ { @@ -2553,6 +1791,343 @@ data: } ] }, + { + "id": 146, + "type": "timeseries", + "title": "Selected Test Pass/Fail History", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 65 + }, + "targets": [ + { + "refId": "A", + "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"passed\"}[$__interval])) or on() vector(0)", + "legendFormat": "passed \u00b7 {{suite}} \u00b7 #{{build_number}}" + }, + { + "refId": "B", + "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"failed\"}[$__interval])) or on() vector(0)", + "legendFormat": "failed \u00b7 {{suite}} \u00b7 #{{build_number}}" + }, + { + "refId": "C", + "expr": "sum by (suite, test, status, jenkins_job, build_number) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"skipped\"}[$__interval])) or on() vector(0)", + "legendFormat": "skipped \u00b7 {{suite}} \u00b7 #{{build_number}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "none", + "links": [ + { + "title": "Open build artifacts", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/artifact/", + "targetBlank": true + }, + { + "title": "Open build", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/", + "targetBlank": true + } + ] + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "sum" + ] + }, + "tooltip": { + "mode": "multi" + } + }, + "links": [ + { + "title": "Open Jenkins", + "url": "${jenkins_base}/", + "targetBlank": true + }, + { + "title": "ariadne: Job", + "url": "${jenkins_base}/job/ariadne/", + "targetBlank": true + }, + { + "title": "ariadne: Last Artifacts", + "url": "${jenkins_base}/job/ariadne/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "metis: Job", + "url": "${jenkins_base}/job/metis/", + "targetBlank": true + }, + { + "title": "metis: Last Artifacts", + "url": "${jenkins_base}/job/metis/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "ananke: Job", + "url": "${jenkins_base}/job/ananke/", + "targetBlank": true + }, + { + "title": "ananke: Last Artifacts", + "url": "${jenkins_base}/job/ananke/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "atlasbot: Job", + "url": "${jenkins_base}/job/atlasbot/", + "targetBlank": true + }, + { + "title": "atlasbot: Last Artifacts", + "url": "${jenkins_base}/job/atlasbot/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "pegasus: Job", + "url": "${jenkins_base}/job/pegasus/", + "targetBlank": true + }, + { + "title": "pegasus: Last Artifacts", + "url": "${jenkins_base}/job/pegasus/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "soteria: Job", + "url": "${jenkins_base}/job/Soteria/", + "targetBlank": true + }, + { + "title": "soteria: Last Artifacts", + "url": "${jenkins_base}/job/Soteria/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "titan_iac: Job", + "url": "${jenkins_base}/job/titan-iac/", + "targetBlank": true + }, + { + "title": "titan_iac: Last Artifacts", + "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "bstein_home: Job", + "url": "${jenkins_base}/job/bstein-dev-home/", + "targetBlank": true + }, + { + "title": "bstein_home: Last Artifacts", + "url": "${jenkins_base}/job/bstein-dev-home/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "data_prepper: Job", + "url": "${jenkins_base}/job/data-prepper/", + "targetBlank": true + }, + { + "title": "data_prepper: Last Artifacts", + "url": "${jenkins_base}/job/data-prepper/lastCompletedBuild/artifact/", + "targetBlank": true + } + ] + }, + { + "id": 152, + "type": "timeseries", + "title": "Selected Test Pass Rate History", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 65 + }, + "targets": [ + { + "expr": "100 * (sum by (suite, test) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=\"passed\"}[$__interval]))) / clamp_min((sum by (suite, test) (max_over_time(platform_quality_gate_test_case_result{suite=~\"${suite:regex}\",branch=~\"${branch:regex}\",test=~\"${test:regex}\",test!=\"__no_test_cases__\",exported_job=\"platform-quality-ci\",status=~\"passed|failed|error|skipped\"}[$__interval]))), 1)", + "refId": "A", + "legendFormat": "{{suite}} \u00b7 {{test}}" + } + ], + "fieldConfig": { + "defaults": { + "unit": "percent", + "links": [ + { + "title": "Open build artifacts", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/artifact/", + "targetBlank": true + }, + { + "title": "Open build", + "url": "${jenkins_base}/job/${__field.labels.jenkins_job}/${__field.labels.build_number}/", + "targetBlank": true + } + ], + "min": 0, + "max": 100, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "orange", + "value": 90 + }, + { + "color": "yellow", + "value": 93 + }, + { + "color": "green", + "value": 95 + }, + { + "color": "blue", + "value": 100 + } + ] + } + }, + "overrides": [] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom", + "calcs": [ + "lastNotNull", + "min" + ] + }, + "tooltip": { + "mode": "multi" + } + }, + "links": [ + { + "title": "Open Jenkins", + "url": "${jenkins_base}/", + "targetBlank": true + }, + { + "title": "ariadne: Job", + "url": "${jenkins_base}/job/ariadne/", + "targetBlank": true + }, + { + "title": "ariadne: Last Artifacts", + "url": "${jenkins_base}/job/ariadne/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "metis: Job", + "url": "${jenkins_base}/job/metis/", + "targetBlank": true + }, + { + "title": "metis: Last Artifacts", + "url": "${jenkins_base}/job/metis/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "ananke: Job", + "url": "${jenkins_base}/job/ananke/", + "targetBlank": true + }, + { + "title": "ananke: Last Artifacts", + "url": "${jenkins_base}/job/ananke/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "atlasbot: Job", + "url": "${jenkins_base}/job/atlasbot/", + "targetBlank": true + }, + { + "title": "atlasbot: Last Artifacts", + "url": "${jenkins_base}/job/atlasbot/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "pegasus: Job", + "url": "${jenkins_base}/job/pegasus/", + "targetBlank": true + }, + { + "title": "pegasus: Last Artifacts", + "url": "${jenkins_base}/job/pegasus/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "soteria: Job", + "url": "${jenkins_base}/job/Soteria/", + "targetBlank": true + }, + { + "title": "soteria: Last Artifacts", + "url": "${jenkins_base}/job/Soteria/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "titan_iac: Job", + "url": "${jenkins_base}/job/titan-iac/", + "targetBlank": true + }, + { + "title": "titan_iac: Last Artifacts", + "url": "${jenkins_base}/job/titan-iac/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "bstein_home: Job", + "url": "${jenkins_base}/job/bstein-dev-home/", + "targetBlank": true + }, + { + "title": "bstein_home: Last Artifacts", + "url": "${jenkins_base}/job/bstein-dev-home/lastCompletedBuild/artifact/", + "targetBlank": true + }, + { + "title": "data_prepper: Job", + "url": "${jenkins_base}/job/data-prepper/", + "targetBlank": true + }, + { + "title": "data_prepper: Last Artifacts", + "url": "${jenkins_base}/job/data-prepper/lastCompletedBuild/artifact/", + "targetBlank": true + } + ] + }, { "id": 17, "type": "bargauge", @@ -2565,7 +2140,7 @@ data: "h": 8, "w": 12, "x": 0, - "y": 53 + "y": 73 }, "targets": [ { @@ -2589,15 +2164,19 @@ data: }, { "color": "orange", - "value": 80 + "value": 90 }, { "color": "yellow", - "value": 95 + "value": 93 }, { "color": "green", - "value": 99 + "value": 95 + }, + { + "color": "blue", + "value": 100 } ] }, @@ -2650,7 +2229,7 @@ data: "h": 8, "w": 12, "x": 12, - "y": 53 + "y": 73 }, "targets": [ { @@ -2738,7 +2317,7 @@ data: "h": 7, "w": 6, "x": 0, - "y": 61 + "y": 81 }, "targets": [ { @@ -2805,7 +2384,7 @@ data: "h": 7, "w": 6, "x": 6, - "y": 61 + "y": 81 }, "targets": [ { @@ -2872,7 +2451,7 @@ data: "h": 7, "w": 6, "x": 12, - "y": 61 + "y": 81 }, "targets": [ { @@ -2939,7 +2518,7 @@ data: "h": 7, "w": 6, "x": 18, - "y": 61 + "y": 81 }, "targets": [ { @@ -3006,7 +2585,7 @@ data: "h": 6, "w": 4, "x": 0, - "y": 68 + "y": 88 }, "targets": [ { @@ -3067,7 +2646,7 @@ data: "h": 6, "w": 4, "x": 4, - "y": 68 + "y": 88 }, "targets": [ { @@ -3136,7 +2715,7 @@ data: "h": 6, "w": 4, "x": 8, - "y": 68 + "y": 88 }, "targets": [ { @@ -3205,7 +2784,7 @@ data: "h": 6, "w": 6, "x": 12, - "y": 68 + "y": 88 }, "targets": [ { @@ -3256,7 +2835,7 @@ data: "h": 6, "w": 6, "x": 18, - "y": 68 + "y": 88 }, "targets": [ { @@ -3328,9 +2907,9 @@ data: }, "gridPos": { "h": 6, - "w": 24, + "w": 12, "x": 0, - "y": 74 + "y": 94 }, "targets": [ { @@ -3385,6 +2964,73 @@ data: } ] }, + { + "id": 151, + "type": "bargauge", + "title": "No Real Test Cases by Suite", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 12, + "y": 94 + }, + "targets": [ + { + "expr": "sort_desc((((label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\")) unless on(suite) count by (suite) (platform_quality_gate_test_case_result{exported_job=\"platform-quality-ci\",test!=\"__no_test_cases__\"}))) or on(suite) (0 * (label_replace(vector(1), \"suite\", \"ariadne\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"metis\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"ananke\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"atlasbot\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"pegasus\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"soteria\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"titan_iac\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"bstein_home\", \"__name__\", \".*\") or label_replace(vector(1), \"suite\", \"data_prepper\", \"__name__\", \".*\"))))", + "refId": "A", + "legendFormat": "{{suite}}", + "instant": true + } + ], + "fieldConfig": { + "defaults": { + "unit": "none", + "min": 0, + "max": null, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 1 + } + ] + }, + "decimals": 0 + }, + "overrides": [] + }, + "options": { + "displayMode": "gradient", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + } + }, + "transformations": [ + { + "id": "sortBy", + "options": { + "fields": [ + "Value" + ], + "order": "desc" + } + } + ] + }, { "id": 149, "type": "bargauge", @@ -3397,7 +3043,7 @@ data: "h": 7, "w": 12, "x": 0, - "y": 80 + "y": 100 }, "targets": [ { @@ -3561,7 +3207,7 @@ data: "h": 7, "w": 12, "x": 12, - "y": 80 + "y": 100 }, "targets": [ {