| """ | |
| Quick startup test to verify all components load correctly. | |
| Run this before deploying to catch configuration issues early. | |
| """ | |
| import sys | |
| from loguru import logger | |
| logger.remove() | |
| logger.add(sys.stderr, level="INFO") | |
| def test_imports(): | |
| """Test that all required modules can be imported.""" | |
| try: | |
| logger.info("Testing imports...") | |
| import gradio | |
| import openai | |
| import lancedb | |
| from pydantic_settings import BaseSettings | |
| from langdetect import detect | |
| import diskcache | |
| import pandas | |
| logger.success("✅ All imports successful") | |
| return True | |
| except ImportError as e: | |
| logger.error(f"❌ Import failed: {e}") | |
| return False | |
| def test_config(): | |
| """Test configuration loading.""" | |
| try: | |
| logger.info("Testing configuration...") | |
| from config import get_settings | |
| import os | |
| os.environ.setdefault("OPENAI_API_KEY", "test-key-for-validation") | |
| settings = get_settings() | |
| logger.info(f"LLM Model: {settings.llm_model}") | |
| logger.info(f"Embedding Model: {settings.embedding_model}") | |
| logger.info(f"Server: {settings.server_host}:{settings.server_port}") | |
| logger.success("✅ Configuration loaded successfully") | |
| return True | |
| except Exception as e: | |
| logger.error(f"❌ Config failed: {e}") | |
| return False | |
| def test_vector_store(): | |
| """Test vector store connection.""" | |
| try: | |
| logger.info("Testing vector store...") | |
| from config import get_settings | |
| from database.vector_store_client import VectorStoreClient | |
| import os | |
| os.environ.setdefault("OPENAI_API_KEY", "test-key-for-validation") | |
| settings = get_settings() | |
| client = VectorStoreClient(uri=settings.lancedb_uri) | |
| count = client.count_documents() | |
| logger.info(f"Documents in database: {count}") | |
| client.close() | |
| logger.success("✅ Vector store accessible") | |
| return True | |
| except Exception as e: | |
| logger.error(f"❌ Vector store failed: {e}") | |
| import traceback | |
| logger.error(traceback.format_exc()) | |
| return False | |
| def test_embeddings(): | |
| """Test embeddings client initialization.""" | |
| try: | |
| logger.info("Testing embeddings client...") | |
| from models.embeddings import get_embeddings_client | |
| client = get_embeddings_client() | |
| logger.info(f"Model: {client.model}") | |
| logger.info(f"Cache available: {client.cache is not None}") | |
| client.close() | |
| logger.success("✅ Embeddings client initialized") | |
| return True | |
| except Exception as e: | |
| logger.error(f"❌ Embeddings client failed: {e}") | |
| return False | |
| def test_agent(): | |
| """Test agent creation.""" | |
| try: | |
| logger.info("Testing agent creation...") | |
| from agent.a11y_agent import create_agent | |
| import os | |
| os.environ.setdefault("OPENAI_API_KEY", "test-key-for-validation") | |
| agent = create_agent() | |
| logger.info(f"Agent language: {agent.language}") | |
| logger.info(f"Agent model: {agent.model}") | |
| agent.close() | |
| logger.success("✅ Agent created successfully") | |
| return True | |
| except Exception as e: | |
| logger.error(f"❌ Agent creation failed: {e}") | |
| import traceback | |
| logger.error(traceback.format_exc()) | |
| return False | |
| def main(): | |
| """Run all tests.""" | |
| logger.info("=" * 60) | |
| logger.info("Starting Deployment Readiness Tests") | |
| logger.info("=" * 60) | |
| tests = [ | |
| ("Imports", test_imports), | |
| ("Configuration", test_config), | |
| ("Vector Store", test_vector_store), | |
| ("Embeddings", test_embeddings), | |
| ("Agent", test_agent), | |
| ] | |
| results = [] | |
| for name, test_func in tests: | |
| logger.info(f"\n--- Test: {name} ---") | |
| result = test_func() | |
| results.append((name, result)) | |
| logger.info("\n" + "=" * 60) | |
| logger.info("Test Results Summary") | |
| logger.info("=" * 60) | |
| for name, result in results: | |
| status = "✅ PASS" if result else "❌ FAIL" | |
| logger.info(f"{status} - {name}") | |
| all_passed = all(result for _, result in results) | |
| if all_passed: | |
| logger.success("\n🎉 All tests passed! Ready for deployment.") | |
| return 0 | |
| else: | |
| logger.error("\n⚠️ Some tests failed. Fix issues before deploying.") | |
| return 1 | |
| if __name__ == "__main__": | |
| sys.exit(main()) | |