AnsysLink/test/test_ansys_session.py

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!")