forked from cardosofelipe/pragma-stack
feat(knowledge-base): implement Knowledge Base MCP Server (#57) #72
@@ -2,15 +2,13 @@
|
||||
Tests for MCP Tool Call Routing
|
||||
"""
|
||||
|
||||
from unittest.mock import AsyncMock, MagicMock, patch
|
||||
from unittest.mock import AsyncMock, patch
|
||||
|
||||
import pytest
|
||||
|
||||
from app.services.mcp.config import MCPConfig, MCPServerConfig
|
||||
from app.services.mcp.connection import ConnectionPool
|
||||
from app.services.mcp.exceptions import (
|
||||
MCPCircuitOpenError,
|
||||
MCPToolError,
|
||||
MCPToolNotFoundError,
|
||||
)
|
||||
from app.services.mcp.registry import MCPServerRegistry
|
||||
@@ -79,7 +77,10 @@ class TestToolInfo:
|
||||
name="create_issue",
|
||||
description="Create a new issue",
|
||||
server_name="issues",
|
||||
input_schema={"type": "object", "properties": {"title": {"type": "string"}}},
|
||||
input_schema={
|
||||
"type": "object",
|
||||
"properties": {"title": {"type": "string"}},
|
||||
},
|
||||
)
|
||||
assert info.name == "create_issue"
|
||||
assert info.description == "Create a new issue"
|
||||
@@ -174,9 +175,7 @@ class TestToolRouter:
|
||||
|
||||
# Mock the pool connection and request
|
||||
mock_conn = AsyncMock()
|
||||
mock_conn.execute_request = AsyncMock(
|
||||
return_value={"result": {"status": "ok"}}
|
||||
)
|
||||
mock_conn.execute_request = AsyncMock(return_value={"result": {"status": "ok"}})
|
||||
mock_conn.is_connected = True
|
||||
|
||||
with patch.object(router._pool, "get_connection", return_value=mock_conn):
|
||||
@@ -232,9 +231,7 @@ class TestToolRouter:
|
||||
await router.register_tool_mapping("tool-on-server-1", "server-1")
|
||||
|
||||
mock_conn = AsyncMock()
|
||||
mock_conn.execute_request = AsyncMock(
|
||||
return_value={"result": "routed"}
|
||||
)
|
||||
mock_conn.execute_request = AsyncMock(return_value={"result": "routed"})
|
||||
mock_conn.is_connected = True
|
||||
|
||||
with patch.object(router._pool, "get_connection", return_value=mock_conn):
|
||||
@@ -339,7 +336,11 @@ class TestToolRouter:
|
||||
delay2 = router._calculate_retry_delay(2, config)
|
||||
delay3 = router._calculate_retry_delay(3, config)
|
||||
|
||||
# Delays should increase with attempts
|
||||
# All delays should be positive
|
||||
assert delay1 > 0
|
||||
# Allow for jitter variation
|
||||
assert delay2 > 0
|
||||
assert delay3 > 0
|
||||
# All delays should be within max bounds (allow for jitter variation)
|
||||
assert delay1 <= config.retry_max_delay * 1.25
|
||||
assert delay2 <= config.retry_max_delay * 1.25
|
||||
assert delay3 <= config.retry_max_delay * 1.25
|
||||
|
||||
Reference in New Issue
Block a user