Skip to main content
Glama

Mnemosyne MCP

by MumuTW
test_grpc_server.py5.84 kB
""" gRPC 伺服器整合測試 測試 gRPC 伺服器的完整啟動和基本功能。 """ import asyncio import grpc import pytest from mnemosyne.core.config import MCPAtlassianSettings, Settings from mnemosyne.grpc import atlassian_pb2, atlassian_pb2_grpc from mnemosyne.grpc.server import AtlassianGrpcServer class TestAtlassianGrpcServer: """測試 AtlassianGrpcServer""" @pytest.fixture def settings(self): """創建測試用配置""" return Settings( mcp_atlassian=MCPAtlassianSettings( service_url="http://mcp-atlassian:8001", read_only_mode=True, enabled_tools=["confluence_search", "jira_search", "jira_get_issue"], jira_url="https://company.atlassian.net", jira_username="test@company.com", jira_api_token="test-token", confluence_url="https://company.atlassian.net/wiki", confluence_username="test@company.com", confluence_api_token="test-token", ) ) @pytest.mark.asyncio async def test_server_initialization(self, settings): """測試伺服器初始化""" server = AtlassianGrpcServer(settings, port=50052) assert server.settings == settings assert server.port == 50052 assert server.server is None assert server.service is None @pytest.mark.asyncio async def test_server_start_stop(self, settings): """測試伺服器啟動和停止""" server = AtlassianGrpcServer(settings, port=50053) # 啟動伺服器 await server.start() try: assert server.server is not None assert server.service is not None # 給伺服器一些時間來啟動 await asyncio.sleep(0.1) # 測試基本的 gRPC 連接 channel = grpc.insecure_channel("localhost:50053") stub = atlassian_pb2_grpc.AtlassianKnowledgeExtractorStub(channel) # 測試健康檢查 request = atlassian_pb2.HealthCheckRequest(check_connectivity=False) response = stub.CheckHealth(request) assert response.status == atlassian_pb2.HealthCheckResponse.Status.HEALTHY assert response.message == "Service is running" # 關閉通道 channel.close() finally: # 停止伺服器 await server.stop() @pytest.mark.asyncio async def test_server_grpc_stats(self, settings): """測試伺服器 gRPC 統計端點""" server = AtlassianGrpcServer(settings, port=50054) # 啟動伺服器 await server.start() try: # 給伺服器一些時間來啟動 await asyncio.sleep(0.1) # 測試基本的 gRPC 連接 channel = grpc.insecure_channel("localhost:50054") stub = atlassian_pb2_grpc.AtlassianKnowledgeExtractorStub(channel) # 測試統計端點 request = atlassian_pb2.GetExtractionStatsRequest() response = stub.GetExtractionStats(request) assert response.total_requests == 0 assert response.successful_requests == 0 assert response.failed_requests == 0 assert response.success_rate == 0.0 # 關閉通道 channel.close() finally: # 停止伺服器 await server.stop() @pytest.mark.asyncio async def test_server_unconfigured_service(self): """測試未配置的服務""" # 創建未配置的設定 unconfigured_settings = Settings(mcp_atlassian=MCPAtlassianSettings()) server = AtlassianGrpcServer(unconfigured_settings, port=50055) # 啟動伺服器 await server.start() try: # 給伺服器一些時間來啟動 await asyncio.sleep(0.1) # 測試基本的 gRPC 連接 channel = grpc.insecure_channel("localhost:50055") stub = atlassian_pb2_grpc.AtlassianKnowledgeExtractorStub(channel) # 測試健康檢查應該顯示不健康 request = atlassian_pb2.HealthCheckRequest(check_connectivity=False) response = stub.CheckHealth(request) assert response.status == atlassian_pb2.HealthCheckResponse.Status.UNHEALTHY assert "not configured" in response.message # 關閉通道 channel.close() finally: # 停止伺服器 await server.stop() @pytest.mark.asyncio async def test_server_jira_extraction_unconfigured(self): """測試未配置時的 Jira 提取""" # 創建未配置的設定 unconfigured_settings = Settings(mcp_atlassian=MCPAtlassianSettings()) server = AtlassianGrpcServer(unconfigured_settings, port=50056) # 啟動伺服器 await server.start() try: # 給伺服器一些時間來啟動 await asyncio.sleep(0.1) # 測試基本的 gRPC 連接 channel = grpc.insecure_channel("localhost:50056") stub = atlassian_pb2_grpc.AtlassianKnowledgeExtractorStub(channel) # 測試 Jira 提取應該返回錯誤 request = atlassian_pb2.ExtractJiraIssuesRequest(query="test") try: response = stub.ExtractJiraIssues(request) # 應該返回空結果 assert len(response.issues) == 0 except grpc.RpcError as e: # 或者返回 gRPC 錯誤 assert e.code() == grpc.StatusCode.UNAVAILABLE # 關閉通道 channel.close() finally: # 停止伺服器 await server.stop()

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/MumuTW/Mnemosyne-mcp'

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