the-custodian/scripts/test_reconcile_railiance_allocation.py

40 lines
1.7 KiB
Python
Raw Normal View History

from __future__ import annotations
import unittest
from pathlib import Path
import yaml
import reconcile_railiance_allocation as rec
OWNERS = yaml.safe_load((Path(__file__).resolve().parents[1] / "docs" / "evidence" / "namespace-ownership.yaml").read_text())
class ReconcileTests(unittest.TestCase):
def test_unknown_and_pending_are_explicit(self) -> None:
observation = {
"schema_version": "railiance.cluster-resource-observation.v1",
"captured_at": "2026-09-14T00:00:00Z",
"capacity": {"totals": {"cpu_millicores": 4000}},
"utilization": {"workloads": [
{"namespace": "state-hub", "workload": "state-hub", "pods": 2, "requests": {"cpu_millicores": 110, "memory_bytes": 1}},
{"namespace": "brand-new", "workload": "x", "pods": 1, "requests": {"cpu_millicores": 0, "memory_bytes": 0}},
]},
"allocation": {
"denominators": {"cpu_requested_millicores": 110},
"residual_capacity": {"cpu_millicores": 3890},
"pending_unscheduled": {"cpu_millicores": 25, "pods": [{"namespace": "other", "name": "p"}]},
},
"measurement_gaps": ["pod metrics unavailable"],
}
report = rec.join(observation, OWNERS)
self.assertEqual(["brand-new"], report["unknown_namespaces"])
self.assertIn("brand-new/x", report["zero_request_workloads"])
self.assertEqual(25, report["pending_unscheduled_cpu_m"])
self.assertEqual("state-hub", report["workloads"][0]["owner"])
self.assertTrue(report["count_host_and_cluster_cpus_once"])
if __name__ == "__main__":
unittest.main()