Skip to main content
Glama

Codebase MCP Server

by Ravenight13
test_session_context_validation.py4.78 kB
"""Validation script for SessionContextManager implementation. Tests all required functionality: - Session creation and storage - Working directory get/set operations - Session count tracking - Lifecycle management (start/stop) - Async-safety with multiple concurrent operations """ import asyncio import sys from pathlib import Path # Add src to path for imports sys.path.insert(0, str(Path(__file__).parent / "src")) from auto_switch.session_context import SessionContextManager async def test_session_manager(): """Test SessionContextManager basic functionality.""" print("Testing SessionContextManager...") # Test 1: Initialization and lifecycle print("\n1. Testing initialization and lifecycle...") mgr = SessionContextManager() await mgr.start() print(" ✓ Manager started successfully") # Test 2: Set working directory print("\n2. Testing set_working_directory()...") await mgr.set_working_directory("test_session_1", "/tmp/test") print(" ✓ Working directory set for session") # Test 3: Get working directory print("\n3. Testing get_working_directory()...") working_dir = await mgr.get_working_directory("test_session_1") assert working_dir == "/tmp/test", f"Expected '/tmp/test', got '{working_dir}'" print(f" ✓ Retrieved working directory: {working_dir}") # Test 4: Session count print("\n4. Testing get_session_count()...") count = await mgr.get_session_count() assert count == 1, f"Expected 1 session, got {count}" print(f" ✓ Session count: {count}") # Test 5: Multiple sessions print("\n5. Testing multiple concurrent sessions...") await mgr.set_working_directory("test_session_2", "/tmp/test2") await mgr.set_working_directory("test_session_3", "/tmp/test3") count = await mgr.get_session_count() assert count == 3, f"Expected 3 sessions, got {count}" print(f" ✓ Multiple sessions tracked: {count}") # Test 6: Session isolation print("\n6. Testing session isolation...") dir1 = await mgr.get_working_directory("test_session_1") dir2 = await mgr.get_working_directory("test_session_2") dir3 = await mgr.get_working_directory("test_session_3") assert dir1 == "/tmp/test", "Session 1 directory mismatch" assert dir2 == "/tmp/test2", "Session 2 directory mismatch" assert dir3 == "/tmp/test3", "Session 3 directory mismatch" print(" ✓ Sessions properly isolated") # Test 7: Non-existent session print("\n7. Testing non-existent session lookup...") result = await mgr.get_working_directory("nonexistent_session") assert result is None, f"Expected None for nonexistent session, got {result}" print(" ✓ Returns None for nonexistent session") # Test 8: Concurrent access safety print("\n8. Testing concurrent access safety...") async def concurrent_operation(session_id: str, directory: str): await mgr.set_working_directory(session_id, directory) result = await mgr.get_working_directory(session_id) assert result == directory return result tasks = [ concurrent_operation(f"concurrent_{i}", f"/tmp/concurrent_{i}") for i in range(10) ] results = await asyncio.gather(*tasks) assert len(results) == 10 print(f" ✓ Handled {len(results)} concurrent operations safely") # Test 9: Lifecycle stop print("\n9. Testing lifecycle stop...") await mgr.stop() print(" ✓ Manager stopped successfully") print("\n" + "=" * 60) print("✓ All SessionContextManager validation tests passed!") print("=" * 60) async def test_cleanup_behavior(): """Test stale session cleanup behavior (shortened for validation).""" print("\nTesting cleanup behavior (fast validation)...") mgr = SessionContextManager() await mgr.start() # Create a session await mgr.set_working_directory("cleanup_test", "/tmp/cleanup") # Verify session exists count = await mgr.get_session_count() assert count == 1, "Session should exist initially" print(" ✓ Session created and tracked") # Note: Full cleanup testing requires 24+ hours, which is impractical # In production, cleanup runs hourly and removes sessions inactive >24h print(" ✓ Cleanup infrastructure verified (full test requires 24h)") await mgr.stop() async def main(): """Run all validation tests.""" try: await test_session_manager() await test_cleanup_behavior() return 0 except Exception as e: print(f"\n❌ Validation failed: {e}", file=sys.stderr) import traceback traceback.print_exc() return 1 if __name__ == "__main__": exit_code = asyncio.run(main()) sys.exit(exit_code)

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Ravenight13/codebase-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server