gw-10 — Verification
One command
cd gw-10-gateway-api-operators && bash scripts/verify.sh
What the tests prove
| Test | Invariant |
|---|---|
TestLevelTriggeredSelfHealing | status flips on its own when the underlying Service appears — no CR change needed (level-triggered) |
TestIdempotentReconcile | reconciling identical state 5× pushes the data plane once (content-hash idempotency) |
TestStatusProgrammedOnlyAfterSuccess | Programmed=true only after the push succeeds; a failed push → Programmed=false/PushFailed (the CR's xDS-NACK analog) |
TestFinalizerCleanup | delete → Terminating (object kept) → reconcile deprograms + drops finalizer → object removed |
TestDeleteReprogramsRemaining | deleting one route leaves the data plane with exactly the others |
TestControllerProcessesQueue | the work-queue controller reconciles enqueued keys |
All under -race.
Demo (operatordemo, in verify.sh)
Shows the full lifecycle: apply (service missing → Accepted=false), self-heal (service created → Programmed=true), idempotent reconciles (pushes stays 1), delete (Terminating), finalizer cleanup (removed + data plane reprogrammed to 0 routes).
What "green" does NOT guarantee
- In-memory apiserver, not real Kubernetes. Production uses controller-runtime + a real apiserver (informers, rate-limited requeue, leader election) — the level-triggered core is identical (steps/01).
- EdgeRoute is a stand-in for HTTPRoute. Full Gateway API conformance is out of scope (CONCEPTS §3).
- DataPlane is
MemDataPlane. Wiring it to gw-08 xDS → real Envoy is an exercise (GUIDE §7.1).