Files
xinfra/scripts/ci/integration.sh
T

54 lines
1.4 KiB
Bash
Executable File

#!/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."