Skip to main content
Glama
smoke-test.sh4.11 kB
#!/bin/bash # ============================================ # Tableau MCP Server - Smoke Test # ============================================ # Quick smoke test to verify deployment # Usage: ./smoke-test.sh [staging|production] # ============================================ set -e # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # Check arguments ENVIRONMENT=${1:-staging} if [[ "$ENVIRONMENT" != "staging" && "$ENVIRONMENT" != "production" ]]; then echo -e "${RED}Usage: $0 [staging|production]${NC}" exit 1 fi SERVICE_NAME="tableau-mcp-$ENVIRONMENT" SECRET_NAME="mcp-api-key-$ENVIRONMENT" echo -e "${BLUE}============================================${NC}" echo -e "${BLUE}Smoke Test - ${ENVIRONMENT^^}${NC}" echo -e "${BLUE}============================================${NC}" echo "" # Get service URL echo "Getting service URL..." SERVICE_URL=$(gcloud run services describe $SERVICE_NAME \ --region=australia-southeast1 \ --format='value(status.url)' 2>/dev/null) if [ -z "$SERVICE_URL" ]; then echo -e "${RED}ERROR: Service $SERVICE_NAME not found${NC}" echo "Deploy first: ./deploy-$ENVIRONMENT.sh" exit 1 fi echo "Service URL: $SERVICE_URL" echo "" # Get API key echo "Getting API key..." API_KEY=$(gcloud secrets versions access latest --secret=$SECRET_NAME 2>/dev/null) if [ -z "$API_KEY" ]; then echo -e "${RED}ERROR: Secret $SECRET_NAME not found${NC}" echo "Create secrets first: ./create-secrets.sh $ENVIRONMENT" exit 1 fi echo "API key retrieved" echo "" # Run tests echo "Running smoke tests..." echo "" FAILED=0 # Test 1: Health endpoint echo -n "[1/5] Testing health endpoint... " STATUS=$(curl -s -o /dev/null -w "%{http_code}" $SERVICE_URL/health) if [ "$STATUS" -eq 200 ]; then echo -e "${GREEN}✓ PASS${NC}" else echo -e "${RED}✗ FAIL (HTTP $STATUS)${NC}" FAILED=$((FAILED + 1)) fi # Test 2: Readiness endpoint echo -n "[2/5] Testing readiness endpoint... " STATUS=$(curl -s -o /dev/null -w "%{http_code}" $SERVICE_URL/ready) if [ "$STATUS" -eq 200 ]; then echo -e "${GREEN}✓ PASS${NC}" else echo -e "${RED}✗ FAIL (HTTP $STATUS)${NC}" FAILED=$((FAILED + 1)) fi # Test 3: Liveness endpoint echo -n "[3/5] Testing liveness endpoint... " STATUS=$(curl -s -o /dev/null -w "%{http_code}" $SERVICE_URL/alive) if [ "$STATUS" -eq 200 ]; then echo -e "${GREEN}✓ PASS${NC}" else echo -e "${RED}✗ FAIL (HTTP $STATUS)${NC}" FAILED=$((FAILED + 1)) fi # Test 4: Authentication (without key, should fail) echo -n "[4/5] Testing authentication (no key)... " STATUS=$(curl -s -o /dev/null -w "%{http_code}" $SERVICE_URL/sse) if [ "$STATUS" -eq 401 ]; then echo -e "${GREEN}✓ PASS (correctly rejected)${NC}" else echo -e "${RED}✗ FAIL (HTTP $STATUS, expected 401)${NC}" FAILED=$((FAILED + 1)) fi # Test 5: Authentication (with key, should succeed) echo -n "[5/5] Testing authentication (with key)... " STATUS=$(curl -s -o /dev/null -w "%{http_code}" -H "X-API-Key: $API_KEY" $SERVICE_URL/sse) if [ "$STATUS" -eq 200 ]; then echo -e "${GREEN}✓ PASS${NC}" else echo -e "${RED}✗ FAIL (HTTP $STATUS)${NC}" FAILED=$((FAILED + 1)) fi echo "" echo "============================================" if [ $FAILED -eq 0 ]; then echo -e "${GREEN}✓ All tests passed! ($ENVIRONMENT is healthy)${NC}" echo "" echo "Service is ready to use:" echo " URL: $SERVICE_URL" echo " SSE Endpoint: $SERVICE_URL/sse" echo " API Key: $API_KEY" echo "" echo "Next steps:" echo " - Configure Cursor MCP (Phase 7)" echo " - Test all 9 MCP tools" echo " - Monitor logs: gcloud run logs tail $SERVICE_NAME --region=australia-southeast1" exit 0 else echo -e "${RED}✗ $FAILED test(s) failed${NC}" echo "" echo "Troubleshooting:" echo " - View logs: gcloud run logs read $SERVICE_NAME --region=australia-southeast1 --limit=50" echo " - Check service: gcloud run services describe $SERVICE_NAME --region=australia-southeast1" echo " - See: TEST_DEPLOYMENT.md for detailed testing guide" exit 1 fi

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/russelenriquez-agile/tableau-mcp-project'

If you have feedback or need assistance with the MCP directory API, please join our Discord server