#!/usr/bin/env python3 """ Script de test para validar las correcciones TSNet Phase 2 Prueba que los objetos hidráulicos se pueden crear sin errores de NullReference """ import requests import json import time import sys def test_mcp_connection(): """Probar conectividad básica con MCP""" try: response = requests.post( 'http://localhost:5006', json={'jsonrpc': '2.0', 'method': 'get_status', 'id': 1}, timeout=10 ) print(f"✅ MCP Connection: Status {response.status_code}") return True except Exception as e: print(f"❌ MCP Connection failed: {e}") return False def test_create_hydraulic_objects(): """Probar creación de objetos hidráulicos""" objects_to_test = [ {'type': 'osHydTank', 'name': 'Tank Test'}, {'type': 'osHydPump', 'name': 'Pump Test'}, {'type': 'osHydPipe', 'name': 'Pipe Test'} ] success_count = 0 for obj in objects_to_test: try: response = requests.post( 'http://localhost:5006', json={ 'jsonrpc': '2.0', 'method': 'create_object', 'params': { 'type': obj['type'], 'x': 1.0 + success_count, 'y': 1.0 }, 'id': success_count + 1 }, timeout=10 ) if response.status_code == 200: result = response.json() if 'error' not in result: print(f"✅ {obj['name']} created successfully") success_count += 1 else: print(f"❌ {obj['name']} creation failed: {result.get('error', 'Unknown error')}") else: print(f"❌ {obj['name']} HTTP error: {response.status_code}") except Exception as e: print(f"❌ {obj['name']} exception: {e}") return success_count def test_tsnet_simulation(): """Probar la simulación TSNet""" try: response = requests.post( 'http://localhost:5006', json={ 'jsonrpc': '2.0', 'method': 'execute_python', 'params': { 'code': ''' try: # Test basic TSNet integration app.TestTSNetIntegrationSync() print("✅ TSNet Test Integration successful") # Test full TSNet simulation app.RunTSNetSimulationSync() print("✅ TSNet Full Simulation successful") result = "SUCCESS" except Exception as e: print(f"❌ TSNet Error: {str(e)}") result = f"ERROR: {str(e)}" ''' }, 'id': 10 }, timeout=30 ) if response.status_code == 200: result = response.json() if 'error' not in result: print("✅ TSNet simulation test completed") return True else: print(f"❌ TSNet simulation failed: {result.get('error', 'Unknown error')}") else: print(f"❌ TSNet simulation HTTP error: {response.status_code}") except Exception as e: print(f"❌ TSNet simulation exception: {e}") return False def main(): print("🔧 TSNet Phase 2 Fix Validation Test") print("=" * 50) # Test 1: MCP Connection print("\n1. Testing MCP Connection...") if not test_mcp_connection(): print("❌ Cannot proceed without MCP connection") return False # Wait for stability time.sleep(2) # Test 2: Object Creation print("\n2. Testing Hydraulic Object Creation...") created_objects = test_create_hydraulic_objects() print(f"Created {created_objects}/3 objects successfully") # Test 3: TSNet Simulation print("\n3. Testing TSNet Simulation...") simulation_success = test_tsnet_simulation() # Summary print("\n" + "=" * 50) print("🎯 TEST SUMMARY:") print(f" • MCP Connection: ✅") print(f" • Objects Created: {created_objects}/3") print(f" • TSNet Simulation: {'✅' if simulation_success else '❌'}") if created_objects == 3 and simulation_success: print("\n🎉 ALL TESTS PASSED - TSNet Phase 2 fixes are working!") return True else: print("\n⚠️ Some tests failed - please check the output above") return False if __name__ == "__main__": success = main() sys.exit(0 if success else 1)