test(smoke): bash + curl + jq script per i 6 MCP
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
# Smoke locale Cerbero_mcp
|
||||
|
||||
```bash
|
||||
# da repo root Cerbero_mcp/
|
||||
docker compose up -d
|
||||
bash tests/smoke/run.sh
|
||||
docker compose down
|
||||
```
|
||||
|
||||
Il file `run.sh` verifica:
|
||||
- `/health` di tutti i 6 MCP (atteso `200`)
|
||||
- `environment_info` dei 4 exchange (atteso shape `{environment, source, env_value, base_url, max_leverage}`)
|
||||
|
||||
Variabili di ambiente:
|
||||
- `GATEWAY` — URL base gateway (default `http://localhost:8080`)
|
||||
- `TOKEN_FILE` — path al token bearer di lettura (default `secrets/observer.token`)
|
||||
|
||||
Exit code 0 = tutto OK, 1 = uno o più check falliti.
|
||||
Executable
+66
@@ -0,0 +1,66 @@
|
||||
#!/usr/bin/env bash
|
||||
# Smoke test locale per Cerbero_mcp.
|
||||
# Presuppone: docker compose up -d già eseguito da repo root.
|
||||
# Verifica: ogni MCP risponde /health; i 4 exchange espongono environment_info.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
cd "$(dirname "$0")/../.."
|
||||
|
||||
GATEWAY="${GATEWAY:-http://localhost:8080}"
|
||||
TOKEN_FILE="${TOKEN_FILE:-secrets/observer.token}"
|
||||
|
||||
if [ ! -f "$TOKEN_FILE" ]; then
|
||||
echo "ERROR: token file $TOKEN_FILE not found" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
TOKEN="$(cat "$TOKEN_FILE")"
|
||||
fail=0
|
||||
|
||||
echo "=== /health ==="
|
||||
for svc in mcp-deribit mcp-bybit mcp-hyperliquid mcp-alpaca mcp-macro mcp-sentiment; do
|
||||
code=$(curl -s -o /dev/null -w "%{http_code}" \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
"$GATEWAY/$svc/health" || echo "000")
|
||||
if [ "$code" = "200" ]; then
|
||||
echo " $svc: OK"
|
||||
else
|
||||
echo " $svc: FAIL ($code)"
|
||||
fail=$((fail + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
echo
|
||||
echo "=== environment_info on 4 exchange MCPs ==="
|
||||
for ex in deribit bybit hyperliquid alpaca; do
|
||||
body=$(curl -s -X POST \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{}' \
|
||||
"$GATEWAY/mcp-${ex}/tools/environment_info" 2>/dev/null || echo '{}')
|
||||
|
||||
if [ -z "$body" ] || [ "$body" = "{}" ]; then
|
||||
echo " $ex: FAIL (empty body)"
|
||||
fail=$((fail + 1))
|
||||
continue
|
||||
fi
|
||||
|
||||
if echo "$body" | jq -e '.environment, .source, .base_url, .max_leverage' > /dev/null 2>&1; then
|
||||
env=$(echo "$body" | jq -r '.environment')
|
||||
src=$(echo "$body" | jq -r '.source')
|
||||
cap=$(echo "$body" | jq -r '.max_leverage')
|
||||
echo " $ex: OK (env=$env source=$src max_leverage=$cap)"
|
||||
else
|
||||
echo " $ex: FAIL (shape mismatch)"
|
||||
echo " body: $body"
|
||||
fail=$((fail + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
echo
|
||||
if [ "$fail" -gt 0 ]; then
|
||||
echo "SMOKE FAILED: $fail check(s) failed"
|
||||
exit 1
|
||||
fi
|
||||
echo "SMOKE OK"
|
||||
Reference in New Issue
Block a user