#!/usr/bin/env python3 """ TSNet Phase 2 - Test Simple Verificación Test simple para verificar que las correcciones TSNet funcionan """ import requests import json import time def test_simple_tsnet(): """Test simple de funcionalidad TSNet""" try: # Test básico de conectividad response = requests.post( 'http://localhost:5006', json={ 'jsonrpc': '2.0', 'method': 'execute_python', 'params': { 'code': ''' # Test simple de TSNet Phase 2 print("=== TSNet Phase 2 Simple Test ===") try: # Test 1: Verificar que el manager existe if hasattr(app, 'tsnetSimulationManager'): print("✅ TSNetSimulationManager exists") else: print("❌ TSNetSimulationManager not found") # Test 2: Test método básico app.tsnetSimulationManager.ResetAllCalculatedValues() print("✅ ResetAllCalculatedValues works") # Test 3: Crear objetos hidráulicos y verificar que no hay NullReference from CtrEditor.ObjetosSim import osHydTank tank = osHydTank() tank.CheckData() # Esto debe inicializar el ID print(f"✅ Tank created with ID: {tank.Id.Value}") # Test 4: Registrar objeto sin crash app.tsnetSimulationManager.RegisterHydraulicObject(tank) print("✅ Object registered without NullReference") # Test 5: Validar configuraciones errors = app.tsnetSimulationManager.ValidateAllConfigurations() print(f"✅ Configuration validation completed: {len(errors)} errors") # Test 6: Test método principal sin crash app.TestTSNetIntegrationSync() print("✅ TestTSNetIntegrationSync completed") print("\\n🎉 ALL TESTS PASSED - TSNet Phase 2 corrections working!") result = "SUCCESS" except Exception as e: print(f"❌ Error: {str(e)}") import traceback print(f"Stack trace: {traceback.format_exc()}") result = f"FAILED: {str(e)}" print(f"\\nFinal result: {result}") ''' }, 'id': 1 }, timeout=30 ) if response.status_code == 200: result = response.json() if 'result' in result: print("📋 Test Output:") print("-" * 50) print(result['result']) print("-" * 50) # Verificar si el test fue exitoso if "SUCCESS" in str(result['result']): print("\n🎉 TSNet Phase 2 is working correctly!") print("✅ NullReference issues resolved") print("✅ Object registration working") print("✅ Configuration validation working") return True else: print("\n❌ Test completed but with errors") return False else: print(f"❌ MCP Error: {result.get('error', 'Unknown error')}") return False else: print(f"❌ HTTP Error: {response.status_code}") return False except Exception as e: print(f"❌ Connection Error: {e}") return False def main(): print("🧪 TSNet Phase 2 - Simple Verification Test") print("=" * 50) print(f"Testing at: {time.strftime('%Y-%m-%d %H:%M:%S')}") print() # Verificar que CtrEditor esté ejecutándose print("🔍 Checking CtrEditor status...") try: status_response = requests.post( 'http://localhost:5006', json={'jsonrpc': '2.0', 'method': 'get_ctreditor_status', 'id': 0}, timeout=5 ) if status_response.status_code == 200: status = status_response.json() if 'result' in status and status['result'].get('connection_status') == 'available': print("✅ CtrEditor is running and MCP server is responding") else: print("⚠️ CtrEditor is running but MCP may have issues") else: print("❌ Cannot reach CtrEditor MCP server") return False except Exception as e: print(f"❌ Cannot connect to CtrEditor: {e}") return False print("\n🚀 Running TSNet verification test...") success = test_simple_tsnet() print("\n" + "=" * 50) if success: print("🎉 VERIFICATION SUCCESSFUL!") print(" TSNet Phase 2 corrections are working properly") print(" The system is ready for production use") else: print("❌ VERIFICATION FAILED!") print(" Please check the output above for details") return success if __name__ == "__main__": success = main() exit(0 if success else 1)