#!/usr/bin/env bash set -Eeuo pipefail server_log="${RUNNER_TEMP:-${TMPDIR:-/tmp}}/xinfra-server.log" server_pid="" cleanup() { if [[ -n "${server_pid}" ]] && kill -0 "${server_pid}" 2>/dev/null; then kill "${server_pid}" 2>/dev/null || true wait "${server_pid}" 2>/dev/null || true fi } trap cleanup EXIT echo "Starting backend; log: ${server_log}" go run ./cmd/server >"${server_log}" 2>&1 & server_pid=$! ready=false for attempt in $(seq 1 30); do if curl --fail --silent --show-error http://127.0.0.1:8080/readyz >/tmp/xinfra-readyz.json; then echo "Backend is ready after ${attempt} attempt(s)." ready=true break fi if ! kill -0 "${server_pid}" 2>/dev/null; then echo "Backend exited before becoming ready." cat "${server_log}" exit 1 fi sleep 2 done if [[ "${ready}" != true ]]; then echo "Backend did not become ready within the timeout." cat "${server_log}" exit 1 fi if ! curl --fail --silent --show-error http://127.0.0.1:8080/readyz | grep -q '"status":"ok"'; then echo "Backend readiness check did not return status=ok." cat /tmp/xinfra-readyz.json || true cat "${server_log}" exit 1 fi curl --fail --silent --show-error http://127.0.0.1:8080/healthz | grep -q '"status":"ok"' curl --fail --silent --show-error http://127.0.0.1:8080/api/v1/ping | grep -q '"code":0' echo "Backend integration smoke test passed."