diff --git a/tests/listener_contract.py b/tests/listener_contract.py --- a/tests/listener_contract.py +++ b/tests/listener_contract.py @@ -114,6 +114,14 @@ ) assert wait_for(process, debug_port, "/healthz") == (200, b"ok\n") assert request(debug_port, "/readyz") == (200, b"ok\n") + # Listeners now bind BEFORE storage opens (upstream's server-first + # startup): /readyz 200 means accepting, not serving. Wait out the + # startup gate — /status says "starting" and subscribe 503s until + # main publishes the stores — before asserting the serving contract. + deadline = time.time() + 30 + while b"state starting" in request(public_port, "/status")[1]: + assert time.time() < deadline, "startup gate never opened" + time.sleep(0.05) for path in ("/healthz", "/readyz", "/metrics"): assert request(debug_port, path, "HEAD")[0] == 200, path assert request(debug_port, path, "HEAD")[1] == b"", path