Skip to main content
Glama

MCP Agent Tracker

by Big0290
test_session_factory_fix.pyโ€ข9.68 kB
#!/usr/bin/env python3 """ Test Session Factory Fix This script tests if the session factory fix resolved the "Class is not mapped" issue. """ import sys from datetime import datetime def test_session_factory(): """Test if the session factory creates sessions that recognize mapped classes.""" print("=== TESTING SESSION FACTORY FIX ===\n") try: # Clear any cached imports if 'models_unified' in sys.modules: del sys.modules['models_unified'] print("โœ… Cleared cached imports") # Import the fixed version from models_unified import UnifiedSessionFactory, UnifiedInteraction, UnifiedSession print("โœ… Models imported successfully") # Create session factory session_factory = UnifiedSessionFactory() print("โœ… Session factory created") # Create a session session = session_factory() print(f"โœ… Session created: {type(session).__name__}") # Test if session recognizes mapped classes try: # Test querying interactions interactions_count = session.query(UnifiedInteraction).count() print(f"โœ… Interactions query successful: {interactions_count}") # Test querying sessions sessions_count = session.query(UnifiedSession).count() print(f"โœ… Sessions query successful: {sessions_count}") print("๐ŸŽ‰ Session factory fix is working!") return True except Exception as e: print(f"โŒ Query still failed: {e}") return False except Exception as e: print(f"โŒ Session factory test failed: {e}") return False def test_database_operations(): """Test if database operations work with the fixed session factory.""" print("\n=== TESTING DATABASE OPERATIONS ===\n") try: from models_unified import UnifiedSessionFactory, UnifiedInteraction session_factory = UnifiedSessionFactory() print("โœ… Session factory retrieved") with session_factory() as session: print(f"โœ… Session active: {type(session).__name__}") # Test creating a real interaction try: test_interaction = UnifiedInteraction( interaction_type="session_factory_test", client_request="Test request after session factory fix", agent_response="Test response after session factory fix", timestamp=datetime.now(), status="success", metadata={"test": True, "session_factory_fixed": True, "verified": True} ) print("โœ… Test interaction created") # Add to session session.add(test_interaction) print("โœ… Test interaction added to session") # Commit to database session.commit() print("โœ… Test interaction committed to database") # Verify it was stored stored_count = session.query(UnifiedInteraction).count() print(f"โœ… Total interactions in database: {stored_count}") # Look for our test interaction stored_interaction = session.query(UnifiedInteraction).filter_by( interaction_type="session_factory_test" ).first() if stored_interaction: print(f"โœ… Test interaction found in database") print(f" ID: {stored_interaction.id}") print(f" Type: {stored_interaction.interaction_type}") print(f" Timestamp: {stored_interaction.timestamp}") print("๐ŸŽ‰ DATABASE OPERATIONS ARE WORKING!") return True else: print("โŒ Test interaction not found in database") return False except Exception as e: print(f"โŒ Database operations failed: {e}") return False except Exception as e: print(f"โŒ Database operations test failed: {e}") return False def test_interaction_logging(): """Test if interaction logging works with the fixed session factory.""" print("\n=== TESTING INTERACTION LOGGING ===\n") try: from interaction_logger import InteractionLogger logger = InteractionLogger() print("โœ… InteractionLogger created") # Test logging a real interaction print("๐Ÿ”„ Testing interaction logging...") result = logger.log_interaction( interaction_type="logger_session_factory_test", client_request="Test request with fixed session factory", agent_response="Test response with fixed session factory", status="success", metadata={"test": True, "session_factory_fixed": True, "logger_test": True} ) if result: print("โœ… Interaction logged successfully") # Verify it's in the database try: from models_unified import UnifiedSessionFactory, UnifiedInteraction session_factory = UnifiedSessionFactory() with session_factory() as session: count = session.query(UnifiedInteraction).count() print(f" Total interactions in database: {count}") if count > 0: print("โœ… Interactions are now being stored in real database!") # Show the real interaction real_interaction = session.query(UnifiedInteraction).filter_by( interaction_type="logger_session_factory_test" ).first() if real_interaction: print(f" Real interaction ID: {real_interaction.id}") print(f" Real interaction timestamp: {real_interaction.timestamp}") print("๐ŸŽ‰ INTERACTION LOGGING WITH FIXED SESSION FACTORY IS WORKING!") return True else: print("โŒ Real interaction not found in database") return False else: print("โŒ Still no interactions in real database") return False except Exception as e: print(f" โŒ Database verification failed: {e}") return False else: print("โŒ Interaction logging failed") return False except Exception as e: print(f"โŒ Interaction logging test failed: {e}") return False def main(): """Main test function.""" print("๐Ÿงช TESTING SESSION FACTORY FIX\n") print("This script will test if the session factory fix resolved the mapping issue.\n") # Test all components tests = [ ("Session Factory", test_session_factory), ("Database Operations", test_database_operations), ("Interaction Logging", test_interaction_logging) ] success_count = 0 for name, test_func in tests: try: print(f"๐Ÿงช Running: {name}") result = test_func() if result: success_count += 1 print(f" โœ… {name} passed") else: print(f" โŒ {name} failed") except Exception as e: print(f" โŒ {name} failed with error: {e}") print(f"\n๐Ÿ“Š Test Results: {success_count}/{len(tests)} tests passed") if success_count == len(tests): print("\n๐ŸŽ‰ COMPLETE SUCCESS!") print(" โ€ข Session factory working") print(" โ€ข Database operations working") print(" โ€ข Interaction logging working") print("\n๐Ÿš€ **Your interaction tracking system is now fully functional!**") print(" โ€ข Interactions will be stored in real database") print(" โ€ข Context injection will work with real data") print(" โ€ข Conversation #107 will be properly tracked") print("\n๐Ÿงช **Final Test Commands:**") print("python diagnose_interaction_tracking.py") print("python test_conversation_tracking.py") print("\n๐Ÿ’ก **Expected Results:**") print("โ€ข Real SQLAlchemy sessions with mapped classes") print("โ€ข Interactions stored in real SQLite database") print("โ€ข Context injection working with actual conversation data") print("โ€ข Conversation #107 properly tracked and stored") elif success_count > 0: print("\nโš ๏ธ PARTIAL SUCCESS") print(" โ€ข Some components working, others need attention") print(" โ€ข Check the output above for specific failures") else: print("\nโŒ ALL TESTS FAILED") print(" โ€ข Session factory fix may not have worked") print(" โ€ข Check for syntax errors or import issues") print(" โ€ข Consider manual intervention") if __name__ == "__main__": main()

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/Big0290/MCP'

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