131 lines
5.2 KiB
Python
131 lines
5.2 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Test ANSYS session manager functionality
|
|
"""
|
|
import sys
|
|
from pathlib import Path
|
|
import json
|
|
|
|
# Add project root to path
|
|
sys.path.insert(0, str(Path(__file__).parent.parent))
|
|
|
|
from backend.pymechanical.session_manager import ANSYSSessionManager
|
|
|
|
def test_session_manager():
|
|
"""Test ANSYS session manager functionality"""
|
|
print("Testing ANSYS Session Manager...")
|
|
|
|
# Test 1: Initialize session manager
|
|
print("\n1. Testing session manager initialization...")
|
|
session_manager = ANSYSSessionManager(simulation_mode=True)
|
|
print(f"✓ Session manager initialized")
|
|
|
|
# Test 2: Get initial session info
|
|
print("\n2. Testing initial session info...")
|
|
session_info = session_manager.get_session_info()
|
|
print(f"✓ Initial session info: {json.dumps(session_info, indent=2, default=str)}")
|
|
|
|
# Test 3: Start session
|
|
print("\n3. Testing session startup...")
|
|
success = session_manager.start_session(batch_mode=True)
|
|
print(f"✓ Session startup: {'Success' if success else 'Failed'}")
|
|
|
|
session_info = session_manager.get_session_info()
|
|
print(f"✓ Session info after startup: {json.dumps(session_info, indent=2, default=str)}")
|
|
|
|
# Test 4: Import geometry
|
|
print("\n4. Testing geometry import...")
|
|
blade_file = Path("resource/blade.step")
|
|
if blade_file.exists():
|
|
success = session_manager.import_geometry(str(blade_file))
|
|
print(f"✓ Geometry import: {'Success' if success else 'Failed'}")
|
|
|
|
session_info = session_manager.get_session_info()
|
|
print(f"✓ Session info after import: {json.dumps(session_info, indent=2, default=str)}")
|
|
else:
|
|
print("✗ Test file resource/blade.step not found, skipping geometry import test")
|
|
|
|
# Test 5: Validate geometry
|
|
print("\n5. Testing geometry validation...")
|
|
validation_result = session_manager.validate_geometry()
|
|
print(f"✓ Geometry validation: {json.dumps(validation_result, indent=2, default=str)}")
|
|
|
|
# Test 6: Test invalid geometry import
|
|
print("\n6. Testing invalid geometry import...")
|
|
success = session_manager.import_geometry("nonexistent_file.step")
|
|
print(f"✓ Invalid geometry import: {'Failed as expected' if not success else 'Unexpected success'}")
|
|
|
|
# Test 7: Close session
|
|
print("\n7. Testing session close...")
|
|
success = session_manager.close_session()
|
|
print(f"✓ Session close: {'Success' if success else 'Failed'}")
|
|
|
|
session_info = session_manager.get_session_info()
|
|
print(f"✓ Session info after close: {json.dumps(session_info, indent=2, default=str)}")
|
|
|
|
# Test 8: Cleanup
|
|
print("\n8. Testing cleanup...")
|
|
success = session_manager.cleanup_temp_files()
|
|
print(f"✓ Cleanup: {'Success' if success else 'Failed'}")
|
|
|
|
def test_context_manager():
|
|
"""Test context manager functionality"""
|
|
print("\n" + "="*50)
|
|
print("Testing Context Manager...")
|
|
|
|
blade_file = Path("resource/blade.step")
|
|
if not blade_file.exists():
|
|
print("✗ Test file resource/blade.step not found, skipping context manager test")
|
|
return
|
|
|
|
try:
|
|
with ANSYSSessionManager(simulation_mode=True) as session:
|
|
print("✓ Session started via context manager")
|
|
|
|
session_info = session.get_session_info()
|
|
print(f"✓ Session active: {session_info['is_active']}")
|
|
|
|
success = session.import_geometry(str(blade_file))
|
|
print(f"✓ Geometry import in context: {'Success' if success else 'Failed'}")
|
|
|
|
print("✓ Context manager completed (session should be closed automatically)")
|
|
|
|
# Verify session is closed
|
|
session_info = session.get_session_info()
|
|
print(f"✓ Session active after context exit: {session_info['is_active']}")
|
|
|
|
except Exception as e:
|
|
print(f"✗ Context manager test failed: {str(e)}")
|
|
|
|
def test_error_scenarios():
|
|
"""Test error handling scenarios"""
|
|
print("\n" + "="*50)
|
|
print("Testing Error Scenarios...")
|
|
|
|
session_manager = ANSYSSessionManager(simulation_mode=True)
|
|
|
|
# Test 1: Import geometry without session
|
|
print("\n1. Testing geometry import without active session...")
|
|
success = session_manager.import_geometry("test.step")
|
|
print(f"✓ Import without session: {'Failed as expected' if not success else 'Unexpected success'}")
|
|
|
|
# Test 2: Close non-existent session
|
|
print("\n2. Testing close of non-existent session...")
|
|
success = session_manager.close_session()
|
|
print(f"✓ Close non-existent session: {'Success' if success else 'Failed'}")
|
|
|
|
# Test 3: Validate geometry without import
|
|
print("\n3. Testing geometry validation without import...")
|
|
validation_result = session_manager.validate_geometry()
|
|
print(f"✓ Validation without geometry: {'Failed as expected' if not validation_result['valid'] else 'Unexpected success'}")
|
|
|
|
if __name__ == '__main__':
|
|
print("CAE Mesh Generator ANSYS Session Manager Test")
|
|
print("=" * 60)
|
|
|
|
test_session_manager()
|
|
test_context_manager()
|
|
test_error_scenarios()
|
|
|
|
print("\n" + "="*60)
|
|
print("✓ All ANSYS session manager tests completed!") |