#!/usr/bin/env python3
import os
import sys
import logging
# Set the Redis URL for testing
os.environ["REDIS_URL"] = "redis://192.168.0.200:6378"
# Configure logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("test")
def test_imports():
"""Test that all required imports work"""
try:
import numpy as np
import redis
from sentence_transformers import SentenceTransformer
import mcp.server.stdio
import mcp.types as types
logger.info("✅ All imports successful")
return True
except ImportError as e:
logger.error(f"❌ Import error: {e}")
return False
def test_redis_connection():
"""Test Redis connection"""
try:
import redis
redis_url = os.getenv("REDIS_URL", "redis://localhost:6379")
client = redis.from_url(redis_url, decode_responses=False)
client.ping()
logger.info(f"✅ Redis connection successful: {redis_url}")
return True
except Exception as e:
logger.error(f"❌ Redis connection failed: {e}")
return False
def test_sentence_transformer():
"""Test sentence transformer model loading"""
try:
from sentence_transformers import SentenceTransformer
# Try to load a lightweight model
model = SentenceTransformer('all-MiniLM-L6-v2')
logger.info("✅ SentenceTransformer model loaded successfully")
return True
except Exception as e:
logger.error(f"❌ SentenceTransformer loading failed: {e}")
return False
def main():
"""Run all tests"""
logger.info("🧪 Testing Code Context Manager MCP Server...")
tests = [
("Imports", test_imports),
("Redis Connection", test_redis_connection),
("SentenceTransformer", test_sentence_transformer)
]
results = []
for name, test_func in tests:
logger.info(f"\n--- Testing {name} ---")
success = test_func()
results.append((name, success))
logger.info("\n🎯 Test Results:")
all_passed = True
for name, success in results:
status = "✅ PASS" if success else "❌ FAIL"
logger.info(f" {name}: {status}")
if not success:
all_passed = False
if all_passed:
logger.info("\n🎉 All tests passed! Your MCP server should work correctly.")
return 0
else:
logger.info("\n⚠️ Some tests failed. Check the errors above.")
return 1
if __name__ == "__main__":
sys.exit(main())