111 lines
3.1 KiB
Python
111 lines
3.1 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Run test data creation and update scripts in sequence.
|
|
|
|
Usage:
|
|
poetry run python run_test_data.py
|
|
"""
|
|
|
|
import asyncio
|
|
import subprocess
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
|
|
def run_command(cmd: list[str], cwd: Path | None = None) -> bool:
|
|
"""Run a command and return True if successful."""
|
|
try:
|
|
result = subprocess.run(
|
|
cmd, check=True, capture_output=True, text=True, cwd=cwd
|
|
)
|
|
if result.stdout:
|
|
print(result.stdout)
|
|
return True
|
|
except subprocess.CalledProcessError as e:
|
|
print(f"Error running command: {' '.join(cmd)}")
|
|
print(f"Error: {e.stderr}")
|
|
return False
|
|
|
|
|
|
async def main():
|
|
"""Main function to run test data scripts."""
|
|
print("=" * 60)
|
|
print("Running Test Data Scripts for AutoGPT Platform")
|
|
print("=" * 60)
|
|
print()
|
|
|
|
# Get the backend directory
|
|
backend_dir = Path(__file__).parent
|
|
test_dir = backend_dir / "test"
|
|
|
|
# Check if we're in the right directory
|
|
if not (backend_dir / "pyproject.toml").exists():
|
|
print("ERROR: This script must be run from the backend directory")
|
|
sys.exit(1)
|
|
|
|
print("1. Checking database connection...")
|
|
print("-" * 40)
|
|
|
|
# Import here to ensure proper environment setup
|
|
try:
|
|
from prisma import Prisma
|
|
|
|
db = Prisma()
|
|
await db.connect()
|
|
print("✓ Database connection successful")
|
|
await db.disconnect()
|
|
except Exception as e:
|
|
print(f"✗ Database connection failed: {e}")
|
|
print("\nPlease ensure:")
|
|
print("1. The database services are running (docker compose up -d)")
|
|
print("2. The DATABASE_URL in .env is correct")
|
|
print("3. Migrations have been run (poetry run prisma migrate deploy)")
|
|
sys.exit(1)
|
|
|
|
print()
|
|
print("2. Running test data creator...")
|
|
print("-" * 40)
|
|
|
|
# Run test_data_creator.py
|
|
if run_command(["poetry", "run", "python", "test_data_creator.py"], cwd=test_dir):
|
|
print()
|
|
print("✅ Test data created successfully!")
|
|
|
|
print()
|
|
print("3. Running test data updater...")
|
|
print("-" * 40)
|
|
|
|
# Run test_data_updater.py
|
|
if run_command(
|
|
["poetry", "run", "python", "test_data_updater.py"], cwd=test_dir
|
|
):
|
|
print()
|
|
print("✅ Test data updated successfully!")
|
|
else:
|
|
print()
|
|
print("❌ Test data updater failed!")
|
|
sys.exit(1)
|
|
else:
|
|
print()
|
|
print("❌ Test data creator failed!")
|
|
sys.exit(1)
|
|
|
|
print()
|
|
print("=" * 60)
|
|
print("Test data setup completed successfully!")
|
|
print("=" * 60)
|
|
print()
|
|
print("The materialized views have been populated with test data:")
|
|
print("- mv_agent_run_counts: Agent execution statistics")
|
|
print("- mv_review_stats: Store listing review statistics")
|
|
print()
|
|
print("You can now:")
|
|
print("1. Run tests: poetry run test")
|
|
print("2. Start the backend: poetry run serve")
|
|
print("3. View data in the database")
|
|
print()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|