Files
amethyst/quic/interop/run_endpoint.sh
T
Claude d8e17207b6 fix(quic-interop): skip /setup.sh in smoke mode (it breaks Docker-bridge DNS)
The base image's /setup.sh configures routing for the runner's ns-3 sim
*and* points the container's DNS resolver at the sim's nameserver. When
we source it inside `make smoke` (which uses a plain Docker bridge
network without the sim), DNS resolution for the bridge container names
breaks: the JVM client can't resolve `amethyst-quic-interop-smoke-picoquic`
and aborts before any QUIC traffic.

Adds a SMOKE_MODE=1 env var; run_endpoint.sh skips /setup.sh entirely
when it's set. The Makefile smoke target sets it. Inside the runner
(unset, default), /setup.sh runs as before.

https://claude.ai/code/session_01HcvfQq1ttPV9PkRoJb4nyT
2026-05-06 22:58:59 +00:00

35 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# quic-interop-runner endpoint entry point.
#
# The base image (martenseemann/quic-network-simulator-endpoint) provides
# /setup.sh, which configures routing for the runner's ns-3 sim. We source
# it inside the runner — but for `make smoke` runs against a plain Docker
# bridge network, sourcing /setup.sh succeeds AND breaks DNS resolution
# (it points the resolver at the sim's nameserver which doesn't exist
# in smoke mode). Set SMOKE_MODE=1 to skip /setup.sh entirely.
set -uo pipefail
if [ "${SMOKE_MODE:-0}" = "1" ]; then
echo "(smoke mode — skipping /setup.sh, using container default networking)" >&2
else
# shellcheck disable=SC1091
source /setup.sh 2>/dev/null || echo "(setup.sh skipped — running outside the runner sim)" >&2
fi
set -e
case "${ROLE:-client}" in
client)
exec /opt/quic-interop/bin/quic-interop
;;
server)
# Phase 0: server role unimplemented. Exit 127 so the runner skips.
echo "server role not implemented" >&2
exit 127
;;
*)
echo "unknown ROLE=${ROLE}" >&2
exit 127
;;
esac