from pathlib import Path import yaml ROOT = Path(__file__).parents[1] SUBSTRATE = ROOT / "substrate/v1.22.0" # 220m live since 2026-09-21; trimmed to 10m each by RAIL-KNATIVE-WP-0003. # See docs/substrate-runbook.md. DECLARED = { ("knative-serving", "activator", "activator"): "10m", ("knative-serving", "autoscaler", "autoscaler"): "10m", ("knative-serving", "controller", "controller"): "10m", ("knative-serving", "webhook", "webhook"): "10m", ("knative-serving", "net-kourier-controller", "controller"): "10m", ("kourier-system", "3scale-kourier-gateway", "kourier-gateway"): "10m", } def test_patches_declare_exactly_the_cpu_requests(): found = {} for doc in yaml.safe_load_all((SUBSTRATE / "cpu-requests.patch.yaml").read_text()): assert doc["kind"] == "Deployment" (container,) = doc["spec"]["template"]["spec"]["containers"] # Only CPU requests: no limits, no memory, nothing else. assert container["resources"] == {"requests": {"cpu": container["resources"]["requests"]["cpu"]}} key = (doc["metadata"]["namespace"], doc["metadata"]["name"], container["name"]) found[key] = container["resources"]["requests"]["cpu"] assert found == DECLARED def test_kustomization_patches_the_pinned_assets(): k = yaml.safe_load((SUBSTRATE / "kustomization.yaml").read_text()) assert k["resources"] == ["core.yaml", "kourier.yaml"] assert k["patches"] == [ {"path": "cpu-requests.patch.yaml"}, {"path": "hpa-caps.patch.yaml"}, ] # Single-node ceilings, RAIL-KNATIVE-WP-0003. minReplicas stays upstream (1). HPA_CAPS = { ("knative-serving", "activator"): 3, ("knative-serving", "webhook"): 2, ("kourier-system", "3scale-kourier-gateway"): 3, } def test_hpa_patches_only_cap_max_replicas(): found = {} for doc in yaml.safe_load_all((SUBSTRATE / "hpa-caps.patch.yaml").read_text()): assert doc["apiVersion"] == "autoscaling/v2" assert doc["kind"] == "HorizontalPodAutoscaler" assert set(doc["spec"]) == {"maxReplicas"} found[(doc["metadata"]["namespace"], doc["metadata"]["name"])] = doc["spec"]["maxReplicas"] assert found == HPA_CAPS