File size: 1,720 Bytes
857a91b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/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."