Skip to main content
Glama
smoke_test.sh5.54 kB
#!/bin/bash # Smoke Test Script for MCP KYC Server # Quick validation tests for production deployment set -e echo "=========================================" echo "MCP KYC Server Smoke Tests" echo "=========================================" echo "" # Colors GREEN='\033[0;32m' RED='\033[0;31m' NC='\033[0m' # Configuration MCP_SERVER_URL="${MCP_SERVER_URL:-http://localhost:8000}" REDIS_HOST="${REDIS_HOST:-localhost}" REDIS_PORT="${REDIS_PORT:-6379}" MAX_RESPONSE_TIME=5000 # milliseconds # Test counter TESTS_PASSED=0 TESTS_FAILED=0 # Function to run test run_test() { local test_name="$1" local test_command="$2" echo -n "Testing: $test_name... " if eval "$test_command" > /dev/null 2>&1; then echo -e "${GREEN}PASS${NC}" ((TESTS_PASSED++)) return 0 else echo -e "${RED}FAIL${NC}" ((TESTS_FAILED++)) return 1 fi } # Function to measure response time measure_response_time() { local url="$1" local start=$(date +%s%3N) curl -s -o /dev/null -w "%{http_code}" "$url" > /dev/null 2>&1 local end=$(date +%s%3N) echo $((end - start)) } echo "1. Health Checks" echo "----------------" # Test 1: Server is reachable run_test "Server reachable" "curl -f -s $MCP_SERVER_URL/health" # Test 2: Redis is reachable run_test "Redis reachable" "redis-cli -h $REDIS_HOST -p $REDIS_PORT ping" # Test 3: Server responds to root endpoint run_test "Root endpoint responds" "curl -f -s $MCP_SERVER_URL/" echo "" echo "2. Tool Availability" echo "--------------------" # Test 4: List tools endpoint run_test "List tools endpoint" "curl -f -s $MCP_SERVER_URL/tools" # Test 5: Tool metadata available run_test "Tool metadata exists" "test -f metadata/tools/pan_verification.json" echo "" echo "3. Basic Functionality" echo "----------------------" # Test 6: PAN verification tool callable (mock test) echo -n "Testing: PAN verification tool... " if [ -f "src/tools/pan_verification.py" ]; then echo -e "${GREEN}PASS${NC}" ((TESTS_PASSED++)) else echo -e "${RED}FAIL${NC}" ((TESTS_FAILED++)) fi # Test 7: PAN-Aadhaar link tool callable (mock test) echo -n "Testing: PAN-Aadhaar link tool... " if [ -f "src/tools/pan_aadhaar_link.py" ]; then echo -e "${GREEN}PASS${NC}" ((TESTS_PASSED++)) else echo -e "${RED}FAIL${NC}" ((TESTS_FAILED++)) fi echo "" echo "4. Performance Checks" echo "---------------------" # Test 8: Response time check echo -n "Testing: Response time... " RESPONSE_TIME=$(measure_response_time "$MCP_SERVER_URL/health") if [ "$RESPONSE_TIME" -lt "$MAX_RESPONSE_TIME" ]; then echo -e "${GREEN}PASS${NC} (${RESPONSE_TIME}ms)" ((TESTS_PASSED++)) else echo -e "${RED}FAIL${NC} (${RESPONSE_TIME}ms > ${MAX_RESPONSE_TIME}ms)" ((TESTS_FAILED++)) fi # Test 9: Redis response time echo -n "Testing: Redis response time... " REDIS_START=$(date +%s%3N) redis-cli -h $REDIS_HOST -p $REDIS_PORT ping > /dev/null 2>&1 REDIS_END=$(date +%s%3N) REDIS_TIME=$((REDIS_END - REDIS_START)) if [ "$REDIS_TIME" -lt 100 ]; then echo -e "${GREEN}PASS${NC} (${REDIS_TIME}ms)" ((TESTS_PASSED++)) else echo -e "${RED}FAIL${NC} (${REDIS_TIME}ms > 100ms)" ((TESTS_FAILED++)) fi echo "" echo "5. Configuration Checks" echo "-----------------------" # Test 10: Environment variables set echo -n "Testing: Environment variables... " if [ -f ".env" ] && grep -q "KYC_API_KEY=" .env; then echo -e "${GREEN}PASS${NC}" ((TESTS_PASSED++)) else echo -e "${RED}FAIL${NC}" ((TESTS_FAILED++)) fi # Test 11: Required files exist echo -n "Testing: Required files... " REQUIRED_FILES=("src/main.py" "config/settings.py" "requirements.txt") ALL_EXIST=true for file in "${REQUIRED_FILES[@]}"; do if [ ! -f "$file" ]; then ALL_EXIST=false break fi done if $ALL_EXIST; then echo -e "${GREEN}PASS${NC}" ((TESTS_PASSED++)) else echo -e "${RED}FAIL${NC}" ((TESTS_FAILED++)) fi echo "" echo "6. Security Checks" echo "------------------" # Test 12: No sensitive data in logs echo -n "Testing: Log file security... " if [ -d "/var/log/kyc-mcp" ]; then if ! grep -r "password\|secret\|api_key" /var/log/kyc-mcp/*.log 2>/dev/null | grep -v "REDACTED"; then echo -e "${GREEN}PASS${NC}" ((TESTS_PASSED++)) else echo -e "${RED}FAIL${NC} (Sensitive data found in logs)" ((TESTS_FAILED++)) fi else echo -e "${GREEN}PASS${NC} (No logs to check)" ((TESTS_PASSED++)) fi # Test 13: File permissions echo -n "Testing: File permissions... " if [ -f ".env" ]; then PERMS=$(stat -c %a .env 2>/dev/null || stat -f %A .env 2>/dev/null) if [ "$PERMS" = "600" ] || [ "$PERMS" = "400" ]; then echo -e "${GREEN}PASS${NC}" ((TESTS_PASSED++)) else echo -e "${RED}FAIL${NC} (.env permissions: $PERMS)" ((TESTS_FAILED++)) fi else echo -e "${GREEN}PASS${NC} (No .env file)" ((TESTS_PASSED++)) fi echo "" echo "=========================================" echo "Smoke Test Summary" echo "=========================================" echo "Total Tests: $((TESTS_PASSED + TESTS_FAILED))" echo -e "${GREEN}Passed: $TESTS_PASSED${NC}" echo -e "${RED}Failed: $TESTS_FAILED${NC}" echo "" if [ $TESTS_FAILED -eq 0 ]; then echo -e "${GREEN}✓ All smoke tests passed!${NC}" echo "Server is ready for production traffic." exit 0 else echo -e "${RED}✗ Some smoke tests failed.${NC}" echo "Please investigate before deploying to production." 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/CTD-Techs/CTD-MCP'

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