REFACTOR - Database logic
This commit is contained in:
151
test_docker_simple.py
Normal file
151
test_docker_simple.py
Normal file
@@ -0,0 +1,151 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Simple Docker Services Test
|
||||
Tests that docker-compose can start services without external dependencies
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
def run_command(cmd, timeout=300):
|
||||
"""Run a shell command with timeout"""
|
||||
try:
|
||||
print(f"Running: {cmd}")
|
||||
result = subprocess.run(
|
||||
cmd,
|
||||
shell=True,
|
||||
timeout=timeout,
|
||||
capture_output=True,
|
||||
text=True
|
||||
)
|
||||
return result
|
||||
except subprocess.TimeoutExpired:
|
||||
print(f"Command timed out after {timeout} seconds")
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"Error running command: {e}")
|
||||
return None
|
||||
|
||||
def test_infrastructure_services():
|
||||
"""Test starting just infrastructure services"""
|
||||
print("🏗️ Testing infrastructure services...")
|
||||
|
||||
try:
|
||||
# Stop any existing containers
|
||||
print("Cleaning up existing containers...")
|
||||
run_command("docker compose down", timeout=120)
|
||||
|
||||
# Start only infrastructure services
|
||||
infra_services = "redis rabbitmq auth-db data-db"
|
||||
cmd = f"docker compose up -d {infra_services}"
|
||||
result = run_command(cmd, timeout=300)
|
||||
|
||||
if result and result.returncode == 0:
|
||||
print("✅ Infrastructure services started")
|
||||
|
||||
# Wait a bit for services to initialize
|
||||
print("Waiting 30 seconds for services to initialize...")
|
||||
time.sleep(30)
|
||||
|
||||
# Check container status
|
||||
status_result = run_command("docker compose ps", timeout=30)
|
||||
if status_result and status_result.stdout:
|
||||
print("Container status:")
|
||||
print(status_result.stdout)
|
||||
|
||||
# Try to start one application service
|
||||
print("Testing application service startup...")
|
||||
app_result = run_command("docker compose up -d auth-service", timeout=180)
|
||||
|
||||
if app_result and app_result.returncode == 0:
|
||||
print("✅ Auth service started successfully")
|
||||
|
||||
# Wait for it to initialize
|
||||
time.sleep(20)
|
||||
|
||||
# Check health with curl
|
||||
health_result = run_command("curl -f http://localhost:8001/health", timeout=10)
|
||||
if health_result and health_result.returncode == 0:
|
||||
print("✅ Auth service is healthy!")
|
||||
return True
|
||||
else:
|
||||
print("⚠️ Auth service started but health check failed")
|
||||
# Show logs for debugging
|
||||
logs_result = run_command("docker compose logs --tail=20 auth-service", timeout=30)
|
||||
if logs_result and logs_result.stdout:
|
||||
print("Auth service logs:")
|
||||
print(logs_result.stdout)
|
||||
return False
|
||||
else:
|
||||
print("❌ Failed to start auth service")
|
||||
if app_result and app_result.stderr:
|
||||
print(f"Error: {app_result.stderr}")
|
||||
return False
|
||||
else:
|
||||
print("❌ Failed to start infrastructure services")
|
||||
if result and result.stderr:
|
||||
print(f"Error: {result.stderr}")
|
||||
return False
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Error during infrastructure test: {e}")
|
||||
return False
|
||||
|
||||
def show_final_status():
|
||||
"""Show final container status"""
|
||||
print("\n📊 Final container status:")
|
||||
result = run_command("docker compose ps", timeout=30)
|
||||
if result and result.stdout:
|
||||
print(result.stdout)
|
||||
|
||||
def cleanup():
|
||||
"""Clean up containers"""
|
||||
print("\n🧹 Cleaning up containers...")
|
||||
run_command("docker compose down", timeout=180)
|
||||
print("✅ Cleanup completed")
|
||||
|
||||
def main():
|
||||
"""Main test function"""
|
||||
print("🔧 SIMPLE DOCKER SERVICES TEST")
|
||||
print("=" * 40)
|
||||
|
||||
base_path = Path(__file__).parent
|
||||
os.chdir(base_path)
|
||||
|
||||
success = False
|
||||
|
||||
try:
|
||||
# Test infrastructure services
|
||||
success = test_infrastructure_services()
|
||||
|
||||
# Show current status
|
||||
show_final_status()
|
||||
|
||||
except KeyboardInterrupt:
|
||||
print("\n⚠️ Test interrupted by user")
|
||||
except Exception as e:
|
||||
print(f"\n❌ Unexpected error: {e}")
|
||||
finally:
|
||||
# Always cleanup
|
||||
cleanup()
|
||||
|
||||
# Final result
|
||||
print("\n" + "=" * 40)
|
||||
if success:
|
||||
print("🎉 DOCKER SERVICES TEST PASSED!")
|
||||
print("✅ Services can start and respond to health checks")
|
||||
print("💡 Your docker-compose setup is working correctly")
|
||||
print("🚀 You can now run: docker compose up -d")
|
||||
return 0
|
||||
else:
|
||||
print("❌ DOCKER SERVICES TEST FAILED")
|
||||
print("⚠️ Some issues were found with service startup")
|
||||
print("💡 Check the logs above for details")
|
||||
return 1
|
||||
|
||||
if __name__ == "__main__":
|
||||
exit_code = main()
|
||||
sys.exit(exit_code)
|
||||
Reference in New Issue
Block a user