| | |
| | """ |
| | Script de teste simples para verificar se o Space está funcionando |
| | Não requer dependências pesadas - apenas requests |
| | """ |
| |
|
| | import requests |
| | import time |
| | import json |
| |
|
| | |
| | SPACE_URL = "https://marcosremar2-pyannote-pt-diarization.hf.space" |
| |
|
| | def test_space_online(): |
| | """Testa se o space está online""" |
| | print("🌐 Testando se o space está online...") |
| | |
| | try: |
| | response = requests.get(SPACE_URL, timeout=15) |
| | |
| | if response.status_code == 200: |
| | print("✅ Space está online e respondendo") |
| | return True |
| | else: |
| | print(f"❌ Space retornou status code: {response.status_code}") |
| | return False |
| | |
| | except requests.exceptions.Timeout: |
| | print("⏰ Timeout - Space pode estar iniciando") |
| | return False |
| | except requests.exceptions.ConnectionError: |
| | print("❌ Erro de conexão - Space pode estar offline") |
| | return False |
| | except Exception as e: |
| | print(f"❌ Erro inesperado: {e}") |
| | return False |
| |
|
| | def test_gradio_api(): |
| | """Testa se a API do Gradio está respondendo""" |
| | print("🔗 Testando API do Gradio...") |
| | |
| | try: |
| | |
| | api_url = f"{SPACE_URL}/api" |
| | response = requests.get(api_url, timeout=10) |
| | |
| | if response.status_code == 200: |
| | print("✅ API do Gradio está respondendo") |
| | return True |
| | else: |
| | print(f"❌ API retornou status: {response.status_code}") |
| | return False |
| | |
| | except Exception as e: |
| | print(f"❌ Erro na API: {e}") |
| | return False |
| |
|
| | def test_health_endpoint(): |
| | """Testa o endpoint de health check""" |
| | print("🏥 Testando health check...") |
| | |
| | try: |
| | |
| | health_url = f"{SPACE_URL}/api/predict" |
| | |
| | payload = { |
| | "data": [], |
| | "fn_index": 1 |
| | } |
| | |
| | response = requests.post( |
| | health_url, |
| | json=payload, |
| | timeout=30, |
| | headers={'Content-Type': 'application/json'} |
| | ) |
| | |
| | if response.status_code == 200: |
| | result = response.json() |
| | print("✅ Health check funcionando") |
| | |
| | |
| | if 'data' in result and len(result['data']) > 0: |
| | health_data = result['data'][0] |
| | if isinstance(health_data, str): |
| | try: |
| | health_info = json.loads(health_data) |
| | print(f" 📊 Status: {health_info.get('status', 'N/A')}") |
| | print(f" 🖥️ Device: {health_info.get('device', 'N/A')}") |
| | print(f" 🔧 GPU: {health_info.get('gpu_available', 'N/A')}") |
| | print(f" 🤖 Modelo carregado: {health_info.get('model_loaded', 'N/A')}") |
| | except: |
| | print(f" 📄 Resposta: {health_data[:100]}...") |
| | |
| | return True |
| | else: |
| | print(f"❌ Health check falhou com status: {response.status_code}") |
| | return False |
| | |
| | except Exception as e: |
| | print(f"❌ Erro no health check: {e}") |
| | return False |
| |
|
| | def test_space_logs(): |
| | """Verifica se consegue acessar informações básicas do space""" |
| | print("📋 Verificando informações do space...") |
| | |
| | try: |
| | |
| | response = requests.get(SPACE_URL, timeout=10) |
| | |
| | if response.status_code == 200: |
| | content = response.text.lower() |
| | |
| | |
| | indicators = { |
| | "gradio_running": "gradio" in content, |
| | "pyannote_mentioned": "pyannote" in content, |
| | "diarization_mentioned": "diarization" in content, |
| | "audio_upload": "audio" in content |
| | } |
| | |
| | print(" 🔍 Indicadores encontrados:") |
| | for indicator, found in indicators.items(): |
| | status = "✅" if found else "❌" |
| | print(f" {status} {indicator}") |
| | |
| | return any(indicators.values()) |
| | else: |
| | print(f"❌ Não conseguiu acessar a página: {response.status_code}") |
| | return False |
| | |
| | except Exception as e: |
| | print(f"❌ Erro ao verificar logs: {e}") |
| | return False |
| |
|
| | def wait_for_space_ready(max_wait: int = 300): |
| | """Aguarda o space ficar pronto, com timeout""" |
| | print(f"⏳ Aguardando space ficar pronto (máximo {max_wait}s)...") |
| | |
| | start_time = time.time() |
| | |
| | while time.time() - start_time < max_wait: |
| | if test_space_online(): |
| | print("✅ Space está pronto!") |
| | return True |
| | |
| | print(" ⏳ Aguardando 10 segundos...") |
| | time.sleep(10) |
| | |
| | print(f"⏰ Timeout após {max_wait}s - Space pode estar com problemas") |
| | return False |
| |
|
| | def run_basic_tests(): |
| | """Executa testes básicos de conectividade""" |
| | print("🧪 TESTE BÁSICO DO PYANNOTE SPACE") |
| | print("=" * 40) |
| | |
| | results = {} |
| | |
| | |
| | results['space_online'] = test_space_online() |
| | |
| | if not results['space_online']: |
| | print("\n⏳ Space parece estar offline, tentando aguardar...") |
| | results['space_ready'] = wait_for_space_ready(120) |
| | else: |
| | results['space_ready'] = True |
| | |
| | if results['space_ready'] or results['space_online']: |
| | |
| | results['gradio_api'] = test_gradio_api() |
| | |
| | |
| | results['health_check'] = test_health_endpoint() |
| | |
| | |
| | results['space_info'] = test_space_logs() |
| | else: |
| | results['gradio_api'] = False |
| | results['health_check'] = False |
| | results['space_info'] = False |
| | |
| | |
| | print("\n" + "=" * 40) |
| | print("📊 RESUMO DOS TESTES:") |
| | print("=" * 40) |
| | |
| | for test_name, result in results.items(): |
| | status = "✅ PASSOU" if result else "❌ FALHOU" |
| | print(f"{test_name:<15}: {status}") |
| | |
| | |
| | passed = sum(results.values()) |
| | total = len(results) |
| | |
| | print(f"\n🎯 RESULTADO: {passed}/{total} testes passaram") |
| | |
| | if passed == total: |
| | print("🎉 TODOS OS TESTES BÁSICOS PASSARAM!") |
| | print(" 💡 O space parece estar funcionando corretamente") |
| | return 0 |
| | elif passed >= total // 2: |
| | print("⚠️ ALGUNS TESTES FALHARAM") |
| | print(" 💡 O space pode estar iniciando ou com problemas menores") |
| | return 1 |
| | else: |
| | print("🚨 MUITOS TESTES FALHARAM") |
| | print(" 💡 O space provavelmente tem problemas ou está offline") |
| | return 2 |
| |
|
| | if __name__ == "__main__": |
| | try: |
| | exit_code = run_basic_tests() |
| | |
| | print(f"\n📝 PRÓXIMOS PASSOS:") |
| | if exit_code == 0: |
| | print(" ✅ Space funcionando - pode testar upload de áudio") |
| | print(" 🔗 Acesse: https://marcosremar2-pyannote-pt-diarization.hf.space") |
| | elif exit_code == 1: |
| | print(" ⏳ Aguarde alguns minutos e teste novamente") |
| | print(" 🔧 Verifique se o token HUGGINGFACE_TOKEN foi configurado") |
| | else: |
| | print(" 🔧 Verifique os logs do space no Hugging Face") |
| | print(" 🔑 Confirme se o token foi configurado corretamente") |
| | |
| | exit(exit_code) |
| | |
| | except KeyboardInterrupt: |
| | print("\n⛔ Teste interrompido pelo usuário") |
| | exit(130) |
| | except Exception as e: |
| | print(f"\n💥 Erro inesperado: {e}") |
| | exit(1) |