54 lines
1.4 KiB
Bash
Executable File
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."
|