matrixcloud / scripts /smoke-test.sh
github-actions[bot]
Deploy from 4dfd54f2
857a91b
Raw
History Blame Contribute Delete
1.72 kB
#!/usr/bin/env bash
# Smoke-test a running matrix-runtime instance.
set -euo pipefail
BASE="${MATRIX_RUNTIME_BASE:-http://localhost:8080}"
START_CMD="${START_CMD:-npx -y @modelcontextprotocol/server-filesystem /tmp}"
say() { printf "\n==> %s\n" "$1"; }
say "Health"
curl -fsS "$BASE/v1/health"; echo
say "Capabilities"
curl -fsS "$BASE/v1/capabilities"; echo
say "Create mcp.test job"
JOB=$(curl -fsS -X POST "$BASE/v1/jobs" \
-H "Content-Type: application/json" \
-d "{\"type\":\"mcp.test\",\"ttl_seconds\":120,\"payload\":{\"runtime\":\"node\",\"transport\":\"stdio\",\"start_command\":\"$START_CMD\"}}")
echo "$JOB"
JOB_ID=$(printf '%s' "$JOB" | sed -n 's/.*"job_id":"\([^"]*\)".*/\1/p')
if [[ -z "$JOB_ID" ]]; then
echo "failed to create job" >&2; exit 1
fi
say "Stream events for up to 8s (live lifecycle)"
timeout 8 curl -sN "$BASE/v1/jobs/$JOB_ID/events" || true
say "Wait for the sandbox to become ready (up to 90s)"
for _ in $(seq 1 90); do
SNAP=$(curl -fsS "$BASE/v1/jobs/$JOB_ID")
STATUS=$(printf '%s' "$SNAP" | sed -n 's/.*"status":"\([^"]*\)".*/\1/p')
case "$STATUS" in
error) echo "job errored: $SNAP" >&2; exit 1 ;;
esac
# The mcp.test result is populated with the tool list once ready.
if printf '%s' "$SNAP" | grep -q '"tools"'; then
echo " sandbox ready (tools listed)"
break
fi
sleep 1
done
say "Job status"
curl -fsS "$BASE/v1/jobs/$JOB_ID"; echo
say "Cancel job"
curl -fsS -X DELETE "$BASE/v1/jobs/$JOB_ID"; echo
say "model.inspect job"
curl -fsS -X POST "$BASE/v1/jobs" \
-H "Content-Type: application/json" \
-d '{"type":"model.inspect","payload":{"model":"hf:Qwen/Qwen2.5-7B-Instruct","revision":"main"}}'; echo
echo
echo "Smoke test complete."