ci: fix data-prepper defaults and restore metrics publisher coverage
This commit is contained in:
parent
881c724725
commit
ddabda06bf
@ -422,5 +422,5 @@ def main() -> int:
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__": # pragma: no cover
|
||||||
raise SystemExit(main())
|
raise SystemExit(main())
|
||||||
|
|||||||
@ -196,6 +196,8 @@ EOF
|
|||||||
withCredentials([usernamePassword(credentialsId: 'harbor-robot', usernameVariable: 'HARBOR_USERNAME', passwordVariable: 'HARBOR_PASSWORD')]) {
|
withCredentials([usernamePassword(credentialsId: 'harbor-robot', usernameVariable: 'HARBOR_USERNAME', passwordVariable: 'HARBOR_PASSWORD')]) {
|
||||||
sh '''
|
sh '''
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
IMAGE_TAG="${IMAGE_TAG:-2.8.0}"
|
||||||
|
PUSH_LATEST="${PUSH_LATEST:-true}"
|
||||||
if [ -z "${HARBOR_REPO:-}" ] || [ "${HARBOR_REPO}" = "registry.bstein.dev/monitoring/data-prepper" ]; then
|
if [ -z "${HARBOR_REPO:-}" ] || [ "${HARBOR_REPO}" = "registry.bstein.dev/monitoring/data-prepper" ]; then
|
||||||
HARBOR_REPO="registry.bstein.dev/streaming/data-prepper"
|
HARBOR_REPO="registry.bstein.dev/streaming/data-prepper"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@ -145,6 +145,55 @@ def test_build_check_statuses_handles_missing_reports():
|
|||||||
assert check_statuses["supply_chain"] == "not_applicable"
|
assert check_statuses["supply_chain"] == "not_applicable"
|
||||||
|
|
||||||
|
|
||||||
|
def test_status_normalization_and_optional_reports(tmp_path: Path):
|
||||||
|
report_path = tmp_path / "report.json"
|
||||||
|
report_path.write_text("{bad json", encoding="utf-8")
|
||||||
|
|
||||||
|
assert publish_test_metrics._normalize_result_status(None, default="failed") == "failed"
|
||||||
|
assert publish_test_metrics._normalize_result_status("n/a") == "not_applicable"
|
||||||
|
assert publish_test_metrics._normalize_result_status("unexpected", default="ok") == "ok"
|
||||||
|
|
||||||
|
assert publish_test_metrics._load_optional_json(None) == {}
|
||||||
|
assert publish_test_metrics._load_optional_json(str(tmp_path / "missing.json")) == {}
|
||||||
|
assert publish_test_metrics._load_optional_json(str(report_path)) == {}
|
||||||
|
|
||||||
|
assert publish_test_metrics._combine_statuses([]) == "not_applicable"
|
||||||
|
assert publish_test_metrics._combine_statuses(["not_applicable", "not_applicable"]) == "not_applicable"
|
||||||
|
assert publish_test_metrics._combine_statuses(["unknown"]) == "failed"
|
||||||
|
|
||||||
|
assert publish_test_metrics._infer_supply_chain_status({"compliant": False}, required=True) == "failed"
|
||||||
|
assert publish_test_metrics._infer_supply_chain_status({"status": None}, required=False) == "not_applicable"
|
||||||
|
assert publish_test_metrics._infer_supply_chain_status({"status": "not_applicable"}, required=True) == "failed"
|
||||||
|
|
||||||
|
|
||||||
|
def test_build_check_statuses_handles_non_dict_results_and_fallbacks():
|
||||||
|
check_statuses = publish_test_metrics._build_check_statuses(
|
||||||
|
summary={
|
||||||
|
"results": [
|
||||||
|
None,
|
||||||
|
{"name": "", "status": "ok"},
|
||||||
|
{"name": "unit", "status": "warning"},
|
||||||
|
{"name": "hygiene", "status": "ok"},
|
||||||
|
{"name": "gate", "status": "ok"},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
tests={"tests": 3, "failures": 1, "errors": 0, "skipped": 0},
|
||||||
|
workspace_line_coverage_percent=94.0,
|
||||||
|
source_lines_over_500=0,
|
||||||
|
sonarqube_report={"status": "ERROR"},
|
||||||
|
supply_chain_report={"status": "not_applicable"},
|
||||||
|
supply_chain_required=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
assert check_statuses["tests"] == "failed"
|
||||||
|
assert check_statuses["coverage"] == "failed"
|
||||||
|
assert check_statuses["loc"] == "ok"
|
||||||
|
assert check_statuses["docs_naming"] == "ok"
|
||||||
|
assert check_statuses["gate_glue"] == "ok"
|
||||||
|
assert check_statuses["sonarqube"] == "failed"
|
||||||
|
assert check_statuses["supply_chain"] == "failed"
|
||||||
|
|
||||||
|
|
||||||
def test_read_text_post_text_and_fetch_existing_counter(monkeypatch):
|
def test_read_text_post_text_and_fetch_existing_counter(monkeypatch):
|
||||||
class _FakeResponse:
|
class _FakeResponse:
|
||||||
def __init__(self, payload: str, status: int = 200):
|
def __init__(self, payload: str, status: int = 200):
|
||||||
@ -257,6 +306,14 @@ def test_post_text_raises_and_counter_handles_bad_metric_lines(monkeypatch):
|
|||||||
)
|
)
|
||||||
== 9.0
|
== 9.0
|
||||||
)
|
)
|
||||||
|
assert (
|
||||||
|
publish_test_metrics._fetch_existing_counter(
|
||||||
|
"http://push.invalid",
|
||||||
|
"platform_quality_gate_runs_total",
|
||||||
|
{"job": "platform-quality-ci", "suite": "missing-suite", "status": "ok"},
|
||||||
|
)
|
||||||
|
== 0.0
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_build_payload_includes_canonical_checks():
|
def test_build_payload_includes_canonical_checks():
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user