152 lines
4.6 KiB
Python
152 lines
4.6 KiB
Python
#!/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)
|