""" Local test - Verifica se o sistema funciona antes de provisionar máquina. """ import sys import logging logging.basicConfig(level=logging.INFO, format='%(message)s') logger = logging.getLogger(__name__) def test_imports(): """Test if all imports work""" logger.info("=" * 60) logger.info("TEST: Imports") logger.info("=" * 60) try: logger.info("Importing ensemble_tts...") from ensemble_tts import EnsembleAnnotator logger.info("✅ Import successful") return True except Exception as e: logger.error(f"❌ Import failed: {e}") import traceback traceback.print_exc() return False def test_create_annotator(): """Test creating annotator without loading models""" logger.info("\n" + "=" * 60) logger.info("TEST: Create Annotator (no model loading)") logger.info("=" * 60) try: from ensemble_tts import EnsembleAnnotator logger.info("Creating annotator in quick mode...") annotator = EnsembleAnnotator( mode='quick', device='cpu', enable_events=False ) logger.info(f" Mode: {annotator.mode}") logger.info(f" Device: {annotator.device}") logger.info(f" Voting: {annotator.voting_strategy}") logger.info("✅ Annotator created successfully") return annotator, True except Exception as e: logger.error(f"❌ Annotator creation failed: {e}") import traceback traceback.print_exc() return None, False def test_model_structure(): """Test model structure without loading weights""" logger.info("\n" + "=" * 60) logger.info("TEST: Model Structure") logger.info("=" * 60) try: from ensemble_tts.models.emotion import EmotionEnsemble logger.info("Creating emotion ensemble...") ensemble = EmotionEnsemble(mode='quick', device='cpu') logger.info(f" Number of models: {len(ensemble.models)}") for model in ensemble.models: logger.info(f" - {model.name} (weight: {model.weight})") logger.info("✅ Model structure correct") return True except Exception as e: logger.error(f"❌ Model structure test failed: {e}") import traceback traceback.print_exc() return False def main(): """Run local tests""" logger.info("\n" + "=" * 60) logger.info("ENSEMBLE TTS ANNOTATION - LOCAL TEST") logger.info("Testing without loading model weights") logger.info("=" * 60 + "\n") results = {} # Test 1: Imports results['imports'] = test_imports() if not results['imports']: logger.error("\n❌ Import test failed. Please install requirements:") logger.error(" pip install -r requirements.txt") return False # Test 2: Create annotator annotator, success = test_create_annotator() results['create_annotator'] = success # Test 3: Model structure results['model_structure'] = test_model_structure() # Summary logger.info("\n" + "=" * 60) logger.info("TEST SUMMARY") logger.info("=" * 60) for test_name, success in results.items(): status = "✅ PASS" if success else "❌ FAIL" logger.info(f" {test_name}: {status}") all_passed = all(results.values()) if all_passed: logger.info("\n" + "=" * 60) logger.info("✅ ALL LOCAL TESTS PASSED!") logger.info("=" * 60) logger.info("\nNext steps:") logger.info("1. Run full test (downloads models):") logger.info(" python scripts/test/test_quick.py") logger.info("\n2. Or test on spot instance:") logger.info(" bash scripts/test/launch_spot_test.sh") logger.info("") else: logger.error("\n" + "=" * 60) logger.error("❌ SOME TESTS FAILED") logger.error("=" * 60) logger.error("\nPlease check errors above and fix before proceeding.") logger.error("") return all_passed if __name__ == "__main__": success = main() sys.exit(0 if success else 1)