#!/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)