Spaces:
Running
Running
#!/usr/bin/env python3 | |
""" | |
Test script to verify thumbnail conversion works locally. | |
This script can be run to test the thumbnail conversion logic without affecting production data. | |
""" | |
import os | |
import sys | |
import logging | |
from typing import List | |
# Add the current directory to Python path | |
sys.path.append(os.path.dirname(os.path.abspath(__file__))) | |
from app.database import SessionLocal | |
from app.models import Images | |
from app.services.thumbnail_service import ImageProcessingService | |
# Configure logging | |
logging.basicConfig( | |
level=logging.INFO, | |
format='%(asctime)s - %(levelname)s - %(message)s' | |
) | |
logger = logging.getLogger(__name__) | |
def test_thumbnail_service(): | |
"""Test the thumbnail service with sample data""" | |
logger.info("Testing thumbnail service...") | |
# Test with a sample image (you can replace this with actual test data) | |
sample_image_data = b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00\xff\xdb\x00C\x00\x08\x06\x06\x07\x06\x05\x08\x07\x07\x07\t\t\x08\n\x0c\x14\r\x0c\x0b\x0b\x0c\x19\x12\x13\x0f\x14\x1d\x1a\x1f\x1e\x1d\x1a\x1c\x1c $.\' ",#\x1c\x1c(7),01444\x1f\'9=82<.342\xff\xc0\x00\x11\x08\x00\x10\x00\x10\x01\x01\x11\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x14\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\xff\xc4\x00\x14\x10\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00\x3f\x00\xaa\xff\xd9' | |
try: | |
# Test WebP thumbnail creation | |
thumbnail_bytes, thumbnail_filename = ImageProcessingService.create_thumbnail( | |
sample_image_data, | |
"test_image.jpg" | |
) | |
if thumbnail_bytes and thumbnail_filename: | |
logger.info(f"β WebP thumbnail created successfully: {thumbnail_filename}") | |
logger.info(f" Thumbnail size: {len(thumbnail_bytes)} bytes") | |
# Check if it's actually WebP format | |
if thumbnail_bytes.startswith(b'RIFF') and thumbnail_bytes[8:12] == b'WEBP': | |
logger.info("β Thumbnail is valid WebP format") | |
else: | |
logger.warning("β οΈ Thumbnail doesn't appear to be WebP format") | |
else: | |
logger.error("β Failed to create WebP thumbnail") | |
return False | |
# Test WebP detail image creation | |
detail_bytes, detail_filename = ImageProcessingService.create_detail_image( | |
sample_image_data, | |
"test_image.jpg" | |
) | |
if detail_bytes and detail_filename: | |
logger.info(f"β WebP detail image created successfully: {detail_filename}") | |
logger.info(f" Detail image size: {len(detail_bytes)} bytes") | |
# Check if it's actually WebP format | |
if detail_bytes.startswith(b'RIFF') and detail_bytes[8:12] == b'WEBP': | |
logger.info("β Detail image is valid WebP format") | |
else: | |
logger.warning("β οΈ Detail image doesn't appear to be WebP format") | |
else: | |
logger.error("β Failed to create WebP detail image") | |
return False | |
return True | |
except Exception as e: | |
logger.error(f"β Error testing thumbnail service: {e}") | |
return False | |
def test_database_connection(): | |
"""Test database connection and count images""" | |
logger.info("Testing database connection...") | |
try: | |
db = SessionLocal() | |
image_count = db.query(Images).count() | |
logger.info(f"β Database connection successful. Found {image_count} images.") | |
db.close() | |
return True | |
except Exception as e: | |
logger.error(f"β Database connection failed: {e}") | |
return False | |
def main(): | |
"""Main test function""" | |
logger.info("Starting thumbnail conversion tests...") | |
# Test 1: Thumbnail service | |
if not test_thumbnail_service(): | |
logger.error("Thumbnail service test failed!") | |
return 1 | |
# Test 2: Database connection | |
if not test_database_connection(): | |
logger.error("Database connection test failed!") | |
return 1 | |
logger.info("β All tests passed! Thumbnail conversion should work properly.") | |
return 0 | |
if __name__ == "__main__": | |
exit_code = main() | |
sys.exit(exit_code) | |