Atlas / tests /deployment_check.py
findEthics
Complete codebase cleanup and project structure validation
f0b765c
Raw
History Blame Contribute Delete
4.68 kB
#!/usr/bin/env python3
"""
Deployment readiness check for Atlas analytics system
"""
import asyncio
import os
import sys
from dotenv import load_dotenv
load_dotenv()
async def check_environment_variables():
"""Check if all required environment variables are set"""
print("πŸ” Environment Variables Check")
print("=" * 40)
required_vars = {
"GOOGLE_API_KEY": "Google Gemini API",
"BRAVE_API_KEY": "Brave Search API",
"MONGODB_URL": "MongoDB Atlas connection",
"MONGODB_DATABASE": "MongoDB database name"
}
all_set = True
for var, description in required_vars.items():
value = os.getenv(var)
if value:
print(f"βœ… {var}: Set ({description})")
else:
print(f"❌ {var}: Missing ({description})")
all_set = False
return all_set
async def check_database_connection():
"""Check MongoDB connection"""
print("\nπŸ—„οΈ Database Connection Check")
print("=" * 40)
try:
from analytics.database import test_connection
connected = await test_connection()
if connected:
print("βœ… MongoDB connection successful")
return True
else:
print("❌ MongoDB connection failed")
return False
except Exception as e:
print(f"❌ Database connection error: {e}")
return False
async def check_analytics_system():
"""Check analytics system functionality"""
print("\nπŸ“Š Analytics System Check")
print("=" * 40)
try:
# Test dashboard
from analytics.dashboard import get_basic_stats
stats = await get_basic_stats()
if "error" in stats:
print(f"❌ Dashboard error: {stats['error']}")
return False
else:
print("βœ… Dashboard working")
print(f" Sessions: {stats.get('total_sessions', 0)}")
print(f" Messages: {stats.get('total_messages', 0)}")
# Test collectors
from analytics.collectors import create_session
test_session = await create_session(user_agent="Deployment Test")
if test_session:
print("βœ… Session creation working")
else:
print("❌ Session creation failed")
return False
return True
except Exception as e:
print(f"❌ Analytics system error: {e}")
return False
async def check_dependencies():
"""Check if all required packages are available"""
print("\nπŸ“¦ Dependencies Check")
print("=" * 40)
required_packages = [
("fastapi", "FastAPI web framework"),
("motor", "MongoDB async driver"),
("google.generativeai", "Google Gemini API"),
("httpx", "HTTP client"),
("pydantic", "Data validation"),
("dotenv", "Environment variables")
]
all_available = True
for package, description in required_packages:
try:
__import__(package.replace("-", "_"))
print(f"βœ… {package}: Available ({description})")
except ImportError:
print(f"❌ {package}: Missing ({description})")
all_available = False
return all_available
async def main():
"""Run all deployment checks"""
print("πŸš€ Atlas Analytics Deployment Check")
print("=" * 50)
checks = [
("Environment Variables", check_environment_variables()),
("Dependencies", check_dependencies()),
("Database Connection", check_database_connection()),
("Analytics System", check_analytics_system())
]
results = []
for name, check_coro in checks:
try:
result = await check_coro
results.append((name, result))
except Exception as e:
print(f"❌ {name} check failed: {e}")
results.append((name, False))
# Summary
print("\nπŸ“‹ Deployment Readiness Summary")
print("=" * 50)
all_passed = True
for name, passed in results:
status = "βœ… PASS" if passed else "❌ FAIL"
print(f"{status} {name}")
if not passed:
all_passed = False
print("\n" + "=" * 50)
if all_passed:
print("πŸŽ‰ DEPLOYMENT READY: All checks passed!")
print(" You can deploy the Atlas analytics system.")
sys.exit(0)
else:
print("⚠️ DEPLOYMENT NOT READY: Some checks failed.")
print(" Please fix the issues above before deploying.")
sys.exit(1)
if __name__ == "__main__":
asyncio.run(main())