Spaces:
Runtime error
Runtime error
File size: 4,693 Bytes
26f8b9a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
"""
Test mesh generation locally before deployment.
Verifies the complete pipeline works end-to-end.
"""
import sys
from pathlib import Path
# Add parent directory to path
sys.path.insert(0, str(Path(__file__).parent))
from core import AssetPipeline, QUALITY_PRESETS
from utils import MemoryManager
def test_mesh_generation():
"""Test complete mesh generation pipeline."""
print("=" * 80)
print("๐งช MESH GENERATION TEST")
print("=" * 80)
print()
# Initialize
print("๐ฆ Initializing pipeline...")
memory_manager = MemoryManager()
memory_manager.setup_cuda_optimizations()
pipeline = AssetPipeline()
print(" โ
Pipeline initialized")
print()
# Test configuration
test_cases = [
{
"name": "Fast Generation",
"prompt": "medieval knight with detailed armor",
"quality": "Fast",
"expected_time": 45
},
{
"name": "Balanced Generation",
"prompt": "futuristic mech robot, game asset",
"quality": "Balanced",
"expected_time": 60
}
]
results = []
for i, test in enumerate(test_cases, 1):
print(f"๐ฏ Test {i}/{len(test_cases)}: {test['name']}")
print(f" Prompt: {test['prompt']}")
print(f" Quality: {test['quality']}")
print(f" Expected time: ~{test['expected_time']}s")
print()
try:
# Generate asset
print(" ๐ Generating...")
result = pipeline.generate(
prompt=test['prompt'],
quality=test['quality']
)
# Verify result
if result.glb_path and result.glb_path.exists():
file_size_mb = result.glb_path.stat().st_size / 1e6
print(f" โ
SUCCESS!")
print(f" ๐ Generation time: {result.metadata.generation_time_s:.1f}s")
print(f" ๐ฆ File size: {file_size_mb:.2f} MB")
print(f" ๐จ FLUX steps: {result.metadata.flux_steps}")
print(f" ๐จ Hunyuan steps: {result.metadata.hunyuan_steps}")
print(f" ๐ง Optimized: {result.metadata.optimized}")
print(f" ๐พ Cached: {result.cached}")
print(f" ๐ Output: {result.glb_path}")
results.append({
"test": test['name'],
"success": True,
"time": result.metadata.generation_time_s,
"size_mb": file_size_mb,
"cached": result.cached
})
else:
print(f" โ FAILED: No output file")
results.append({
"test": test['name'],
"success": False,
"error": "No output file"
})
except Exception as e:
print(f" โ FAILED: {e}")
results.append({
"test": test['name'],
"success": False,
"error": str(e)
})
print()
# Summary
print("=" * 80)
print("๐ TEST SUMMARY")
print("=" * 80)
print()
success_count = sum(1 for r in results if r.get('success', False))
total_count = len(results)
print(f"โ
Passed: {success_count}/{total_count}")
print(f"โ Failed: {total_count - success_count}/{total_count}")
print()
if success_count == total_count:
print("๐ ALL TESTS PASSED!")
print()
print("โจ Pipeline is ready for deployment!")
print()
print("Next steps:")
print("1. Run: .\\FINAL_DEPLOYMENT.ps1")
print("2. Wait 5-10 minutes for Space to build")
print("3. Test on HF Space with same prompts")
print()
return True
else:
print("โ ๏ธ SOME TESTS FAILED")
print()
print("Failed tests:")
for r in results:
if not r.get('success', False):
print(f" โข {r['test']}: {r.get('error', 'Unknown error')}")
print()
print("Fix errors before deployment!")
print()
return False
if __name__ == "__main__":
try:
success = test_mesh_generation()
sys.exit(0 if success else 1)
except KeyboardInterrupt:
print("\n\nโ ๏ธ Test interrupted by user")
sys.exit(1)
except Exception as e:
print(f"\n\nโ Test failed with error: {e}")
import traceback
traceback.print_exc()
sys.exit(1)
|