Background
The E2E suite from #2 drives the built binary as a subprocess. The shipped artifact is actually a Docker image (Dockerfile + docker-entrypoint.sh, which starts doublezerod then execs the bridge). Nothing yet tests the image itself.
Because the harness talks to the bridge only over sockets (multicast in, WS out), pointing it at a container instead of a subprocess is a small change.
Scope
Add a smoke test that boots the real Docker image and asserts a quote flows over the WS:
- Build the image, run it with the bridge bound to a loopback feed (entrypoint overridden to skip
doublezerod, or a test compose), replay golden frames into the container's network namespace, and connect a WS client to the published port.
- Reuse the existing
replay + ws_client halves; only the "spawn" half changes (subprocess → docker run).
Keep it as a separate, opt-in job (it needs Docker and is slower) so the default PR loop stays fast.
Acceptance
A smoke test that validates the shipped image end-to-end (quote flows over WS), runnable in CI behind an opt-in gate.
Follow-up to #2.
Background
The E2E suite from #2 drives the built binary as a subprocess. The shipped artifact is actually a Docker image (
Dockerfile+docker-entrypoint.sh, which startsdoublezerodthen execs the bridge). Nothing yet tests the image itself.Because the harness talks to the bridge only over sockets (multicast in, WS out), pointing it at a container instead of a subprocess is a small change.
Scope
Add a smoke test that boots the real Docker image and asserts a quote flows over the WS:
doublezerod, or a test compose), replay golden frames into the container's network namespace, and connect a WS client to the published port.replay+ws_clienthalves; only the "spawn" half changes (subprocess →docker run).Keep it as a separate, opt-in job (it needs Docker and is slower) so the default PR loop stays fast.
Acceptance
A smoke test that validates the shipped image end-to-end (quote flows over WS), runnable in CI behind an opt-in gate.
Follow-up to #2.