From 1de3c333e9d964cc6c51c1651602fcd2d3d4e429 Mon Sep 17 00:00:00 2001 From: Anubhav Dhawan Date: Sat, 27 Jun 2026 00:26:06 +0530 Subject: [PATCH 01/19] feat(core): add support for MCP 2026 stateless draft and auto-negotiation fallback --- .../src/toolbox_core/mcp_transport/v20241105/mcp.py | 5 ++--- .../src/toolbox_core/mcp_transport/v20250326/mcp.py | 6 ++---- .../src/toolbox_core/mcp_transport/v20250618/mcp.py | 6 ++---- .../src/toolbox_core/mcp_transport/v20251125/mcp.py | 6 ++---- packages/toolbox-core/src/toolbox_core/protocol.py | 9 ++++++--- packages/toolbox-core/tests/test_e2e_mcp.py | 6 +++--- 6 files changed, 17 insertions(+), 21 deletions(-) diff --git a/packages/toolbox-core/src/toolbox_core/mcp_transport/v20241105/mcp.py b/packages/toolbox-core/src/toolbox_core/mcp_transport/v20241105/mcp.py index ec6a2475d..7f03dcee0 100644 --- a/packages/toolbox-core/src/toolbox_core/mcp_transport/v20241105/mcp.py +++ b/packages/toolbox-core/src/toolbox_core/mcp_transport/v20241105/mcp.py @@ -18,6 +18,7 @@ from pydantic import BaseModel from ... import version +from ...exceptions import ProtocolNegotiationError from ...protocol import ManifestSchema, TelemetryAttributes from .. import telemetry from ..transport_base import _McpHttpTransportBase @@ -131,9 +132,7 @@ async def _initialize_session( self._server_version = result.serverInfo.version if result.protocolVersion != self._protocol_version: - raise RuntimeError( - f"MCP version mismatch: client does not support server version {result.protocolVersion}" - ) + raise ProtocolNegotiationError(result.protocolVersion) if not result.capabilities.tools: if self._manage_session: diff --git a/packages/toolbox-core/src/toolbox_core/mcp_transport/v20250326/mcp.py b/packages/toolbox-core/src/toolbox_core/mcp_transport/v20250326/mcp.py index 0194bd282..a28f9db0e 100644 --- a/packages/toolbox-core/src/toolbox_core/mcp_transport/v20250326/mcp.py +++ b/packages/toolbox-core/src/toolbox_core/mcp_transport/v20250326/mcp.py @@ -18,6 +18,7 @@ from pydantic import BaseModel from ... import version +from ...exceptions import ProtocolNegotiationError from ...protocol import ManifestSchema, TelemetryAttributes from .. import telemetry from ..transport_base import _McpHttpTransportBase @@ -147,10 +148,7 @@ async def _initialize_session( self._server_version = result.serverInfo.version if result.protocolVersion != self._protocol_version: - raise RuntimeError( - "MCP version mismatch: client does not support server version" - f" {result.protocolVersion}" - ) + raise ProtocolNegotiationError(result.protocolVersion) if not result.capabilities.tools: if self._manage_session: diff --git a/packages/toolbox-core/src/toolbox_core/mcp_transport/v20250618/mcp.py b/packages/toolbox-core/src/toolbox_core/mcp_transport/v20250618/mcp.py index d7a626ed1..11a471ecf 100644 --- a/packages/toolbox-core/src/toolbox_core/mcp_transport/v20250618/mcp.py +++ b/packages/toolbox-core/src/toolbox_core/mcp_transport/v20250618/mcp.py @@ -18,6 +18,7 @@ from pydantic import BaseModel from ... import version +from ...exceptions import ProtocolNegotiationError from ...protocol import ManifestSchema, TelemetryAttributes from .. import telemetry from ..transport_base import _McpHttpTransportBase @@ -138,10 +139,7 @@ async def _initialize_session( self._server_version = result.serverInfo.version if result.protocolVersion != self._protocol_version: - raise RuntimeError( - "MCP version mismatch: client does not support server version" - f" {result.protocolVersion}" - ) + raise ProtocolNegotiationError(result.protocolVersion) if not result.capabilities.tools: if self._manage_session: diff --git a/packages/toolbox-core/src/toolbox_core/mcp_transport/v20251125/mcp.py b/packages/toolbox-core/src/toolbox_core/mcp_transport/v20251125/mcp.py index 999301552..1bf741e76 100644 --- a/packages/toolbox-core/src/toolbox_core/mcp_transport/v20251125/mcp.py +++ b/packages/toolbox-core/src/toolbox_core/mcp_transport/v20251125/mcp.py @@ -18,6 +18,7 @@ from pydantic import BaseModel from ... import version +from ...exceptions import ProtocolNegotiationError from ...protocol import ManifestSchema, TelemetryAttributes from .. import telemetry from ..transport_base import _McpHttpTransportBase @@ -138,10 +139,7 @@ async def _initialize_session( self._server_version = result.serverInfo.version if result.protocolVersion != self._protocol_version: - raise RuntimeError( - "MCP version mismatch: client does not support server version" - f" {result.protocolVersion}" - ) + raise ProtocolNegotiationError(result.protocolVersion) if not result.capabilities.tools: if self._manage_session: diff --git a/packages/toolbox-core/src/toolbox_core/protocol.py b/packages/toolbox-core/src/toolbox_core/protocol.py index 57d12fb33..350e0251f 100644 --- a/packages/toolbox-core/src/toolbox_core/protocol.py +++ b/packages/toolbox-core/src/toolbox_core/protocol.py @@ -51,14 +51,17 @@ class Protocol(str, Enum): MCP_v20250326 = "2025-03-26" MCP_v20241105 = "2024-11-05" MCP_v20251125 = "2025-11-25" - MCP = MCP_v20250618 - MCP_LATEST = "DRAFT-2026-v1" + MCP_v2026_DRAFT = "DRAFT-2026-v1" + + MCP = MCP_v20251125 + MCP_LATEST = MCP_v20251125 + MCP_DRAFT = MCP_v2026_DRAFT @staticmethod def get_supported_mcp_versions() -> list[str]: """Returns a list of supported MCP protocol versions.""" return [ - Protocol.MCP_LATEST.value, + Protocol.MCP_DRAFT.value, Protocol.MCP_v20251125.value, Protocol.MCP_v20250618.value, Protocol.MCP_v20250326.value, diff --git a/packages/toolbox-core/tests/test_e2e_mcp.py b/packages/toolbox-core/tests/test_e2e_mcp.py index c35695ffa..6de3ac9f9 100644 --- a/packages/toolbox-core/tests/test_e2e_mcp.py +++ b/packages/toolbox-core/tests/test_e2e_mcp.py @@ -101,10 +101,10 @@ async def test_run_tool_missing_params(self, get_n_rows_tool: ToolboxTool): await get_n_rows_tool() async def test_protocol_fallback_e2e(self): - """Tests that a client using MCP_LATEST can fallback to an older protocol against a server that doesn't support the latest version.""" + """Tests that a client using MCP_DRAFT can fallback to an older protocol against a server that doesn't support the draft version.""" # The E2E server currently does not support DRAFT 2026, so this will trigger a fallback. async with ToolboxClient( - "http://localhost:5000", protocol=Protocol.MCP_LATEST + "http://localhost:5000", protocol=Protocol.MCP_DRAFT ) as client: tool = await client.load_tool("get-n-rows") response = await tool(num_rows="1") @@ -112,7 +112,7 @@ async def test_protocol_fallback_e2e(self): # Verify that fallback occurred by checking the transport's final protocol version assert ( client._ToolboxClient__transport._protocol_version - != Protocol.MCP_LATEST.value + != Protocol.MCP_DRAFT.value ) async def test_run_tool_wrong_param_type(self, get_n_rows_tool: ToolboxTool): From b908993ef31a83164f9c3347523cda8820dc525d Mon Sep 17 00:00:00 2001 From: Anubhav Dhawan Date: Mon, 29 Jun 2026 11:43:44 +0530 Subject: [PATCH 02/19] fix: Keep the MCP_LATEST to stable version but point MCP_DRAFT to 2026 draft --- packages/toolbox-core/src/toolbox_core/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/toolbox-core/src/toolbox_core/client.py b/packages/toolbox-core/src/toolbox_core/client.py index 641e80599..b2224eedc 100644 --- a/packages/toolbox-core/src/toolbox_core/client.py +++ b/packages/toolbox-core/src/toolbox_core/client.py @@ -63,7 +63,7 @@ def __init__( def _create_transport(self, protocol: Protocol) -> ITransport: match protocol: - case Protocol.MCP_LATEST: + case Protocol.MCP_DRAFT: return McpHttpTransportV20260618( self._url, self._session, From 94c1556255cd8f645299aa15a3e6a2265d87762e Mon Sep 17 00:00:00 2001 From: Anubhav Dhawan Date: Mon, 29 Jun 2026 11:43:54 +0530 Subject: [PATCH 03/19] chore: fix integration tests --- packages/toolbox-core/tests/mcp_transport/test_v20241105.py | 3 ++- packages/toolbox-core/tests/mcp_transport/test_v20250618.py | 3 ++- packages/toolbox-core/tests/mcp_transport/test_v20251125.py | 3 ++- packages/toolbox-core/tests/mcp_transport/test_v20260618.py | 2 +- packages/toolbox-core/tests/test_client.py | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20241105.py b/packages/toolbox-core/tests/mcp_transport/test_v20241105.py index 1ce2f39bb..df48b17a1 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20241105.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20241105.py @@ -21,6 +21,7 @@ from toolbox_core.mcp_transport.v20241105 import types from toolbox_core.mcp_transport.v20241105.mcp import McpHttpTransportV20241105 from toolbox_core.protocol import ManifestSchema, Protocol +from toolbox_core.exceptions import ProtocolNegotiationError def create_fake_tools_list_result(): @@ -248,7 +249,7 @@ async def test_initialize_session_protocol_mismatch(self, transport, mocker): ), ) - with pytest.raises(RuntimeError, match="MCP version mismatch"): + with pytest.raises(ProtocolNegotiationError): await transport._initialize_session() async def test_initialize_session_missing_tools_capability(self, transport, mocker): diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20250618.py b/packages/toolbox-core/tests/mcp_transport/test_v20250618.py index fd2e50f7c..a456ca9ee 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20250618.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20250618.py @@ -21,6 +21,7 @@ from toolbox_core.mcp_transport.v20250618 import types from toolbox_core.mcp_transport.v20250618.mcp import McpHttpTransportV20250618 from toolbox_core.protocol import ManifestSchema, Protocol, TelemetryAttributes +from toolbox_core.exceptions import ProtocolNegotiationError def create_fake_tools_list_result(): @@ -256,7 +257,7 @@ async def test_initialize_session_protocol_mismatch(self, transport, mocker): ), ) - with pytest.raises(RuntimeError, match="MCP version mismatch"): + with pytest.raises(ProtocolNegotiationError): await transport._initialize_session() async def test_initialize_session_missing_tools_capability(self, transport, mocker): diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20251125.py b/packages/toolbox-core/tests/mcp_transport/test_v20251125.py index 9942041aa..2b2a89abf 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20251125.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20251125.py @@ -21,6 +21,7 @@ from toolbox_core.mcp_transport.v20251125 import types from toolbox_core.mcp_transport.v20251125.mcp import McpHttpTransportV20251125 from toolbox_core.protocol import ManifestSchema, Protocol +from toolbox_core.exceptions import ProtocolNegotiationError def create_fake_tools_list_result(): @@ -256,7 +257,7 @@ async def test_initialize_session_protocol_mismatch(self, transport, mocker): ), ) - with pytest.raises(RuntimeError, match="MCP version mismatch"): + with pytest.raises(ProtocolNegotiationError): await transport._initialize_session() async def test_initialize_session_missing_tools_capability(self, transport, mocker): diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20260618.py b/packages/toolbox-core/tests/mcp_transport/test_v20260618.py index 40d1842e7..5c751320f 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20260618.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20260618.py @@ -70,7 +70,7 @@ async def transport(request, mocker): transport = McpHttpTransportV20260618( "http://fake-server.com", session=mock_session, - protocol=Protocol.MCP_LATEST, + protocol=Protocol.MCP_DRAFT, telemetry_enabled=request.param, ) yield transport diff --git a/packages/toolbox-core/tests/test_client.py b/packages/toolbox-core/tests/test_client.py index 20690eb46..b84cae5c5 100644 --- a/packages/toolbox-core/tests/test_client.py +++ b/packages/toolbox-core/tests/test_client.py @@ -810,7 +810,7 @@ async def test_client_init_with_client_info(): def test_toolbox_client_no_warning_on_mcp(): """Test that initializing ToolboxClient with Protocol.MCP issues NO DeprecationWarning.""" # Mock the transport to avoid actual connection attempts or MCP version warnings - with patch("toolbox_core.client.McpHttpTransportV20250618") as mock_transport: + with patch("toolbox_core.client.McpHttpTransportV20251125") as mock_transport: with warnings.catch_warnings(record=True) as w: warnings.simplefilter("always") From fb1a630102ef6ffdc4b742fee0e7a9c76f3ba461 Mon Sep 17 00:00:00 2001 From: Anubhav Dhawan Date: Mon, 29 Jun 2026 11:45:12 +0530 Subject: [PATCH 04/19] chore: delint --- packages/toolbox-core/tests/mcp_transport/test_v20241105.py | 2 +- packages/toolbox-core/tests/mcp_transport/test_v20250618.py | 2 +- packages/toolbox-core/tests/mcp_transport/test_v20251125.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20241105.py b/packages/toolbox-core/tests/mcp_transport/test_v20241105.py index df48b17a1..eadb0e264 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20241105.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20241105.py @@ -18,10 +18,10 @@ import pytest_asyncio from aiohttp import ClientSession +from toolbox_core.exceptions import ProtocolNegotiationError from toolbox_core.mcp_transport.v20241105 import types from toolbox_core.mcp_transport.v20241105.mcp import McpHttpTransportV20241105 from toolbox_core.protocol import ManifestSchema, Protocol -from toolbox_core.exceptions import ProtocolNegotiationError def create_fake_tools_list_result(): diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20250618.py b/packages/toolbox-core/tests/mcp_transport/test_v20250618.py index a456ca9ee..b5a1a0a94 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20250618.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20250618.py @@ -18,10 +18,10 @@ import pytest_asyncio from aiohttp import ClientSession +from toolbox_core.exceptions import ProtocolNegotiationError from toolbox_core.mcp_transport.v20250618 import types from toolbox_core.mcp_transport.v20250618.mcp import McpHttpTransportV20250618 from toolbox_core.protocol import ManifestSchema, Protocol, TelemetryAttributes -from toolbox_core.exceptions import ProtocolNegotiationError def create_fake_tools_list_result(): diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20251125.py b/packages/toolbox-core/tests/mcp_transport/test_v20251125.py index 2b2a89abf..f575b81bc 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20251125.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20251125.py @@ -18,10 +18,10 @@ import pytest_asyncio from aiohttp import ClientSession +from toolbox_core.exceptions import ProtocolNegotiationError from toolbox_core.mcp_transport.v20251125 import types from toolbox_core.mcp_transport.v20251125.mcp import McpHttpTransportV20251125 from toolbox_core.protocol import ManifestSchema, Protocol -from toolbox_core.exceptions import ProtocolNegotiationError def create_fake_tools_list_result(): From 0596a8003d8875da093c762ef2b0c4e4b56477a7 Mon Sep 17 00:00:00 2001 From: Anubhav Dhawan Date: Mon, 29 Jun 2026 11:49:43 +0530 Subject: [PATCH 05/19] chore: fix tests --- packages/toolbox-core/tests/test_client.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/toolbox-core/tests/test_client.py b/packages/toolbox-core/tests/test_client.py index b84cae5c5..e28bb03a1 100644 --- a/packages/toolbox-core/tests/test_client.py +++ b/packages/toolbox-core/tests/test_client.py @@ -276,7 +276,7 @@ async def test_load_tool_protocol_fallback_success(test_tool_str): mock_2025.tool_invoke.return_value = "ok_from_fallback" mock_2025_cls.return_value = mock_2025 - async with ToolboxClient(TEST_BASE_URL, protocol=Protocol.MCP_LATEST) as client: + async with ToolboxClient(TEST_BASE_URL, protocol=Protocol.MCP_DRAFT) as client: # This should trigger the fallback loaded_tool = await client.load_tool(TOOL_NAME) @@ -320,7 +320,7 @@ async def test_load_tool_protocol_fallback_infinite_loop_prevention(test_tool_st mock_2025.tool_get.side_effect = ProtocolNegotiationError("2024-11-05") mock_2025_cls.return_value = mock_2025 - async with ToolboxClient(TEST_BASE_URL, protocol=Protocol.MCP_LATEST) as client: + async with ToolboxClient(TEST_BASE_URL, protocol=Protocol.MCP_DRAFT) as client: with pytest.raises( ProtocolNegotiationError, match="Server requires protocol fallback to 2024-11-05", From ff7ea75b128f9c60217df478879c4ca7db2793b6 Mon Sep 17 00:00:00 2001 From: Anubhav Dhawan Date: Mon, 29 Jun 2026 12:22:36 +0530 Subject: [PATCH 06/19] test: increase integration test coverage --- packages/toolbox-core/tests/test_e2e_mcp.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/packages/toolbox-core/tests/test_e2e_mcp.py b/packages/toolbox-core/tests/test_e2e_mcp.py index 6de3ac9f9..d810f8e2b 100644 --- a/packages/toolbox-core/tests/test_e2e_mcp.py +++ b/packages/toolbox-core/tests/test_e2e_mcp.py @@ -463,3 +463,24 @@ async def test_run_tool_with_wrong_map_value_type(self, toolbox: ToolboxClient): execution_context={"env": "staging"}, user_scores={"user4": "not-an-integer"}, ) + + +@pytest.mark.asyncio +@pytest.mark.usefixtures("toolbox_server") +async def test_mcp_default_protocol(): + """Verify that omitting the protocol argument defaults correctly and works.""" + async with ToolboxClient("http://localhost:5000") as client: + tool = await client.load_tool("get-n-rows") + response = await tool(num_rows="1") + assert "row1" in response + + +@pytest.mark.asyncio +@pytest.mark.usefixtures("toolbox_server") +async def test_mcp_draft_fallback(): + """Verify that explicitly using MCP_DRAFT against a server that doesn't support it falls back successfully.""" + async with ToolboxClient("http://localhost:5000", protocol=Protocol.MCP_DRAFT) as client: + tool = await client.load_tool("get-n-rows") + response = await tool(num_rows="1") + assert "row1" in response + From 4647a5a9efe6cac711e78572652bf84ae1016612 Mon Sep 17 00:00:00 2001 From: Anubhav Dhawan Date: Mon, 29 Jun 2026 12:29:46 +0530 Subject: [PATCH 07/19] chore: delint --- packages/toolbox-core/tests/test_e2e_mcp.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/toolbox-core/tests/test_e2e_mcp.py b/packages/toolbox-core/tests/test_e2e_mcp.py index d810f8e2b..b4bd541fa 100644 --- a/packages/toolbox-core/tests/test_e2e_mcp.py +++ b/packages/toolbox-core/tests/test_e2e_mcp.py @@ -479,8 +479,9 @@ async def test_mcp_default_protocol(): @pytest.mark.usefixtures("toolbox_server") async def test_mcp_draft_fallback(): """Verify that explicitly using MCP_DRAFT against a server that doesn't support it falls back successfully.""" - async with ToolboxClient("http://localhost:5000", protocol=Protocol.MCP_DRAFT) as client: + async with ToolboxClient( + "http://localhost:5000", protocol=Protocol.MCP_DRAFT + ) as client: tool = await client.load_tool("get-n-rows") response = await tool(num_rows="1") assert "row1" in response - From 261bb861434713b3f139509f279c731e68c0155f Mon Sep 17 00:00:00 2001 From: Anubhav Dhawan Date: Tue, 30 Jun 2026 19:55:12 +0530 Subject: [PATCH 08/19] test: integrate the draft build with dual testing modes --- .../toolbox-adk/tests/integration/conftest.py | 39 ++++++++++++--- packages/toolbox-core/tests/conftest.py | 49 +++++++++++++++---- packages/toolbox-langchain/tests/conftest.py | 41 ++++++++++++---- packages/toolbox-llamaindex/tests/conftest.py | 39 ++++++++++++--- 4 files changed, 134 insertions(+), 34 deletions(-) diff --git a/packages/toolbox-adk/tests/integration/conftest.py b/packages/toolbox-adk/tests/integration/conftest.py index 7a0346c3a..65c607085 100644 --- a/packages/toolbox-adk/tests/integration/conftest.py +++ b/packages/toolbox-adk/tests/integration/conftest.py @@ -159,20 +159,23 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None # Make toolbox executable os.chmod("toolbox", 0o700) # Run toolbox binary - toolbox_server = subprocess.Popen( - ["./toolbox", "--tools-file", tools_file_path] + toolbox_server_1 = subprocess.Popen( + ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] + ) + toolbox_server_2 = subprocess.Popen( + ["./toolbox", "--port", "5001", "--tools-file", tools_file_path, "--enable-draft-specs"] ) # Wait for server to start # Retry logic with a timeout for _ in range(5): # retries time.sleep(2) - print("Checking if toolbox is successfully started...") - if toolbox_server.poll() is None: - print("Toolbox server started successfully.") + print("Checking if both toolbox servers are successfully started...") + if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: + print("Toolbox servers started successfully.") break else: - raise RuntimeError("Toolbox server failed to start after 5 retries.") + raise RuntimeError("Toolbox servers failed to start after 5 retries.") except subprocess.CalledProcessError as e: print(e.stderr.decode("utf-8")) print(e.stdout.decode("utf-8")) @@ -180,5 +183,25 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None yield # Clean up toolbox server - toolbox_server.terminate() - toolbox_server.wait(timeout=5) + toolbox_server_1.terminate() + toolbox_server_2.terminate() + toolbox_server_1.wait(timeout=5) + toolbox_server_2.wait(timeout=5) + +@pytest_asyncio.fixture(params=["http://localhost:5000", "http://localhost:5001"], scope="session") +def toolbox_server_url(request) -> str: + return request.param + +@pytest_asyncio.fixture(autouse=True) +def patch_toolbox_client_url(toolbox_server_url): + from toolbox_adk.client import ToolboxToolset + original_init = ToolboxToolset.__init__ + + def new_init(self, server_url="http://localhost:5000", *args, **kwargs): + if server_url == "http://localhost:5000": + server_url = toolbox_server_url + original_init(self, server_url, *args, **kwargs) + + from unittest.mock import patch + with patch.object(ToolboxToolset, '__init__', new_init, create=True): + yield diff --git a/packages/toolbox-core/tests/conftest.py b/packages/toolbox-core/tests/conftest.py index 338d031c0..7d972f8b4 100644 --- a/packages/toolbox-core/tests/conftest.py +++ b/packages/toolbox-core/tests/conftest.py @@ -75,7 +75,7 @@ def get_toolbox_binary_url(toolbox_version: str) -> str: arch = ( "arm64" if os_system == "darwin" and platform.machine() == "arm64" else "amd64" ) - return f"v{toolbox_version}/{os_system}/{arch}/toolbox" + return f"staging/v1.6.0-draft/{os_system}/{arch}/toolbox" def get_auth_token(client_id: str) -> str: @@ -143,20 +143,23 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None # Make toolbox executable os.chmod("toolbox", 0o700) # Run toolbox binary - toolbox_server = subprocess.Popen( - ["./toolbox", "--tools-file", tools_file_path] + toolbox_server_1 = subprocess.Popen( + ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] + ) + toolbox_server_2 = subprocess.Popen( + ["./toolbox", "--port", "5001", "--tools-file", tools_file_path, "--enable-draft-specs"] ) # Wait for server to start # Retry logic with a timeout for _ in range(5): # retries time.sleep(2) - print("Checking if toolbox is successfully started...") - if toolbox_server.poll() is None: - print("Toolbox server started successfully.") + print("Checking if both toolbox servers are successfully started...") + if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: + print("Toolbox servers started successfully.") break else: - raise RuntimeError("Toolbox server failed to start after 5 retries.") + raise RuntimeError("Toolbox servers failed to start after 5 retries.") except subprocess.CalledProcessError as e: print(e.stderr.decode("utf-8")) print(e.stdout.decode("utf-8")) @@ -164,5 +167,33 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None yield # Clean up toolbox server - toolbox_server.terminate() - toolbox_server.wait(timeout=5) + toolbox_server_1.terminate() + toolbox_server_2.terminate() + toolbox_server_1.wait(timeout=5) + toolbox_server_2.wait(timeout=5) + +@pytest_asyncio.fixture(params=["http://localhost:5000", "http://localhost:5001"], scope="session") +def toolbox_server_url(request) -> str: + return request.param + +@pytest_asyncio.fixture(autouse=True) +def patch_toolbox_client_url(toolbox_server_url): + from toolbox_core.client import ToolboxClient + from toolbox_core.sync_client import ToolboxSyncClient + original_init = ToolboxClient.__init__ + original_sync_init = ToolboxSyncClient.__init__ + + def new_init(self, url="http://localhost:5000", *args, **kwargs): + if url == "http://localhost:5000": + url = toolbox_server_url + original_init(self, url, *args, **kwargs) + + def new_sync_init(self, url="http://localhost:5000", *args, **kwargs): + if url == "http://localhost:5000": + url = toolbox_server_url + original_sync_init(self, url, *args, **kwargs) + + from unittest.mock import patch + with patch.object(ToolboxClient, '__init__', new_init, create=True): + with patch.object(ToolboxSyncClient, '__init__', new_sync_init, create=True): + yield diff --git a/packages/toolbox-langchain/tests/conftest.py b/packages/toolbox-langchain/tests/conftest.py index a1c87a7d8..1c5c22b4d 100644 --- a/packages/toolbox-langchain/tests/conftest.py +++ b/packages/toolbox-langchain/tests/conftest.py @@ -143,20 +143,23 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None # Make toolbox executable os.chmod("toolbox", 0o700) # Run toolbox binary - toolbox_server = subprocess.Popen( - ["./toolbox", "--tools-file", tools_file_path] + toolbox_server_1 = subprocess.Popen( + ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] + ) + toolbox_server_2 = subprocess.Popen( + ["./toolbox", "--port", "5001", "--tools-file", tools_file_path, "--enable-draft-specs"] ) # Wait for server to start # Retry logic with a timeout for _ in range(5): # retries - time.sleep(2) - print("Checking if toolbox is successfully started...") - if toolbox_server.poll() is None: - print("Toolbox server started successfully.") + time.sleep(4) + print("Checking if both toolbox servers are successfully started...") + if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: + print("Toolbox servers started successfully.") break else: - raise RuntimeError("Toolbox server failed to start after 5 retries.") + raise RuntimeError("Toolbox servers failed to start after 5 retries.") except subprocess.CalledProcessError as e: print(e.stderr.decode("utf-8")) print(e.stdout.decode("utf-8")) @@ -164,5 +167,25 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None yield # Clean up toolbox server - toolbox_server.terminate() - toolbox_server.wait() + toolbox_server_1.terminate() + toolbox_server_2.terminate() + toolbox_server_1.wait() + toolbox_server_2.wait() + +@pytest_asyncio.fixture(params=["http://localhost:5000", "http://localhost:5001"], scope="session") +def toolbox_server_url(request) -> str: + return request.param + +@pytest_asyncio.fixture(autouse=True) +def patch_toolbox_client_url(toolbox_server_url): + from toolbox_core.client import ToolboxClient + original_init = ToolboxClient.__init__ + + def new_init(self, url="http://localhost:5000", *args, **kwargs): + if url == "http://localhost:5000": + url = toolbox_server_url + original_init(self, url, *args, **kwargs) + + from unittest.mock import patch + with patch.object(ToolboxClient, '__init__', new_init, create=True): + yield diff --git a/packages/toolbox-llamaindex/tests/conftest.py b/packages/toolbox-llamaindex/tests/conftest.py index c8a8fa5f9..eae76a1bd 100644 --- a/packages/toolbox-llamaindex/tests/conftest.py +++ b/packages/toolbox-llamaindex/tests/conftest.py @@ -143,20 +143,23 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None # Make toolbox executable os.chmod("toolbox", 0o700) # Run toolbox binary - toolbox_server = subprocess.Popen( - ["./toolbox", "--tools-file", tools_file_path] + toolbox_server_1 = subprocess.Popen( + ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] + ) + toolbox_server_2 = subprocess.Popen( + ["./toolbox", "--port", "5001", "--tools-file", tools_file_path, "--enable-draft-specs"] ) # Wait for server to start # Retry logic with a timeout for _ in range(5): # retries time.sleep(4) - print("Checking if toolbox is successfully started...") - if toolbox_server.poll() is None: - print("Toolbox server started successfully.") + print("Checking if both toolbox servers are successfully started...") + if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: + print("Toolbox servers started successfully.") break else: - raise RuntimeError("Toolbox server failed to start after 5 retries.") + raise RuntimeError("Toolbox servers failed to start after 5 retries.") except subprocess.CalledProcessError as e: print(e.stderr.decode("utf-8")) print(e.stdout.decode("utf-8")) @@ -164,5 +167,25 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None yield # Clean up toolbox server - toolbox_server.terminate() - toolbox_server.wait() + toolbox_server_1.terminate() + toolbox_server_2.terminate() + toolbox_server_1.wait() + toolbox_server_2.wait() + +@pytest_asyncio.fixture(params=["http://localhost:5000", "http://localhost:5001"], scope="session") +def toolbox_server_url(request) -> str: + return request.param + +@pytest_asyncio.fixture(autouse=True) +def patch_toolbox_client_url(toolbox_server_url): + from toolbox_core.client import ToolboxClient + original_init = ToolboxClient.__init__ + + def new_init(self, url="http://localhost:5000", *args, **kwargs): + if url == "http://localhost:5000": + url = toolbox_server_url + original_init(self, url, *args, **kwargs) + + from unittest.mock import patch + with patch.object(ToolboxClient, '__init__', new_init, create=True): + yield From 8b6ec1ed576941af745c6662978dea5c615e715c Mon Sep 17 00:00:00 2001 From: Anubhav Dhawan Date: Tue, 30 Jun 2026 20:13:34 +0530 Subject: [PATCH 09/19] fix(tests): correct pytest async fixtures and auto-format with black/isort --- packages/toolbox-adk/src/toolbox_adk/tool.py | 14 ++--- .../toolbox-adk/src/toolbox_adk/toolset.py | 3 +- .../toolbox-adk/tests/integration/conftest.py | 26 +++++++-- .../tests/integration/test_integration.py | 22 +++----- .../toolbox-adk/tests/unit/test_client.py | 1 - .../tests/unit/test_credentials.py | 55 +++++++------------ packages/toolbox-adk/tests/unit/test_tool.py | 1 - .../toolbox-adk/tests/unit/test_toolset.py | 3 +- .../toolbox-core/src/toolbox_core/client.py | 21 +++---- .../toolbox_core/mcp_transport/telemetry.py | 5 +- .../mcp_transport/transport_base.py | 9 +-- .../toolbox-core/src/toolbox_core/tool.py | 10 +--- .../toolbox-core/src/toolbox_core/utils.py | 14 +---- packages/toolbox-core/tests/conftest.py | 30 +++++++--- .../tests/mcp_transport/test_base.py | 1 - .../tests/mcp_transport/test_telemetry.py | 31 +++-------- .../tests/mcp_transport/test_v20241105.py | 1 - .../tests/mcp_transport/test_v20250326.py | 1 - .../tests/mcp_transport/test_v20250618.py | 1 - .../tests/mcp_transport/test_v20251125.py | 1 - .../tests/mcp_transport/test_v20260618.py | 1 - .../toolbox-core/tests/test_auth_methods.py | 1 - packages/toolbox-core/tests/test_client.py | 10 +--- packages/toolbox-core/tests/test_e2e.py | 1 - packages/toolbox-core/tests/test_e2e_mcp.py | 1 - packages/toolbox-core/tests/test_protocol.py | 9 +-- .../toolbox-core/tests/test_sync_client.py | 9 +-- packages/toolbox-core/tests/test_sync_e2e.py | 1 - packages/toolbox-core/tests/test_sync_tool.py | 1 - packages/toolbox-core/tests/test_tool.py | 1 - packages/toolbox-core/tests/test_utils.py | 12 ++-- packages/toolbox-langchain/tests/conftest.py | 26 +++++++-- .../tests/test_async_client.py | 1 - .../toolbox-langchain/tests/test_client.py | 1 - packages/toolbox-langchain/tests/test_e2e.py | 1 - .../toolbox-langchain/tests/test_tools.py | 1 - packages/toolbox-llamaindex/tests/conftest.py | 26 +++++++-- .../tests/test_async_client.py | 1 - .../toolbox-llamaindex/tests/test_client.py | 1 - packages/toolbox-llamaindex/tests/test_e2e.py | 1 - .../toolbox-llamaindex/tests/test_tools.py | 1 - 41 files changed, 150 insertions(+), 207 deletions(-) diff --git a/packages/toolbox-adk/src/toolbox_adk/tool.py b/packages/toolbox-adk/src/toolbox_adk/tool.py index db41f81b9..6062f345f 100644 --- a/packages/toolbox-adk/src/toolbox_adk/tool.py +++ b/packages/toolbox-adk/src/toolbox_adk/tool.py @@ -17,16 +17,10 @@ from typing import Any, Awaitable, Callable, Dict, Mapping, Optional import toolbox_core -from fastapi.openapi.models import ( - OAuth2, - OAuthFlowAuthorizationCode, - OAuthFlows, -) -from google.adk.auth.auth_credential import ( - AuthCredential, - AuthCredentialTypes, - OAuth2Auth, -) +from fastapi.openapi.models import (OAuth2, OAuthFlowAuthorizationCode, + OAuthFlows) +from google.adk.auth.auth_credential import (AuthCredential, + AuthCredentialTypes, OAuth2Auth) from google.adk.auth.auth_tool import AuthConfig from google.adk.tools.base_tool import BaseTool from google.adk.tools.tool_context import ToolContext diff --git a/packages/toolbox-adk/src/toolbox_adk/toolset.py b/packages/toolbox-adk/src/toolbox_adk/toolset.py index 7689f96d9..e4a8eeb99 100644 --- a/packages/toolbox-adk/src/toolbox_adk/toolset.py +++ b/packages/toolbox-adk/src/toolbox_adk/toolset.py @@ -12,7 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Any, Awaitable, Callable, Dict, List, Mapping, Optional, Union +from typing import (Any, Awaitable, Callable, Dict, List, Mapping, Optional, + Union) from google.adk.agents.readonly_context import ReadonlyContext from google.adk.tools.base_tool import BaseTool diff --git a/packages/toolbox-adk/tests/integration/conftest.py b/packages/toolbox-adk/tests/integration/conftest.py index 65c607085..ccf56f8b7 100644 --- a/packages/toolbox-adk/tests/integration/conftest.py +++ b/packages/toolbox-adk/tests/integration/conftest.py @@ -25,6 +25,7 @@ from typing import Generator import google +import pytest import pytest_asyncio from google.auth import compute_engine from google.cloud import secretmanager, storage @@ -163,7 +164,14 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] ) toolbox_server_2 = subprocess.Popen( - ["./toolbox", "--port", "5001", "--tools-file", tools_file_path, "--enable-draft-specs"] + [ + "./toolbox", + "--port", + "5001", + "--tools-file", + tools_file_path, + "--enable-draft-specs", + ] ) # Wait for server to start @@ -188,20 +196,26 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None toolbox_server_1.wait(timeout=5) toolbox_server_2.wait(timeout=5) -@pytest_asyncio.fixture(params=["http://localhost:5000", "http://localhost:5001"], scope="session") + +@pytest.fixture( + params=["http://localhost:5000", "http://localhost:5001"], scope="session" +) def toolbox_server_url(request) -> str: return request.param -@pytest_asyncio.fixture(autouse=True) + +@pytest.fixture(autouse=True) def patch_toolbox_client_url(toolbox_server_url): from toolbox_adk.client import ToolboxToolset + original_init = ToolboxToolset.__init__ - + def new_init(self, server_url="http://localhost:5000", *args, **kwargs): if server_url == "http://localhost:5000": server_url = toolbox_server_url original_init(self, server_url, *args, **kwargs) - + from unittest.mock import patch - with patch.object(ToolboxToolset, '__init__', new_init, create=True): + + with patch.object(ToolboxToolset, "__init__", new_init, create=True): yield diff --git a/packages/toolbox-adk/tests/integration/test_integration.py b/packages/toolbox-adk/tests/integration/test_integration.py index 780b66d38..2f5566c4e 100644 --- a/packages/toolbox-adk/tests/integration/test_integration.py +++ b/packages/toolbox-adk/tests/integration/test_integration.py @@ -19,19 +19,16 @@ import pytest from google import genai from google.adk import Agent -from google.adk.auth.auth_credential import ( - AuthCredential, - AuthCredentialTypes, - OAuth2Auth, -) +from google.adk.auth.auth_credential import (AuthCredential, + AuthCredentialTypes, OAuth2Auth) from google.adk.runners import Runner -from google.adk.sessions.in_memory_session_service import InMemorySessionService +from google.adk.sessions.in_memory_session_service import \ + InMemorySessionService from google.adk.tools.base_tool import BaseTool from google.genai import types from pydantic import ValidationError -from toolbox_core.protocol import Protocol - from toolbox_adk import CredentialStrategy, ToolboxTool, ToolboxToolset +from toolbox_core.protocol import Protocol # Ensure TOOLBOX_VERSION is set for the fixture if "TOOLBOX_VERSION" not in os.environ: @@ -312,12 +309,9 @@ async def test_api_key_integration(self): async def test_adk_integration_optional_params(self): """test that we can create credentials from ADK objects without auth_scheme.""" - from google.adk.auth.auth_credential import ( - AuthCredential, - AuthCredentialTypes, - HttpAuth, - HttpCredentials, - ) + from google.adk.auth.auth_credential import (AuthCredential, + AuthCredentialTypes, + HttpAuth, HttpCredentials) # 1. Create ADK credential (HTTP Bearer) adk_creds = AuthCredential( diff --git a/packages/toolbox-adk/tests/unit/test_client.py b/packages/toolbox-adk/tests/unit/test_client.py index 7b1b0a25e..f3bc8f25c 100644 --- a/packages/toolbox-adk/tests/unit/test_client.py +++ b/packages/toolbox-adk/tests/unit/test_client.py @@ -16,7 +16,6 @@ from unittest.mock import AsyncMock, MagicMock, patch import pytest - from toolbox_adk import CredentialStrategy, ToolboxClient from toolbox_adk.client import CredentialConfig, CredentialType diff --git a/packages/toolbox-adk/tests/unit/test_credentials.py b/packages/toolbox-adk/tests/unit/test_credentials.py index 749d28667..c3464ee4c 100644 --- a/packages/toolbox-adk/tests/unit/test_credentials.py +++ b/packages/toolbox-adk/tests/unit/test_credentials.py @@ -65,11 +65,9 @@ def test_api_key(self): def test_from_adk_credentials_oauth2(self): from fastapi.openapi.models import OAuth2, OAuthFlows - from google.adk.auth.auth_credential import ( - AuthCredential, - AuthCredentialTypes, - OAuth2Auth, - ) + from google.adk.auth.auth_credential import (AuthCredential, + AuthCredentialTypes, + OAuth2Auth) auth_credential = AuthCredential( auth_type=AuthCredentialTypes.OAUTH2, @@ -86,12 +84,9 @@ def test_from_adk_credentials_oauth2(self): def test_from_adk_credentials_http_bearer(self): from fastapi.openapi.models import HTTPBearer - from google.adk.auth.auth_credential import ( - AuthCredential, - AuthCredentialTypes, - HttpAuth, - HttpCredentials, - ) + from google.adk.auth.auth_credential import (AuthCredential, + AuthCredentialTypes, + HttpAuth, HttpCredentials) auth_credential = AuthCredential( auth_type=AuthCredentialTypes.HTTP, @@ -109,10 +104,8 @@ def test_from_adk_credentials_http_bearer(self): def test_from_adk_credentials_api_key(self): from fastapi.openapi.models import APIKey, APIKeyIn - from google.adk.auth.auth_credential import ( - AuthCredential, - AuthCredentialTypes, - ) + from google.adk.auth.auth_credential import (AuthCredential, + AuthCredentialTypes) auth_credential = AuthCredential( auth_type=AuthCredentialTypes.API_KEY, api_key="abc" @@ -129,10 +122,8 @@ def test_from_adk_credentials_api_key(self): def test_from_adk_credentials_api_key_default_location(self): from fastapi.openapi.models import APIKey - from google.adk.auth.auth_credential import ( - AuthCredential, - AuthCredentialTypes, - ) + from google.adk.auth.auth_credential import (AuthCredential, + AuthCredentialTypes) auth_credential = AuthCredential( auth_type=AuthCredentialTypes.API_KEY, api_key="abc" @@ -157,10 +148,8 @@ class MockScheme: def test_from_adk_credentials_api_key_query_fail(self): import pytest from fastapi.openapi.models import APIKey, APIKeyIn - from google.adk.auth.auth_credential import ( - AuthCredential, - AuthCredentialTypes, - ) + from google.adk.auth.auth_credential import (AuthCredential, + AuthCredentialTypes) cred = AuthCredential(auth_type=AuthCredentialTypes.API_KEY, api_key="abc") scheme = APIKey(type="apiKey", name="key", **{"in": APIKeyIn.query}) @@ -172,10 +161,8 @@ def test_from_adk_credentials_api_key_query_fail(self): def test_from_adk_credentials_api_key_no_scheme_raises(self): import pytest - from google.adk.auth.auth_credential import ( - AuthCredential, - AuthCredentialTypes, - ) + from google.adk.auth.auth_credential import (AuthCredential, + AuthCredentialTypes) auth_credential = AuthCredential( auth_type=AuthCredentialTypes.API_KEY, api_key="my-key" @@ -187,10 +174,8 @@ def test_from_adk_credentials_api_key_no_scheme_raises(self): def test_from_adk_credentials_unsupported(self): import pytest - from google.adk.auth.auth_credential import ( - AuthCredential, - AuthCredentialTypes, - ) + from google.adk.auth.auth_credential import (AuthCredential, + AuthCredentialTypes) auth_credential = AuthCredential( auth_type=AuthCredentialTypes.OAUTH2 @@ -201,11 +186,9 @@ def test_from_adk_credentials_unsupported(self): def test_from_adk_auth_config(self): from fastapi.openapi.models import OAuth2, OAuthFlows - from google.adk.auth.auth_credential import ( - AuthCredential, - AuthCredentialTypes, - OAuth2Auth, - ) + from google.adk.auth.auth_credential import (AuthCredential, + AuthCredentialTypes, + OAuth2Auth) from google.adk.auth.auth_tool import AuthConfig oauth2_auth = OAuth2Auth(client_id="cid2", client_secret="csec2", scopes=["s2"]) diff --git a/packages/toolbox-adk/tests/unit/test_tool.py b/packages/toolbox-adk/tests/unit/test_tool.py index 3b55290ea..0dc2e4bfe 100644 --- a/packages/toolbox-adk/tests/unit/test_tool.py +++ b/packages/toolbox-adk/tests/unit/test_tool.py @@ -16,7 +16,6 @@ import pytest from google.genai.types import Type - from toolbox_adk.credentials import CredentialConfig, CredentialType from toolbox_adk.tool import ToolboxTool diff --git a/packages/toolbox-adk/tests/unit/test_toolset.py b/packages/toolbox-adk/tests/unit/test_toolset.py index ff632e1ea..86a121333 100644 --- a/packages/toolbox-adk/tests/unit/test_toolset.py +++ b/packages/toolbox-adk/tests/unit/test_toolset.py @@ -16,10 +16,9 @@ from unittest.mock import AsyncMock, MagicMock, patch import pytest -from toolbox_core.protocol import Protocol - from toolbox_adk.tool import ToolboxTool from toolbox_adk.toolset import ToolboxToolset +from toolbox_core.protocol import Protocol class TestToolboxToolset: diff --git a/packages/toolbox-core/src/toolbox_core/client.py b/packages/toolbox-core/src/toolbox_core/client.py index b2224eedc..8efd2ad0d 100644 --- a/packages/toolbox-core/src/toolbox_core/client.py +++ b/packages/toolbox-core/src/toolbox_core/client.py @@ -20,26 +20,19 @@ from aiohttp import ClientSession from deprecated import deprecated - from toolbox_core.exceptions import ProtocolNegotiationError from . import version from .itransport import ITransport -from .mcp_transport import ( - McpHttpTransportV20241105, - McpHttpTransportV20250326, - McpHttpTransportV20250618, - McpHttpTransportV20251125, - McpHttpTransportV20260618, -) +from .mcp_transport import (McpHttpTransportV20241105, + McpHttpTransportV20250326, + McpHttpTransportV20250618, + McpHttpTransportV20251125, + McpHttpTransportV20260618) from .protocol import Protocol, ToolSchema from .tool import ToolboxTool -from .utils import ( - identify_auth_requirements, - resolve_value, - validate_unused_requirements, - warn_if_http_and_headers, -) +from .utils import (identify_auth_requirements, resolve_value, + validate_unused_requirements, warn_if_http_and_headers) class _McpTransportProxy(ITransport): diff --git a/packages/toolbox-core/src/toolbox_core/mcp_transport/telemetry.py b/packages/toolbox-core/src/toolbox_core/mcp_transport/telemetry.py index ab9972034..1cca9b9b2 100644 --- a/packages/toolbox-core/src/toolbox_core/mcp_transport/telemetry.py +++ b/packages/toolbox-core/src/toolbox_core/mcp_transport/telemetry.py @@ -33,9 +33,8 @@ from opentelemetry import metrics, trace from opentelemetry.metrics import Histogram, Meter from opentelemetry.trace import Span, SpanKind, Status, StatusCode, Tracer - from opentelemetry.trace.propagation.tracecontext import ( - TraceContextTextMapPropagator, - ) + from opentelemetry.trace.propagation.tracecontext import \ + TraceContextTextMapPropagator TELEMETRY_AVAILABLE = True except ImportError: diff --git a/packages/toolbox-core/src/toolbox_core/mcp_transport/transport_base.py b/packages/toolbox-core/src/toolbox_core/mcp_transport/transport_base.py index 735ae9066..b91d957aa 100644 --- a/packages/toolbox-core/src/toolbox_core/mcp_transport/transport_base.py +++ b/packages/toolbox-core/src/toolbox_core/mcp_transport/transport_base.py @@ -21,13 +21,8 @@ from .. import version from ..itransport import ITransport -from ..protocol import ( - AdditionalPropertiesSchema, - ParameterSchema, - Protocol, - TelemetryAttributes, - ToolSchema, -) +from ..protocol import (AdditionalPropertiesSchema, ParameterSchema, Protocol, + TelemetryAttributes, ToolSchema) from . import telemetry diff --git a/packages/toolbox-core/src/toolbox_core/tool.py b/packages/toolbox-core/src/toolbox_core/tool.py index 89212325e..8ef2c8ef1 100644 --- a/packages/toolbox-core/src/toolbox_core/tool.py +++ b/packages/toolbox-core/src/toolbox_core/tool.py @@ -20,13 +20,9 @@ from .itransport import ITransport from .protocol import ParameterSchema, TelemetryAttributes -from .utils import ( - create_func_docstring, - identify_auth_requirements, - params_to_pydantic_model, - resolve_value, - warn_if_http_and_headers, -) +from .utils import (create_func_docstring, identify_auth_requirements, + params_to_pydantic_model, resolve_value, + warn_if_http_and_headers) class ToolboxTool: diff --git a/packages/toolbox-core/src/toolbox_core/utils.py b/packages/toolbox-core/src/toolbox_core/utils.py index 92660c84b..7330625a6 100644 --- a/packages/toolbox-core/src/toolbox_core/utils.py +++ b/packages/toolbox-core/src/toolbox_core/utils.py @@ -15,20 +15,10 @@ import asyncio import warnings -from typing import ( - Any, - Awaitable, - Callable, - Iterable, - Mapping, - Sequence, - Type, - Union, - cast, -) +from typing import (Any, Awaitable, Callable, Iterable, Mapping, Sequence, + Type, Union, cast) from pydantic import BaseModel, Field, create_model - from toolbox_core.protocol import ParameterSchema diff --git a/packages/toolbox-core/tests/conftest.py b/packages/toolbox-core/tests/conftest.py index 7d972f8b4..579eb71bc 100644 --- a/packages/toolbox-core/tests/conftest.py +++ b/packages/toolbox-core/tests/conftest.py @@ -25,6 +25,7 @@ from typing import Generator import google +import pytest import pytest_asyncio from google.auth import compute_engine from google.cloud import secretmanager, storage @@ -147,7 +148,14 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] ) toolbox_server_2 = subprocess.Popen( - ["./toolbox", "--port", "5001", "--tools-file", tools_file_path, "--enable-draft-specs"] + [ + "./toolbox", + "--port", + "5001", + "--tools-file", + tools_file_path, + "--enable-draft-specs", + ] ) # Wait for server to start @@ -172,28 +180,34 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None toolbox_server_1.wait(timeout=5) toolbox_server_2.wait(timeout=5) -@pytest_asyncio.fixture(params=["http://localhost:5000", "http://localhost:5001"], scope="session") + +@pytest.fixture( + params=["http://localhost:5000", "http://localhost:5001"], scope="session" +) def toolbox_server_url(request) -> str: return request.param -@pytest_asyncio.fixture(autouse=True) + +@pytest.fixture(autouse=True) def patch_toolbox_client_url(toolbox_server_url): from toolbox_core.client import ToolboxClient from toolbox_core.sync_client import ToolboxSyncClient + original_init = ToolboxClient.__init__ original_sync_init = ToolboxSyncClient.__init__ - + def new_init(self, url="http://localhost:5000", *args, **kwargs): if url == "http://localhost:5000": url = toolbox_server_url original_init(self, url, *args, **kwargs) - + def new_sync_init(self, url="http://localhost:5000", *args, **kwargs): if url == "http://localhost:5000": url = toolbox_server_url original_sync_init(self, url, *args, **kwargs) - + from unittest.mock import patch - with patch.object(ToolboxClient, '__init__', new_init, create=True): - with patch.object(ToolboxSyncClient, '__init__', new_sync_init, create=True): + + with patch.object(ToolboxClient, "__init__", new_init, create=True): + with patch.object(ToolboxSyncClient, "__init__", new_sync_init, create=True): yield diff --git a/packages/toolbox-core/tests/mcp_transport/test_base.py b/packages/toolbox-core/tests/mcp_transport/test_base.py index 785065023..bfd8ed1f2 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_base.py +++ b/packages/toolbox-core/tests/mcp_transport/test_base.py @@ -19,7 +19,6 @@ import pytest import pytest_asyncio from aiohttp import ClientSession - from toolbox_core.mcp_transport.transport_base import _McpHttpTransportBase from toolbox_core.protocol import TelemetryAttributes, ToolSchema diff --git a/packages/toolbox-core/tests/mcp_transport/test_telemetry.py b/packages/toolbox-core/tests/mcp_transport/test_telemetry.py index f3a2eaff8..359232aa6 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_telemetry.py +++ b/packages/toolbox-core/tests/mcp_transport/test_telemetry.py @@ -15,31 +15,16 @@ from unittest.mock import ANY, MagicMock, patch import pytest - import toolbox_core.mcp_transport.telemetry as telemetry_module from toolbox_core.mcp_transport.telemetry import ( - ATTR_ERROR_TYPE, - ATTR_GEN_AI_OPERATION_NAME, - ATTR_GEN_AI_TOOL_NAME, - ATTR_MCP_METHOD_NAME, - ATTR_MCP_PROTOCOL_VERSION, - ATTR_NETWORK_PROTOCOL_NAME, - ATTR_NETWORK_TRANSPORT, - ATTR_SERVER_ADDRESS, - ATTR_SERVER_PORT, - create_operation_duration_histogram, - create_session_duration_histogram, - create_traceparent_from_context, - create_tracestate_from_context, - end_span, - extract_server_info, - get_meter, - get_tracer, - record_error_from_jsonrpc, - record_operation_duration, - record_session_duration, - start_span, -) + ATTR_ERROR_TYPE, ATTR_GEN_AI_OPERATION_NAME, ATTR_GEN_AI_TOOL_NAME, + ATTR_MCP_METHOD_NAME, ATTR_MCP_PROTOCOL_VERSION, + ATTR_NETWORK_PROTOCOL_NAME, ATTR_NETWORK_TRANSPORT, ATTR_SERVER_ADDRESS, + ATTR_SERVER_PORT, create_operation_duration_histogram, + create_session_duration_histogram, create_traceparent_from_context, + create_tracestate_from_context, end_span, extract_server_info, get_meter, + get_tracer, record_error_from_jsonrpc, record_operation_duration, + record_session_duration, start_span) class TestGetTracer: diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20241105.py b/packages/toolbox-core/tests/mcp_transport/test_v20241105.py index eadb0e264..89af3827f 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20241105.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20241105.py @@ -17,7 +17,6 @@ import pytest import pytest_asyncio from aiohttp import ClientSession - from toolbox_core.exceptions import ProtocolNegotiationError from toolbox_core.mcp_transport.v20241105 import types from toolbox_core.mcp_transport.v20241105.mcp import McpHttpTransportV20241105 diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20250326.py b/packages/toolbox-core/tests/mcp_transport/test_v20250326.py index a9fb3f35b..ce4f94139 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20250326.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20250326.py @@ -17,7 +17,6 @@ import pytest import pytest_asyncio from aiohttp import ClientSession - from toolbox_core.mcp_transport.v20250326 import types from toolbox_core.mcp_transport.v20250326.mcp import McpHttpTransportV20250326 from toolbox_core.protocol import ManifestSchema, Protocol diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20250618.py b/packages/toolbox-core/tests/mcp_transport/test_v20250618.py index b5a1a0a94..0da5f12d9 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20250618.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20250618.py @@ -17,7 +17,6 @@ import pytest import pytest_asyncio from aiohttp import ClientSession - from toolbox_core.exceptions import ProtocolNegotiationError from toolbox_core.mcp_transport.v20250618 import types from toolbox_core.mcp_transport.v20250618.mcp import McpHttpTransportV20250618 diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20251125.py b/packages/toolbox-core/tests/mcp_transport/test_v20251125.py index f575b81bc..190ad6970 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20251125.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20251125.py @@ -17,7 +17,6 @@ import pytest import pytest_asyncio from aiohttp import ClientSession - from toolbox_core.exceptions import ProtocolNegotiationError from toolbox_core.mcp_transport.v20251125 import types from toolbox_core.mcp_transport.v20251125.mcp import McpHttpTransportV20251125 diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20260618.py b/packages/toolbox-core/tests/mcp_transport/test_v20260618.py index 5c751320f..dd927252b 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20260618.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20260618.py @@ -17,7 +17,6 @@ import pytest import pytest_asyncio from aiohttp import ClientSession - from toolbox_core.mcp_transport.v20260618 import types from toolbox_core.mcp_transport.v20260618.mcp import McpHttpTransportV20260618 from toolbox_core.protocol import ManifestSchema, Protocol diff --git a/packages/toolbox-core/tests/test_auth_methods.py b/packages/toolbox-core/tests/test_auth_methods.py index cd78073f7..07ac56c78 100644 --- a/packages/toolbox-core/tests/test_auth_methods.py +++ b/packages/toolbox-core/tests/test_auth_methods.py @@ -17,7 +17,6 @@ import pytest from google.auth.exceptions import GoogleAuthError - from toolbox_core import auth_methods # Constants for test values diff --git a/packages/toolbox-core/tests/test_client.py b/packages/toolbox-core/tests/test_client.py index e28bb03a1..1f0dfeabe 100644 --- a/packages/toolbox-core/tests/test_client.py +++ b/packages/toolbox-core/tests/test_client.py @@ -20,16 +20,10 @@ import pytest from aiohttp import web - from toolbox_core.client import ToolboxClient from toolbox_core.itransport import ITransport -from toolbox_core.protocol import ( - ManifestSchema, - ParameterSchema, - Protocol, - TelemetryAttributes, - ToolSchema, -) +from toolbox_core.protocol import (ManifestSchema, ParameterSchema, Protocol, + TelemetryAttributes, ToolSchema) TEST_BASE_URL = "http://toolbox.example.com" diff --git a/packages/toolbox-core/tests/test_e2e.py b/packages/toolbox-core/tests/test_e2e.py index 0b926e178..273ddc085 100644 --- a/packages/toolbox-core/tests/test_e2e.py +++ b/packages/toolbox-core/tests/test_e2e.py @@ -18,7 +18,6 @@ import pytest import pytest_asyncio from pydantic import ValidationError - from toolbox_core.client import ToolboxClient from toolbox_core.protocol import Protocol from toolbox_core.tool import ToolboxTool diff --git a/packages/toolbox-core/tests/test_e2e_mcp.py b/packages/toolbox-core/tests/test_e2e_mcp.py index b4bd541fa..92df97afb 100644 --- a/packages/toolbox-core/tests/test_e2e_mcp.py +++ b/packages/toolbox-core/tests/test_e2e_mcp.py @@ -18,7 +18,6 @@ import pytest import pytest_asyncio from pydantic import ValidationError - from toolbox_core.client import ToolboxClient from toolbox_core.protocol import Protocol from toolbox_core.tool import ToolboxTool diff --git a/packages/toolbox-core/tests/test_protocol.py b/packages/toolbox-core/tests/test_protocol.py index 3c50b3225..f3ab0cb9a 100644 --- a/packages/toolbox-core/tests/test_protocol.py +++ b/packages/toolbox-core/tests/test_protocol.py @@ -17,13 +17,8 @@ from typing import Any, Optional import pytest - -from toolbox_core.protocol import ( - AdditionalPropertiesSchema, - ParameterSchema, - Protocol, - TelemetryAttributes, -) +from toolbox_core.protocol import (AdditionalPropertiesSchema, ParameterSchema, + Protocol, TelemetryAttributes) # --------------------------------------------------------------------------- # # TelemetryAttributes — wire format & alias contract # diff --git a/packages/toolbox-core/tests/test_sync_client.py b/packages/toolbox-core/tests/test_sync_client.py index 6a6649b9f..ee5d5da67 100644 --- a/packages/toolbox-core/tests/test_sync_client.py +++ b/packages/toolbox-core/tests/test_sync_client.py @@ -18,15 +18,10 @@ from unittest.mock import AsyncMock, Mock, patch import pytest - from toolbox_core.client import ToolboxClient from toolbox_core.itransport import ITransport -from toolbox_core.protocol import ( - ManifestSchema, - ParameterSchema, - TelemetryAttributes, - ToolSchema, -) +from toolbox_core.protocol import (ManifestSchema, ParameterSchema, + TelemetryAttributes, ToolSchema) from toolbox_core.sync_client import ToolboxSyncClient from toolbox_core.sync_tool import ToolboxSyncTool diff --git a/packages/toolbox-core/tests/test_sync_e2e.py b/packages/toolbox-core/tests/test_sync_e2e.py index a306cedc2..3b8a74304 100644 --- a/packages/toolbox-core/tests/test_sync_e2e.py +++ b/packages/toolbox-core/tests/test_sync_e2e.py @@ -13,7 +13,6 @@ # limitations under the License. import pytest - from toolbox_core.sync_client import ToolboxSyncClient from toolbox_core.sync_tool import ToolboxSyncTool diff --git a/packages/toolbox-core/tests/test_sync_tool.py b/packages/toolbox-core/tests/test_sync_tool.py index 7db4f94e1..20ac5ae5a 100644 --- a/packages/toolbox-core/tests/test_sync_tool.py +++ b/packages/toolbox-core/tests/test_sync_tool.py @@ -20,7 +20,6 @@ from unittest.mock import MagicMock, Mock, create_autospec, patch import pytest - from toolbox_core.protocol import TelemetryAttributes from toolbox_core.sync_tool import ToolboxSyncTool from toolbox_core.tool import ToolboxTool diff --git a/packages/toolbox-core/tests/test_tool.py b/packages/toolbox-core/tests/test_tool.py index 1b23db3ae..9d8b7ccc4 100644 --- a/packages/toolbox-core/tests/test_tool.py +++ b/packages/toolbox-core/tests/test_tool.py @@ -24,7 +24,6 @@ from aiohttp import ClientSession from aioresponses import aioresponses from pydantic import ValidationError - from toolbox_core.itransport import ITransport from toolbox_core.protocol import ParameterSchema, TelemetryAttributes from toolbox_core.tool import ToolboxTool diff --git a/packages/toolbox-core/tests/test_utils.py b/packages/toolbox-core/tests/test_utils.py index ec6ebb22b..3ec60a5d4 100644 --- a/packages/toolbox-core/tests/test_utils.py +++ b/packages/toolbox-core/tests/test_utils.py @@ -20,15 +20,11 @@ import pytest from pydantic import BaseModel, ValidationError - from toolbox_core.protocol import ParameterSchema -from toolbox_core.utils import ( - create_func_docstring, - identify_auth_requirements, - params_to_pydantic_model, - resolve_value, - warn_if_http_and_headers, -) +from toolbox_core.utils import (create_func_docstring, + identify_auth_requirements, + params_to_pydantic_model, resolve_value, + warn_if_http_and_headers) def create_param_mock(name: str, description: str, annotation: Type) -> Mock: diff --git a/packages/toolbox-langchain/tests/conftest.py b/packages/toolbox-langchain/tests/conftest.py index 1c5c22b4d..8e4f9571f 100644 --- a/packages/toolbox-langchain/tests/conftest.py +++ b/packages/toolbox-langchain/tests/conftest.py @@ -25,6 +25,7 @@ from typing import Generator import google +import pytest import pytest_asyncio from google.auth import compute_engine from google.cloud import secretmanager, storage @@ -147,7 +148,14 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] ) toolbox_server_2 = subprocess.Popen( - ["./toolbox", "--port", "5001", "--tools-file", tools_file_path, "--enable-draft-specs"] + [ + "./toolbox", + "--port", + "5001", + "--tools-file", + tools_file_path, + "--enable-draft-specs", + ] ) # Wait for server to start @@ -172,20 +180,26 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None toolbox_server_1.wait() toolbox_server_2.wait() -@pytest_asyncio.fixture(params=["http://localhost:5000", "http://localhost:5001"], scope="session") + +@pytest.fixture( + params=["http://localhost:5000", "http://localhost:5001"], scope="session" +) def toolbox_server_url(request) -> str: return request.param -@pytest_asyncio.fixture(autouse=True) + +@pytest.fixture(autouse=True) def patch_toolbox_client_url(toolbox_server_url): from toolbox_core.client import ToolboxClient + original_init = ToolboxClient.__init__ - + def new_init(self, url="http://localhost:5000", *args, **kwargs): if url == "http://localhost:5000": url = toolbox_server_url original_init(self, url, *args, **kwargs) - + from unittest.mock import patch - with patch.object(ToolboxClient, '__init__', new_init, create=True): + + with patch.object(ToolboxClient, "__init__", new_init, create=True): yield diff --git a/packages/toolbox-langchain/tests/test_async_client.py b/packages/toolbox-langchain/tests/test_async_client.py index 9da3511df..c93468d48 100644 --- a/packages/toolbox-langchain/tests/test_async_client.py +++ b/packages/toolbox-langchain/tests/test_async_client.py @@ -21,7 +21,6 @@ from toolbox_core.protocol import ParameterSchema as CoreParameterSchema from toolbox_core.protocol import Protocol from toolbox_core.tool import ToolboxTool as ToolboxCoreTool - from toolbox_langchain.async_client import AsyncToolboxClient from toolbox_langchain.async_tools import AsyncToolboxTool diff --git a/packages/toolbox-langchain/tests/test_client.py b/packages/toolbox-langchain/tests/test_client.py index 6150d4a17..eb7275455 100644 --- a/packages/toolbox-langchain/tests/test_client.py +++ b/packages/toolbox-langchain/tests/test_client.py @@ -20,7 +20,6 @@ from toolbox_core.protocol import Protocol from toolbox_core.sync_tool import ToolboxSyncTool as ToolboxCoreSyncTool from toolbox_core.utils import params_to_pydantic_model - from toolbox_langchain.client import ToolboxClient from toolbox_langchain.tools import ToolboxTool diff --git a/packages/toolbox-langchain/tests/test_e2e.py b/packages/toolbox-langchain/tests/test_e2e.py index 93fbd01ea..924f58040 100644 --- a/packages/toolbox-langchain/tests/test_e2e.py +++ b/packages/toolbox-langchain/tests/test_e2e.py @@ -37,7 +37,6 @@ import pytest import pytest_asyncio from pydantic import ValidationError - from toolbox_langchain.client import ToolboxClient diff --git a/packages/toolbox-langchain/tests/test_tools.py b/packages/toolbox-langchain/tests/test_tools.py index 9775283a3..0d41a1a3c 100644 --- a/packages/toolbox-langchain/tests/test_tools.py +++ b/packages/toolbox-langchain/tests/test_tools.py @@ -21,7 +21,6 @@ from toolbox_core.sync_tool import ToolboxSyncTool as ToolboxCoreSyncTool from toolbox_core.tool import ToolboxTool as CoreAsyncTool from toolbox_core.utils import params_to_pydantic_model - from toolbox_langchain.tools import ToolboxTool diff --git a/packages/toolbox-llamaindex/tests/conftest.py b/packages/toolbox-llamaindex/tests/conftest.py index eae76a1bd..7632d8d29 100644 --- a/packages/toolbox-llamaindex/tests/conftest.py +++ b/packages/toolbox-llamaindex/tests/conftest.py @@ -25,6 +25,7 @@ from typing import Generator import google +import pytest import pytest_asyncio from google.auth import compute_engine from google.cloud import secretmanager, storage @@ -147,7 +148,14 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] ) toolbox_server_2 = subprocess.Popen( - ["./toolbox", "--port", "5001", "--tools-file", tools_file_path, "--enable-draft-specs"] + [ + "./toolbox", + "--port", + "5001", + "--tools-file", + tools_file_path, + "--enable-draft-specs", + ] ) # Wait for server to start @@ -172,20 +180,26 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None toolbox_server_1.wait() toolbox_server_2.wait() -@pytest_asyncio.fixture(params=["http://localhost:5000", "http://localhost:5001"], scope="session") + +@pytest.fixture( + params=["http://localhost:5000", "http://localhost:5001"], scope="session" +) def toolbox_server_url(request) -> str: return request.param -@pytest_asyncio.fixture(autouse=True) + +@pytest.fixture(autouse=True) def patch_toolbox_client_url(toolbox_server_url): from toolbox_core.client import ToolboxClient + original_init = ToolboxClient.__init__ - + def new_init(self, url="http://localhost:5000", *args, **kwargs): if url == "http://localhost:5000": url = toolbox_server_url original_init(self, url, *args, **kwargs) - + from unittest.mock import patch - with patch.object(ToolboxClient, '__init__', new_init, create=True): + + with patch.object(ToolboxClient, "__init__", new_init, create=True): yield diff --git a/packages/toolbox-llamaindex/tests/test_async_client.py b/packages/toolbox-llamaindex/tests/test_async_client.py index 6011a3474..26a07cb11 100644 --- a/packages/toolbox-llamaindex/tests/test_async_client.py +++ b/packages/toolbox-llamaindex/tests/test_async_client.py @@ -21,7 +21,6 @@ from toolbox_core.protocol import ParameterSchema as CoreParameterSchema from toolbox_core.protocol import Protocol from toolbox_core.tool import ToolboxTool as ToolboxCoreTool - from toolbox_llamaindex.async_client import AsyncToolboxClient from toolbox_llamaindex.async_tools import AsyncToolboxTool diff --git a/packages/toolbox-llamaindex/tests/test_client.py b/packages/toolbox-llamaindex/tests/test_client.py index 9ae5364d2..bf8379f02 100644 --- a/packages/toolbox-llamaindex/tests/test_client.py +++ b/packages/toolbox-llamaindex/tests/test_client.py @@ -20,7 +20,6 @@ from toolbox_core.protocol import Protocol from toolbox_core.sync_tool import ToolboxSyncTool as ToolboxCoreSyncTool from toolbox_core.utils import params_to_pydantic_model - from toolbox_llamaindex.client import ToolboxClient from toolbox_llamaindex.tools import ToolboxTool diff --git a/packages/toolbox-llamaindex/tests/test_e2e.py b/packages/toolbox-llamaindex/tests/test_e2e.py index e0cdba4cb..f4006862d 100644 --- a/packages/toolbox-llamaindex/tests/test_e2e.py +++ b/packages/toolbox-llamaindex/tests/test_e2e.py @@ -37,7 +37,6 @@ import pytest import pytest_asyncio from pydantic import ValidationError - from toolbox_llamaindex.client import ToolboxClient diff --git a/packages/toolbox-llamaindex/tests/test_tools.py b/packages/toolbox-llamaindex/tests/test_tools.py index 980926acb..77843b9fc 100644 --- a/packages/toolbox-llamaindex/tests/test_tools.py +++ b/packages/toolbox-llamaindex/tests/test_tools.py @@ -22,7 +22,6 @@ from toolbox_core.sync_tool import ToolboxSyncTool as ToolboxCoreSyncTool from toolbox_core.tool import ToolboxTool as CoreAsyncTool from toolbox_core.utils import params_to_pydantic_model - from toolbox_llamaindex.async_tools import AsyncToolboxTool from toolbox_llamaindex.tools import ToolboxTool From a25baf40d15801d11e1e80c0c61f040b52b3ecb6 Mon Sep 17 00:00:00 2001 From: Anubhav Dhawan Date: Tue, 30 Jun 2026 21:24:00 +0530 Subject: [PATCH 10/19] fix(tests): use pytest.fixture for sync fixtures and fix isort formatting --- packages/toolbox-adk/src/toolbox_adk/tool.py | 10 +++-- .../toolbox-adk/src/toolbox_adk/toolset.py | 3 +- .../toolbox-adk/tests/integration/conftest.py | 13 +++--- .../tests/integration/test_integration.py | 22 ++++++---- .../toolbox-adk/tests/unit/test_client.py | 1 + .../tests/unit/test_credentials.py | 40 ++++++++++--------- packages/toolbox-adk/tests/unit/test_tool.py | 1 + .../toolbox-adk/tests/unit/test_toolset.py | 3 +- .../toolbox-core/src/toolbox_core/client.py | 21 ++++++---- .../toolbox_core/mcp_transport/telemetry.py | 5 ++- .../mcp_transport/transport_base.py | 9 ++++- .../toolbox-core/src/toolbox_core/tool.py | 10 +++-- .../toolbox-core/src/toolbox_core/utils.py | 14 ++++++- packages/toolbox-core/tests/conftest.py | 13 +++--- .../tests/mcp_transport/test_base.py | 1 + .../tests/mcp_transport/test_telemetry.py | 31 ++++++++++---- .../tests/mcp_transport/test_v20241105.py | 1 + .../tests/mcp_transport/test_v20250326.py | 1 + .../tests/mcp_transport/test_v20250618.py | 1 + .../tests/mcp_transport/test_v20251125.py | 1 + .../tests/mcp_transport/test_v20260618.py | 1 + .../toolbox-core/tests/test_auth_methods.py | 1 + packages/toolbox-core/tests/test_client.py | 10 ++++- packages/toolbox-core/tests/test_e2e.py | 1 + packages/toolbox-core/tests/test_e2e_mcp.py | 1 + packages/toolbox-core/tests/test_protocol.py | 9 ++++- .../toolbox-core/tests/test_sync_client.py | 9 ++++- packages/toolbox-core/tests/test_sync_e2e.py | 1 + packages/toolbox-core/tests/test_sync_tool.py | 1 + packages/toolbox-core/tests/test_tool.py | 1 + packages/toolbox-core/tests/test_utils.py | 12 ++++-- packages/toolbox-langchain/tests/conftest.py | 13 +++--- .../tests/test_async_client.py | 1 + .../toolbox-langchain/tests/test_client.py | 1 + packages/toolbox-langchain/tests/test_e2e.py | 1 + .../toolbox-langchain/tests/test_tools.py | 1 + packages/toolbox-llamaindex/tests/conftest.py | 13 +++--- .../tests/test_async_client.py | 1 + .../toolbox-llamaindex/tests/test_client.py | 1 + packages/toolbox-llamaindex/tests/test_e2e.py | 1 + .../toolbox-llamaindex/tests/test_tools.py | 1 + 41 files changed, 186 insertions(+), 96 deletions(-) diff --git a/packages/toolbox-adk/src/toolbox_adk/tool.py b/packages/toolbox-adk/src/toolbox_adk/tool.py index 6062f345f..0d94821b6 100644 --- a/packages/toolbox-adk/src/toolbox_adk/tool.py +++ b/packages/toolbox-adk/src/toolbox_adk/tool.py @@ -17,10 +17,12 @@ from typing import Any, Awaitable, Callable, Dict, Mapping, Optional import toolbox_core -from fastapi.openapi.models import (OAuth2, OAuthFlowAuthorizationCode, - OAuthFlows) -from google.adk.auth.auth_credential import (AuthCredential, - AuthCredentialTypes, OAuth2Auth) +from fastapi.openapi.models import OAuth2, OAuthFlowAuthorizationCode, OAuthFlows +from google.adk.auth.auth_credential import ( + AuthCredential, + AuthCredentialTypes, + OAuth2Auth, +) from google.adk.auth.auth_tool import AuthConfig from google.adk.tools.base_tool import BaseTool from google.adk.tools.tool_context import ToolContext diff --git a/packages/toolbox-adk/src/toolbox_adk/toolset.py b/packages/toolbox-adk/src/toolbox_adk/toolset.py index e4a8eeb99..7689f96d9 100644 --- a/packages/toolbox-adk/src/toolbox_adk/toolset.py +++ b/packages/toolbox-adk/src/toolbox_adk/toolset.py @@ -12,8 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import (Any, Awaitable, Callable, Dict, List, Mapping, Optional, - Union) +from typing import Any, Awaitable, Callable, Dict, List, Mapping, Optional, Union from google.adk.agents.readonly_context import ReadonlyContext from google.adk.tools.base_tool import BaseTool diff --git a/packages/toolbox-adk/tests/integration/conftest.py b/packages/toolbox-adk/tests/integration/conftest.py index ccf56f8b7..0a90f2983 100644 --- a/packages/toolbox-adk/tests/integration/conftest.py +++ b/packages/toolbox-adk/tests/integration/conftest.py @@ -26,7 +26,6 @@ import google import pytest -import pytest_asyncio from google.auth import compute_engine from google.cloud import secretmanager, storage @@ -93,17 +92,17 @@ def get_auth_token(client_id: str) -> str: #### Define Fixtures -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def project_id() -> str: return get_env_var("GOOGLE_CLOUD_PROJECT") -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def toolbox_version() -> str: return get_env_var("TOOLBOX_VERSION") -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def tools_file_path(project_id: str) -> Generator[str]: """Provides a temporary file path containing the tools manifest.""" if os.environ.get("TEST_MOCK_GCP"): @@ -123,7 +122,7 @@ def tools_file_path(project_id: str) -> Generator[str]: os.remove(tools_file_path) -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def auth_token1(project_id: str) -> str: if os.environ.get("TEST_MOCK_GCP"): return "mock-token-1" @@ -133,7 +132,7 @@ def auth_token1(project_id: str) -> str: return get_auth_token(client_id) -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def auth_token2(project_id: str) -> str: if os.environ.get("TEST_MOCK_GCP"): return "mock-token-2" @@ -143,7 +142,7 @@ def auth_token2(project_id: str) -> str: return get_auth_token(client_id) -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: """Starts the toolbox server as a subprocess.""" if os.environ.get("TEST_MOCK_GCP"): diff --git a/packages/toolbox-adk/tests/integration/test_integration.py b/packages/toolbox-adk/tests/integration/test_integration.py index 2f5566c4e..780b66d38 100644 --- a/packages/toolbox-adk/tests/integration/test_integration.py +++ b/packages/toolbox-adk/tests/integration/test_integration.py @@ -19,17 +19,20 @@ import pytest from google import genai from google.adk import Agent -from google.adk.auth.auth_credential import (AuthCredential, - AuthCredentialTypes, OAuth2Auth) +from google.adk.auth.auth_credential import ( + AuthCredential, + AuthCredentialTypes, + OAuth2Auth, +) from google.adk.runners import Runner -from google.adk.sessions.in_memory_session_service import \ - InMemorySessionService +from google.adk.sessions.in_memory_session_service import InMemorySessionService from google.adk.tools.base_tool import BaseTool from google.genai import types from pydantic import ValidationError -from toolbox_adk import CredentialStrategy, ToolboxTool, ToolboxToolset from toolbox_core.protocol import Protocol +from toolbox_adk import CredentialStrategy, ToolboxTool, ToolboxToolset + # Ensure TOOLBOX_VERSION is set for the fixture if "TOOLBOX_VERSION" not in os.environ: os.environ["TOOLBOX_VERSION"] = "0.0.1" # Use a valid version or mock @@ -309,9 +312,12 @@ async def test_api_key_integration(self): async def test_adk_integration_optional_params(self): """test that we can create credentials from ADK objects without auth_scheme.""" - from google.adk.auth.auth_credential import (AuthCredential, - AuthCredentialTypes, - HttpAuth, HttpCredentials) + from google.adk.auth.auth_credential import ( + AuthCredential, + AuthCredentialTypes, + HttpAuth, + HttpCredentials, + ) # 1. Create ADK credential (HTTP Bearer) adk_creds = AuthCredential( diff --git a/packages/toolbox-adk/tests/unit/test_client.py b/packages/toolbox-adk/tests/unit/test_client.py index f3bc8f25c..7b1b0a25e 100644 --- a/packages/toolbox-adk/tests/unit/test_client.py +++ b/packages/toolbox-adk/tests/unit/test_client.py @@ -16,6 +16,7 @@ from unittest.mock import AsyncMock, MagicMock, patch import pytest + from toolbox_adk import CredentialStrategy, ToolboxClient from toolbox_adk.client import CredentialConfig, CredentialType diff --git a/packages/toolbox-adk/tests/unit/test_credentials.py b/packages/toolbox-adk/tests/unit/test_credentials.py index c3464ee4c..9e94d5638 100644 --- a/packages/toolbox-adk/tests/unit/test_credentials.py +++ b/packages/toolbox-adk/tests/unit/test_credentials.py @@ -65,9 +65,11 @@ def test_api_key(self): def test_from_adk_credentials_oauth2(self): from fastapi.openapi.models import OAuth2, OAuthFlows - from google.adk.auth.auth_credential import (AuthCredential, - AuthCredentialTypes, - OAuth2Auth) + from google.adk.auth.auth_credential import ( + AuthCredential, + AuthCredentialTypes, + OAuth2Auth, + ) auth_credential = AuthCredential( auth_type=AuthCredentialTypes.OAUTH2, @@ -84,9 +86,12 @@ def test_from_adk_credentials_oauth2(self): def test_from_adk_credentials_http_bearer(self): from fastapi.openapi.models import HTTPBearer - from google.adk.auth.auth_credential import (AuthCredential, - AuthCredentialTypes, - HttpAuth, HttpCredentials) + from google.adk.auth.auth_credential import ( + AuthCredential, + AuthCredentialTypes, + HttpAuth, + HttpCredentials, + ) auth_credential = AuthCredential( auth_type=AuthCredentialTypes.HTTP, @@ -104,8 +109,7 @@ def test_from_adk_credentials_http_bearer(self): def test_from_adk_credentials_api_key(self): from fastapi.openapi.models import APIKey, APIKeyIn - from google.adk.auth.auth_credential import (AuthCredential, - AuthCredentialTypes) + from google.adk.auth.auth_credential import AuthCredential, AuthCredentialTypes auth_credential = AuthCredential( auth_type=AuthCredentialTypes.API_KEY, api_key="abc" @@ -122,8 +126,7 @@ def test_from_adk_credentials_api_key(self): def test_from_adk_credentials_api_key_default_location(self): from fastapi.openapi.models import APIKey - from google.adk.auth.auth_credential import (AuthCredential, - AuthCredentialTypes) + from google.adk.auth.auth_credential import AuthCredential, AuthCredentialTypes auth_credential = AuthCredential( auth_type=AuthCredentialTypes.API_KEY, api_key="abc" @@ -148,8 +151,7 @@ class MockScheme: def test_from_adk_credentials_api_key_query_fail(self): import pytest from fastapi.openapi.models import APIKey, APIKeyIn - from google.adk.auth.auth_credential import (AuthCredential, - AuthCredentialTypes) + from google.adk.auth.auth_credential import AuthCredential, AuthCredentialTypes cred = AuthCredential(auth_type=AuthCredentialTypes.API_KEY, api_key="abc") scheme = APIKey(type="apiKey", name="key", **{"in": APIKeyIn.query}) @@ -161,8 +163,7 @@ def test_from_adk_credentials_api_key_query_fail(self): def test_from_adk_credentials_api_key_no_scheme_raises(self): import pytest - from google.adk.auth.auth_credential import (AuthCredential, - AuthCredentialTypes) + from google.adk.auth.auth_credential import AuthCredential, AuthCredentialTypes auth_credential = AuthCredential( auth_type=AuthCredentialTypes.API_KEY, api_key="my-key" @@ -174,8 +175,7 @@ def test_from_adk_credentials_api_key_no_scheme_raises(self): def test_from_adk_credentials_unsupported(self): import pytest - from google.adk.auth.auth_credential import (AuthCredential, - AuthCredentialTypes) + from google.adk.auth.auth_credential import AuthCredential, AuthCredentialTypes auth_credential = AuthCredential( auth_type=AuthCredentialTypes.OAUTH2 @@ -186,9 +186,11 @@ def test_from_adk_credentials_unsupported(self): def test_from_adk_auth_config(self): from fastapi.openapi.models import OAuth2, OAuthFlows - from google.adk.auth.auth_credential import (AuthCredential, - AuthCredentialTypes, - OAuth2Auth) + from google.adk.auth.auth_credential import ( + AuthCredential, + AuthCredentialTypes, + OAuth2Auth, + ) from google.adk.auth.auth_tool import AuthConfig oauth2_auth = OAuth2Auth(client_id="cid2", client_secret="csec2", scopes=["s2"]) diff --git a/packages/toolbox-adk/tests/unit/test_tool.py b/packages/toolbox-adk/tests/unit/test_tool.py index 0dc2e4bfe..3b55290ea 100644 --- a/packages/toolbox-adk/tests/unit/test_tool.py +++ b/packages/toolbox-adk/tests/unit/test_tool.py @@ -16,6 +16,7 @@ import pytest from google.genai.types import Type + from toolbox_adk.credentials import CredentialConfig, CredentialType from toolbox_adk.tool import ToolboxTool diff --git a/packages/toolbox-adk/tests/unit/test_toolset.py b/packages/toolbox-adk/tests/unit/test_toolset.py index 86a121333..ff632e1ea 100644 --- a/packages/toolbox-adk/tests/unit/test_toolset.py +++ b/packages/toolbox-adk/tests/unit/test_toolset.py @@ -16,9 +16,10 @@ from unittest.mock import AsyncMock, MagicMock, patch import pytest +from toolbox_core.protocol import Protocol + from toolbox_adk.tool import ToolboxTool from toolbox_adk.toolset import ToolboxToolset -from toolbox_core.protocol import Protocol class TestToolboxToolset: diff --git a/packages/toolbox-core/src/toolbox_core/client.py b/packages/toolbox-core/src/toolbox_core/client.py index 8efd2ad0d..b2224eedc 100644 --- a/packages/toolbox-core/src/toolbox_core/client.py +++ b/packages/toolbox-core/src/toolbox_core/client.py @@ -20,19 +20,26 @@ from aiohttp import ClientSession from deprecated import deprecated + from toolbox_core.exceptions import ProtocolNegotiationError from . import version from .itransport import ITransport -from .mcp_transport import (McpHttpTransportV20241105, - McpHttpTransportV20250326, - McpHttpTransportV20250618, - McpHttpTransportV20251125, - McpHttpTransportV20260618) +from .mcp_transport import ( + McpHttpTransportV20241105, + McpHttpTransportV20250326, + McpHttpTransportV20250618, + McpHttpTransportV20251125, + McpHttpTransportV20260618, +) from .protocol import Protocol, ToolSchema from .tool import ToolboxTool -from .utils import (identify_auth_requirements, resolve_value, - validate_unused_requirements, warn_if_http_and_headers) +from .utils import ( + identify_auth_requirements, + resolve_value, + validate_unused_requirements, + warn_if_http_and_headers, +) class _McpTransportProxy(ITransport): diff --git a/packages/toolbox-core/src/toolbox_core/mcp_transport/telemetry.py b/packages/toolbox-core/src/toolbox_core/mcp_transport/telemetry.py index 1cca9b9b2..ab9972034 100644 --- a/packages/toolbox-core/src/toolbox_core/mcp_transport/telemetry.py +++ b/packages/toolbox-core/src/toolbox_core/mcp_transport/telemetry.py @@ -33,8 +33,9 @@ from opentelemetry import metrics, trace from opentelemetry.metrics import Histogram, Meter from opentelemetry.trace import Span, SpanKind, Status, StatusCode, Tracer - from opentelemetry.trace.propagation.tracecontext import \ - TraceContextTextMapPropagator + from opentelemetry.trace.propagation.tracecontext import ( + TraceContextTextMapPropagator, + ) TELEMETRY_AVAILABLE = True except ImportError: diff --git a/packages/toolbox-core/src/toolbox_core/mcp_transport/transport_base.py b/packages/toolbox-core/src/toolbox_core/mcp_transport/transport_base.py index b91d957aa..735ae9066 100644 --- a/packages/toolbox-core/src/toolbox_core/mcp_transport/transport_base.py +++ b/packages/toolbox-core/src/toolbox_core/mcp_transport/transport_base.py @@ -21,8 +21,13 @@ from .. import version from ..itransport import ITransport -from ..protocol import (AdditionalPropertiesSchema, ParameterSchema, Protocol, - TelemetryAttributes, ToolSchema) +from ..protocol import ( + AdditionalPropertiesSchema, + ParameterSchema, + Protocol, + TelemetryAttributes, + ToolSchema, +) from . import telemetry diff --git a/packages/toolbox-core/src/toolbox_core/tool.py b/packages/toolbox-core/src/toolbox_core/tool.py index 8ef2c8ef1..89212325e 100644 --- a/packages/toolbox-core/src/toolbox_core/tool.py +++ b/packages/toolbox-core/src/toolbox_core/tool.py @@ -20,9 +20,13 @@ from .itransport import ITransport from .protocol import ParameterSchema, TelemetryAttributes -from .utils import (create_func_docstring, identify_auth_requirements, - params_to_pydantic_model, resolve_value, - warn_if_http_and_headers) +from .utils import ( + create_func_docstring, + identify_auth_requirements, + params_to_pydantic_model, + resolve_value, + warn_if_http_and_headers, +) class ToolboxTool: diff --git a/packages/toolbox-core/src/toolbox_core/utils.py b/packages/toolbox-core/src/toolbox_core/utils.py index 7330625a6..92660c84b 100644 --- a/packages/toolbox-core/src/toolbox_core/utils.py +++ b/packages/toolbox-core/src/toolbox_core/utils.py @@ -15,10 +15,20 @@ import asyncio import warnings -from typing import (Any, Awaitable, Callable, Iterable, Mapping, Sequence, - Type, Union, cast) +from typing import ( + Any, + Awaitable, + Callable, + Iterable, + Mapping, + Sequence, + Type, + Union, + cast, +) from pydantic import BaseModel, Field, create_model + from toolbox_core.protocol import ParameterSchema diff --git a/packages/toolbox-core/tests/conftest.py b/packages/toolbox-core/tests/conftest.py index 579eb71bc..add400cf5 100644 --- a/packages/toolbox-core/tests/conftest.py +++ b/packages/toolbox-core/tests/conftest.py @@ -26,7 +26,6 @@ import google import pytest -import pytest_asyncio from google.auth import compute_engine from google.cloud import secretmanager, storage @@ -93,17 +92,17 @@ def get_auth_token(client_id: str) -> str: #### Define Fixtures -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def project_id() -> str: return get_env_var("GOOGLE_CLOUD_PROJECT") -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def toolbox_version() -> str: return get_env_var("TOOLBOX_VERSION") -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def tools_file_path(project_id: str) -> Generator[str]: """Provides a temporary file path containing the tools manifest.""" tools_manifest = access_secret_version( @@ -116,7 +115,7 @@ def tools_file_path(project_id: str) -> Generator[str]: os.remove(tools_file_path) -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def auth_token1(project_id: str) -> str: client_id = access_secret_version( project_id=project_id, secret_id="sdk_testing_client1" @@ -124,7 +123,7 @@ def auth_token1(project_id: str) -> str: return get_auth_token(client_id) -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def auth_token2(project_id: str) -> str: client_id = access_secret_version( project_id=project_id, secret_id="sdk_testing_client2" @@ -132,7 +131,7 @@ def auth_token2(project_id: str) -> str: return get_auth_token(client_id) -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: """Starts the toolbox server as a subprocess.""" print("Downloading toolbox binary from gcs bucket...") diff --git a/packages/toolbox-core/tests/mcp_transport/test_base.py b/packages/toolbox-core/tests/mcp_transport/test_base.py index bfd8ed1f2..785065023 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_base.py +++ b/packages/toolbox-core/tests/mcp_transport/test_base.py @@ -19,6 +19,7 @@ import pytest import pytest_asyncio from aiohttp import ClientSession + from toolbox_core.mcp_transport.transport_base import _McpHttpTransportBase from toolbox_core.protocol import TelemetryAttributes, ToolSchema diff --git a/packages/toolbox-core/tests/mcp_transport/test_telemetry.py b/packages/toolbox-core/tests/mcp_transport/test_telemetry.py index 359232aa6..f3a2eaff8 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_telemetry.py +++ b/packages/toolbox-core/tests/mcp_transport/test_telemetry.py @@ -15,16 +15,31 @@ from unittest.mock import ANY, MagicMock, patch import pytest + import toolbox_core.mcp_transport.telemetry as telemetry_module from toolbox_core.mcp_transport.telemetry import ( - ATTR_ERROR_TYPE, ATTR_GEN_AI_OPERATION_NAME, ATTR_GEN_AI_TOOL_NAME, - ATTR_MCP_METHOD_NAME, ATTR_MCP_PROTOCOL_VERSION, - ATTR_NETWORK_PROTOCOL_NAME, ATTR_NETWORK_TRANSPORT, ATTR_SERVER_ADDRESS, - ATTR_SERVER_PORT, create_operation_duration_histogram, - create_session_duration_histogram, create_traceparent_from_context, - create_tracestate_from_context, end_span, extract_server_info, get_meter, - get_tracer, record_error_from_jsonrpc, record_operation_duration, - record_session_duration, start_span) + ATTR_ERROR_TYPE, + ATTR_GEN_AI_OPERATION_NAME, + ATTR_GEN_AI_TOOL_NAME, + ATTR_MCP_METHOD_NAME, + ATTR_MCP_PROTOCOL_VERSION, + ATTR_NETWORK_PROTOCOL_NAME, + ATTR_NETWORK_TRANSPORT, + ATTR_SERVER_ADDRESS, + ATTR_SERVER_PORT, + create_operation_duration_histogram, + create_session_duration_histogram, + create_traceparent_from_context, + create_tracestate_from_context, + end_span, + extract_server_info, + get_meter, + get_tracer, + record_error_from_jsonrpc, + record_operation_duration, + record_session_duration, + start_span, +) class TestGetTracer: diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20241105.py b/packages/toolbox-core/tests/mcp_transport/test_v20241105.py index 89af3827f..eadb0e264 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20241105.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20241105.py @@ -17,6 +17,7 @@ import pytest import pytest_asyncio from aiohttp import ClientSession + from toolbox_core.exceptions import ProtocolNegotiationError from toolbox_core.mcp_transport.v20241105 import types from toolbox_core.mcp_transport.v20241105.mcp import McpHttpTransportV20241105 diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20250326.py b/packages/toolbox-core/tests/mcp_transport/test_v20250326.py index ce4f94139..a9fb3f35b 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20250326.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20250326.py @@ -17,6 +17,7 @@ import pytest import pytest_asyncio from aiohttp import ClientSession + from toolbox_core.mcp_transport.v20250326 import types from toolbox_core.mcp_transport.v20250326.mcp import McpHttpTransportV20250326 from toolbox_core.protocol import ManifestSchema, Protocol diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20250618.py b/packages/toolbox-core/tests/mcp_transport/test_v20250618.py index 0da5f12d9..b5a1a0a94 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20250618.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20250618.py @@ -17,6 +17,7 @@ import pytest import pytest_asyncio from aiohttp import ClientSession + from toolbox_core.exceptions import ProtocolNegotiationError from toolbox_core.mcp_transport.v20250618 import types from toolbox_core.mcp_transport.v20250618.mcp import McpHttpTransportV20250618 diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20251125.py b/packages/toolbox-core/tests/mcp_transport/test_v20251125.py index 190ad6970..f575b81bc 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20251125.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20251125.py @@ -17,6 +17,7 @@ import pytest import pytest_asyncio from aiohttp import ClientSession + from toolbox_core.exceptions import ProtocolNegotiationError from toolbox_core.mcp_transport.v20251125 import types from toolbox_core.mcp_transport.v20251125.mcp import McpHttpTransportV20251125 diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20260618.py b/packages/toolbox-core/tests/mcp_transport/test_v20260618.py index dd927252b..5c751320f 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20260618.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20260618.py @@ -17,6 +17,7 @@ import pytest import pytest_asyncio from aiohttp import ClientSession + from toolbox_core.mcp_transport.v20260618 import types from toolbox_core.mcp_transport.v20260618.mcp import McpHttpTransportV20260618 from toolbox_core.protocol import ManifestSchema, Protocol diff --git a/packages/toolbox-core/tests/test_auth_methods.py b/packages/toolbox-core/tests/test_auth_methods.py index 07ac56c78..cd78073f7 100644 --- a/packages/toolbox-core/tests/test_auth_methods.py +++ b/packages/toolbox-core/tests/test_auth_methods.py @@ -17,6 +17,7 @@ import pytest from google.auth.exceptions import GoogleAuthError + from toolbox_core import auth_methods # Constants for test values diff --git a/packages/toolbox-core/tests/test_client.py b/packages/toolbox-core/tests/test_client.py index 1f0dfeabe..e28bb03a1 100644 --- a/packages/toolbox-core/tests/test_client.py +++ b/packages/toolbox-core/tests/test_client.py @@ -20,10 +20,16 @@ import pytest from aiohttp import web + from toolbox_core.client import ToolboxClient from toolbox_core.itransport import ITransport -from toolbox_core.protocol import (ManifestSchema, ParameterSchema, Protocol, - TelemetryAttributes, ToolSchema) +from toolbox_core.protocol import ( + ManifestSchema, + ParameterSchema, + Protocol, + TelemetryAttributes, + ToolSchema, +) TEST_BASE_URL = "http://toolbox.example.com" diff --git a/packages/toolbox-core/tests/test_e2e.py b/packages/toolbox-core/tests/test_e2e.py index 273ddc085..0b926e178 100644 --- a/packages/toolbox-core/tests/test_e2e.py +++ b/packages/toolbox-core/tests/test_e2e.py @@ -18,6 +18,7 @@ import pytest import pytest_asyncio from pydantic import ValidationError + from toolbox_core.client import ToolboxClient from toolbox_core.protocol import Protocol from toolbox_core.tool import ToolboxTool diff --git a/packages/toolbox-core/tests/test_e2e_mcp.py b/packages/toolbox-core/tests/test_e2e_mcp.py index 92df97afb..b4bd541fa 100644 --- a/packages/toolbox-core/tests/test_e2e_mcp.py +++ b/packages/toolbox-core/tests/test_e2e_mcp.py @@ -18,6 +18,7 @@ import pytest import pytest_asyncio from pydantic import ValidationError + from toolbox_core.client import ToolboxClient from toolbox_core.protocol import Protocol from toolbox_core.tool import ToolboxTool diff --git a/packages/toolbox-core/tests/test_protocol.py b/packages/toolbox-core/tests/test_protocol.py index f3ab0cb9a..3c50b3225 100644 --- a/packages/toolbox-core/tests/test_protocol.py +++ b/packages/toolbox-core/tests/test_protocol.py @@ -17,8 +17,13 @@ from typing import Any, Optional import pytest -from toolbox_core.protocol import (AdditionalPropertiesSchema, ParameterSchema, - Protocol, TelemetryAttributes) + +from toolbox_core.protocol import ( + AdditionalPropertiesSchema, + ParameterSchema, + Protocol, + TelemetryAttributes, +) # --------------------------------------------------------------------------- # # TelemetryAttributes — wire format & alias contract # diff --git a/packages/toolbox-core/tests/test_sync_client.py b/packages/toolbox-core/tests/test_sync_client.py index ee5d5da67..6a6649b9f 100644 --- a/packages/toolbox-core/tests/test_sync_client.py +++ b/packages/toolbox-core/tests/test_sync_client.py @@ -18,10 +18,15 @@ from unittest.mock import AsyncMock, Mock, patch import pytest + from toolbox_core.client import ToolboxClient from toolbox_core.itransport import ITransport -from toolbox_core.protocol import (ManifestSchema, ParameterSchema, - TelemetryAttributes, ToolSchema) +from toolbox_core.protocol import ( + ManifestSchema, + ParameterSchema, + TelemetryAttributes, + ToolSchema, +) from toolbox_core.sync_client import ToolboxSyncClient from toolbox_core.sync_tool import ToolboxSyncTool diff --git a/packages/toolbox-core/tests/test_sync_e2e.py b/packages/toolbox-core/tests/test_sync_e2e.py index 3b8a74304..a306cedc2 100644 --- a/packages/toolbox-core/tests/test_sync_e2e.py +++ b/packages/toolbox-core/tests/test_sync_e2e.py @@ -13,6 +13,7 @@ # limitations under the License. import pytest + from toolbox_core.sync_client import ToolboxSyncClient from toolbox_core.sync_tool import ToolboxSyncTool diff --git a/packages/toolbox-core/tests/test_sync_tool.py b/packages/toolbox-core/tests/test_sync_tool.py index 20ac5ae5a..7db4f94e1 100644 --- a/packages/toolbox-core/tests/test_sync_tool.py +++ b/packages/toolbox-core/tests/test_sync_tool.py @@ -20,6 +20,7 @@ from unittest.mock import MagicMock, Mock, create_autospec, patch import pytest + from toolbox_core.protocol import TelemetryAttributes from toolbox_core.sync_tool import ToolboxSyncTool from toolbox_core.tool import ToolboxTool diff --git a/packages/toolbox-core/tests/test_tool.py b/packages/toolbox-core/tests/test_tool.py index 9d8b7ccc4..1b23db3ae 100644 --- a/packages/toolbox-core/tests/test_tool.py +++ b/packages/toolbox-core/tests/test_tool.py @@ -24,6 +24,7 @@ from aiohttp import ClientSession from aioresponses import aioresponses from pydantic import ValidationError + from toolbox_core.itransport import ITransport from toolbox_core.protocol import ParameterSchema, TelemetryAttributes from toolbox_core.tool import ToolboxTool diff --git a/packages/toolbox-core/tests/test_utils.py b/packages/toolbox-core/tests/test_utils.py index 3ec60a5d4..ec6ebb22b 100644 --- a/packages/toolbox-core/tests/test_utils.py +++ b/packages/toolbox-core/tests/test_utils.py @@ -20,11 +20,15 @@ import pytest from pydantic import BaseModel, ValidationError + from toolbox_core.protocol import ParameterSchema -from toolbox_core.utils import (create_func_docstring, - identify_auth_requirements, - params_to_pydantic_model, resolve_value, - warn_if_http_and_headers) +from toolbox_core.utils import ( + create_func_docstring, + identify_auth_requirements, + params_to_pydantic_model, + resolve_value, + warn_if_http_and_headers, +) def create_param_mock(name: str, description: str, annotation: Type) -> Mock: diff --git a/packages/toolbox-langchain/tests/conftest.py b/packages/toolbox-langchain/tests/conftest.py index 8e4f9571f..65cf1302e 100644 --- a/packages/toolbox-langchain/tests/conftest.py +++ b/packages/toolbox-langchain/tests/conftest.py @@ -26,7 +26,6 @@ import google import pytest -import pytest_asyncio from google.auth import compute_engine from google.cloud import secretmanager, storage @@ -93,17 +92,17 @@ def get_auth_token(client_id: str) -> str: #### Define Fixtures -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def project_id() -> str: return get_env_var("GOOGLE_CLOUD_PROJECT") -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def toolbox_version() -> str: return get_env_var("TOOLBOX_VERSION") -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def tools_file_path(project_id: str) -> Generator[str]: """Provides a temporary file path containing the tools manifest.""" tools_manifest = access_secret_version( @@ -116,7 +115,7 @@ def tools_file_path(project_id: str) -> Generator[str]: os.remove(tools_file_path) -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def auth_token1(project_id: str) -> str: client_id = access_secret_version( project_id=project_id, secret_id="sdk_testing_client1" @@ -124,7 +123,7 @@ def auth_token1(project_id: str) -> str: return get_auth_token(client_id) -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def auth_token2(project_id: str) -> str: client_id = access_secret_version( project_id=project_id, secret_id="sdk_testing_client2" @@ -132,7 +131,7 @@ def auth_token2(project_id: str) -> str: return get_auth_token(client_id) -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: """Starts the toolbox server as a subprocess.""" print("Downloading toolbox binary from gcs bucket...") diff --git a/packages/toolbox-langchain/tests/test_async_client.py b/packages/toolbox-langchain/tests/test_async_client.py index c93468d48..9da3511df 100644 --- a/packages/toolbox-langchain/tests/test_async_client.py +++ b/packages/toolbox-langchain/tests/test_async_client.py @@ -21,6 +21,7 @@ from toolbox_core.protocol import ParameterSchema as CoreParameterSchema from toolbox_core.protocol import Protocol from toolbox_core.tool import ToolboxTool as ToolboxCoreTool + from toolbox_langchain.async_client import AsyncToolboxClient from toolbox_langchain.async_tools import AsyncToolboxTool diff --git a/packages/toolbox-langchain/tests/test_client.py b/packages/toolbox-langchain/tests/test_client.py index eb7275455..6150d4a17 100644 --- a/packages/toolbox-langchain/tests/test_client.py +++ b/packages/toolbox-langchain/tests/test_client.py @@ -20,6 +20,7 @@ from toolbox_core.protocol import Protocol from toolbox_core.sync_tool import ToolboxSyncTool as ToolboxCoreSyncTool from toolbox_core.utils import params_to_pydantic_model + from toolbox_langchain.client import ToolboxClient from toolbox_langchain.tools import ToolboxTool diff --git a/packages/toolbox-langchain/tests/test_e2e.py b/packages/toolbox-langchain/tests/test_e2e.py index 924f58040..93fbd01ea 100644 --- a/packages/toolbox-langchain/tests/test_e2e.py +++ b/packages/toolbox-langchain/tests/test_e2e.py @@ -37,6 +37,7 @@ import pytest import pytest_asyncio from pydantic import ValidationError + from toolbox_langchain.client import ToolboxClient diff --git a/packages/toolbox-langchain/tests/test_tools.py b/packages/toolbox-langchain/tests/test_tools.py index 0d41a1a3c..9775283a3 100644 --- a/packages/toolbox-langchain/tests/test_tools.py +++ b/packages/toolbox-langchain/tests/test_tools.py @@ -21,6 +21,7 @@ from toolbox_core.sync_tool import ToolboxSyncTool as ToolboxCoreSyncTool from toolbox_core.tool import ToolboxTool as CoreAsyncTool from toolbox_core.utils import params_to_pydantic_model + from toolbox_langchain.tools import ToolboxTool diff --git a/packages/toolbox-llamaindex/tests/conftest.py b/packages/toolbox-llamaindex/tests/conftest.py index 7632d8d29..1f7472a4c 100644 --- a/packages/toolbox-llamaindex/tests/conftest.py +++ b/packages/toolbox-llamaindex/tests/conftest.py @@ -26,7 +26,6 @@ import google import pytest -import pytest_asyncio from google.auth import compute_engine from google.cloud import secretmanager, storage @@ -93,17 +92,17 @@ def get_auth_token(client_id: str) -> str: #### Define Fixtures -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def project_id() -> str: return get_env_var("GOOGLE_CLOUD_PROJECT") -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def toolbox_version() -> str: return get_env_var("TOOLBOX_VERSION") -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def tools_file_path(project_id: str) -> Generator[str]: """Provides a temporary file path containing the tools manifest.""" tools_manifest = access_secret_version( @@ -116,7 +115,7 @@ def tools_file_path(project_id: str) -> Generator[str]: os.remove(tools_file_path) -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def auth_token1(project_id: str) -> str: client_id = access_secret_version( project_id=project_id, secret_id="sdk_testing_client1" @@ -124,7 +123,7 @@ def auth_token1(project_id: str) -> str: return get_auth_token(client_id) -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def auth_token2(project_id: str) -> str: client_id = access_secret_version( project_id=project_id, secret_id="sdk_testing_client2" @@ -132,7 +131,7 @@ def auth_token2(project_id: str) -> str: return get_auth_token(client_id) -@pytest_asyncio.fixture(scope="session") +@pytest.fixture(scope="session") def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: """Starts the toolbox server as a subprocess.""" print("Downloading toolbox binary from gcs bucket...") diff --git a/packages/toolbox-llamaindex/tests/test_async_client.py b/packages/toolbox-llamaindex/tests/test_async_client.py index 26a07cb11..6011a3474 100644 --- a/packages/toolbox-llamaindex/tests/test_async_client.py +++ b/packages/toolbox-llamaindex/tests/test_async_client.py @@ -21,6 +21,7 @@ from toolbox_core.protocol import ParameterSchema as CoreParameterSchema from toolbox_core.protocol import Protocol from toolbox_core.tool import ToolboxTool as ToolboxCoreTool + from toolbox_llamaindex.async_client import AsyncToolboxClient from toolbox_llamaindex.async_tools import AsyncToolboxTool diff --git a/packages/toolbox-llamaindex/tests/test_client.py b/packages/toolbox-llamaindex/tests/test_client.py index bf8379f02..9ae5364d2 100644 --- a/packages/toolbox-llamaindex/tests/test_client.py +++ b/packages/toolbox-llamaindex/tests/test_client.py @@ -20,6 +20,7 @@ from toolbox_core.protocol import Protocol from toolbox_core.sync_tool import ToolboxSyncTool as ToolboxCoreSyncTool from toolbox_core.utils import params_to_pydantic_model + from toolbox_llamaindex.client import ToolboxClient from toolbox_llamaindex.tools import ToolboxTool diff --git a/packages/toolbox-llamaindex/tests/test_e2e.py b/packages/toolbox-llamaindex/tests/test_e2e.py index f4006862d..e0cdba4cb 100644 --- a/packages/toolbox-llamaindex/tests/test_e2e.py +++ b/packages/toolbox-llamaindex/tests/test_e2e.py @@ -37,6 +37,7 @@ import pytest import pytest_asyncio from pydantic import ValidationError + from toolbox_llamaindex.client import ToolboxClient diff --git a/packages/toolbox-llamaindex/tests/test_tools.py b/packages/toolbox-llamaindex/tests/test_tools.py index 77843b9fc..980926acb 100644 --- a/packages/toolbox-llamaindex/tests/test_tools.py +++ b/packages/toolbox-llamaindex/tests/test_tools.py @@ -22,6 +22,7 @@ from toolbox_core.sync_tool import ToolboxSyncTool as ToolboxCoreSyncTool from toolbox_core.tool import ToolboxTool as CoreAsyncTool from toolbox_core.utils import params_to_pydantic_model + from toolbox_llamaindex.async_tools import AsyncToolboxTool from toolbox_llamaindex.tools import ToolboxTool From 66c815530666500554ebc50db1db50772de0717d Mon Sep 17 00:00:00 2001 From: Anubhav Dhawan Date: Tue, 30 Jun 2026 21:31:42 +0530 Subject: [PATCH 11/19] fix(tests): update binary URL for draft testing in all packages --- packages/toolbox-adk/tests/integration/conftest.py | 2 +- packages/toolbox-langchain/tests/conftest.py | 2 +- packages/toolbox-llamaindex/tests/conftest.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/toolbox-adk/tests/integration/conftest.py b/packages/toolbox-adk/tests/integration/conftest.py index 0a90f2983..35a24fb88 100644 --- a/packages/toolbox-adk/tests/integration/conftest.py +++ b/packages/toolbox-adk/tests/integration/conftest.py @@ -75,7 +75,7 @@ def get_toolbox_binary_url(toolbox_version: str) -> str: arch = ( "arm64" if os_system == "darwin" and platform.machine() == "arm64" else "amd64" ) - return f"v{toolbox_version}/{os_system}/{arch}/toolbox" + return f"staging/v1.6.0-draft/{os_system}/{arch}/toolbox" def get_auth_token(client_id: str) -> str: diff --git a/packages/toolbox-langchain/tests/conftest.py b/packages/toolbox-langchain/tests/conftest.py index 65cf1302e..64df567a0 100644 --- a/packages/toolbox-langchain/tests/conftest.py +++ b/packages/toolbox-langchain/tests/conftest.py @@ -75,7 +75,7 @@ def get_toolbox_binary_url(toolbox_version: str) -> str: arch = ( "arm64" if os_system == "darwin" and platform.machine() == "arm64" else "amd64" ) - return f"v{toolbox_version}/{os_system}/{arch}/toolbox" + return f"staging/v1.6.0-draft/{os_system}/{arch}/toolbox" def get_auth_token(client_id: str) -> str: diff --git a/packages/toolbox-llamaindex/tests/conftest.py b/packages/toolbox-llamaindex/tests/conftest.py index 1f7472a4c..be662d048 100644 --- a/packages/toolbox-llamaindex/tests/conftest.py +++ b/packages/toolbox-llamaindex/tests/conftest.py @@ -75,7 +75,7 @@ def get_toolbox_binary_url(toolbox_version: str) -> str: arch = ( "arm64" if os_system == "darwin" and platform.machine() == "arm64" else "amd64" ) - return f"v{toolbox_version}/{os_system}/{arch}/toolbox" + return f"staging/v1.6.0-draft/{os_system}/{arch}/toolbox" def get_auth_token(client_id: str) -> str: From 28834dd4fa18f7f16826fe0eb812548ee6e0752c Mon Sep 17 00:00:00 2001 From: Anubhav Dhawan Date: Tue, 30 Jun 2026 21:47:11 +0530 Subject: [PATCH 12/19] chore: fix integration tests url and lint errors --- packages/toolbox-adk/integration.cloudbuild.yaml | 2 +- packages/toolbox-adk/pyproject.toml | 1 + packages/toolbox-adk/tests/integration/conftest.py | 6 ++++-- packages/toolbox-core/integration.cloudbuild.yaml | 2 +- packages/toolbox-core/pyproject.toml | 1 + packages/toolbox-core/tests/conftest.py | 6 ++++-- packages/toolbox-langchain/integration.cloudbuild.yaml | 2 +- packages/toolbox-langchain/pyproject.toml | 1 + packages/toolbox-langchain/tests/conftest.py | 6 ++++-- packages/toolbox-llamaindex/integration.cloudbuild.yaml | 2 +- packages/toolbox-llamaindex/pyproject.toml | 1 + packages/toolbox-llamaindex/tests/conftest.py | 6 ++++-- 12 files changed, 24 insertions(+), 12 deletions(-) diff --git a/packages/toolbox-adk/integration.cloudbuild.yaml b/packages/toolbox-adk/integration.cloudbuild.yaml index ff1b1c1f5..7fbf45127 100644 --- a/packages/toolbox-adk/integration.cloudbuild.yaml +++ b/packages/toolbox-adk/integration.cloudbuild.yaml @@ -50,5 +50,5 @@ options: substitutions: _VERSION: '3.13' # Default values (can be overridden by triggers) - _TOOLBOX_VERSION: '1.4.0' + _TOOLBOX_VERSION: 'main' _TOOLBOX_MANIFEST_VERSION: '34' diff --git a/packages/toolbox-adk/pyproject.toml b/packages/toolbox-adk/pyproject.toml index 3ad5c35e4..52072abf8 100644 --- a/packages/toolbox-adk/pyproject.toml +++ b/packages/toolbox-adk/pyproject.toml @@ -40,6 +40,7 @@ test = [ "pytest==9.0.3", "pytest-asyncio==1.4.0", "pytest-cov==7.1.0", + "numpy<2.2.0", "pytest-mock==3.15.1" ] diff --git a/packages/toolbox-adk/tests/integration/conftest.py b/packages/toolbox-adk/tests/integration/conftest.py index 35a24fb88..4b131abed 100644 --- a/packages/toolbox-adk/tests/integration/conftest.py +++ b/packages/toolbox-adk/tests/integration/conftest.py @@ -75,7 +75,8 @@ def get_toolbox_binary_url(toolbox_version: str) -> str: arch = ( "arm64" if os_system == "darwin" and platform.machine() == "arm64" else "amd64" ) - return f"staging/v1.6.0-draft/{os_system}/{arch}/toolbox" + ext = ".exe" if os_system == "windows" else "" + return f"{toolbox_version}/{os_system}/{arch}/toolbox{ext}" def get_auth_token(client_id: str) -> str: @@ -151,7 +152,8 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None print("Downloading toolbox binary from gcs bucket...") source_blob_name = get_toolbox_binary_url(toolbox_version) - download_blob("mcp-toolbox-for-databases", source_blob_name, "toolbox") + bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" + download_blob(bucket_name, source_blob_name, "toolbox") print("Toolbox binary downloaded successfully.") try: diff --git a/packages/toolbox-core/integration.cloudbuild.yaml b/packages/toolbox-core/integration.cloudbuild.yaml index de5f69465..5161b5a9b 100644 --- a/packages/toolbox-core/integration.cloudbuild.yaml +++ b/packages/toolbox-core/integration.cloudbuild.yaml @@ -45,5 +45,5 @@ options: logging: CLOUD_LOGGING_ONLY substitutions: _VERSION: '3.13' - _TOOLBOX_VERSION: '1.4.0' + _TOOLBOX_VERSION: 'main' _TOOLBOX_MANIFEST_VERSION: '34' diff --git a/packages/toolbox-core/pyproject.toml b/packages/toolbox-core/pyproject.toml index 6c2bf1a6d..21237a970 100644 --- a/packages/toolbox-core/pyproject.toml +++ b/packages/toolbox-core/pyproject.toml @@ -56,6 +56,7 @@ test = [ "pytest-aioresponses==0.3.0", "pytest-asyncio==1.4.0", "pytest-cov==7.1.0", + "numpy<2.2.0", "pytest-mock==3.15.1", "google-cloud-secret-manager==2.28.0", "google-cloud-storage==3.10.1", diff --git a/packages/toolbox-core/tests/conftest.py b/packages/toolbox-core/tests/conftest.py index add400cf5..1dfe4a3ac 100644 --- a/packages/toolbox-core/tests/conftest.py +++ b/packages/toolbox-core/tests/conftest.py @@ -75,7 +75,8 @@ def get_toolbox_binary_url(toolbox_version: str) -> str: arch = ( "arm64" if os_system == "darwin" and platform.machine() == "arm64" else "amd64" ) - return f"staging/v1.6.0-draft/{os_system}/{arch}/toolbox" + ext = ".exe" if os_system == "windows" else "" + return f"{toolbox_version}/{os_system}/{arch}/toolbox{ext}" def get_auth_token(client_id: str) -> str: @@ -136,7 +137,8 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None """Starts the toolbox server as a subprocess.""" print("Downloading toolbox binary from gcs bucket...") source_blob_name = get_toolbox_binary_url(toolbox_version) - download_blob("mcp-toolbox-for-databases", source_blob_name, "toolbox") + bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" + download_blob(bucket_name, source_blob_name, "toolbox") print("Toolbox binary downloaded successfully.") try: print("Opening toolbox server process...") diff --git a/packages/toolbox-langchain/integration.cloudbuild.yaml b/packages/toolbox-langchain/integration.cloudbuild.yaml index 140803960..f56c024ed 100644 --- a/packages/toolbox-langchain/integration.cloudbuild.yaml +++ b/packages/toolbox-langchain/integration.cloudbuild.yaml @@ -49,5 +49,5 @@ options: logging: CLOUD_LOGGING_ONLY substitutions: _VERSION: '3.13' - _TOOLBOX_VERSION: '1.4.0' + _TOOLBOX_VERSION: 'main' _TOOLBOX_MANIFEST_VERSION: '34' diff --git a/packages/toolbox-langchain/pyproject.toml b/packages/toolbox-langchain/pyproject.toml index 247fdbfab..d8778d62d 100644 --- a/packages/toolbox-langchain/pyproject.toml +++ b/packages/toolbox-langchain/pyproject.toml @@ -50,6 +50,7 @@ test = [ "pytest-asyncio==1.4.0", "pytest==9.0.3", "pytest-cov==7.1.0", + "numpy<2.2.0", "Pillow==12.2.0; python_version >= '3.10'", "google-cloud-secret-manager==2.28.0", "google-cloud-storage==3.10.1", diff --git a/packages/toolbox-langchain/tests/conftest.py b/packages/toolbox-langchain/tests/conftest.py index 64df567a0..24db10123 100644 --- a/packages/toolbox-langchain/tests/conftest.py +++ b/packages/toolbox-langchain/tests/conftest.py @@ -75,7 +75,8 @@ def get_toolbox_binary_url(toolbox_version: str) -> str: arch = ( "arm64" if os_system == "darwin" and platform.machine() == "arm64" else "amd64" ) - return f"staging/v1.6.0-draft/{os_system}/{arch}/toolbox" + ext = ".exe" if os_system == "windows" else "" + return f"{toolbox_version}/{os_system}/{arch}/toolbox{ext}" def get_auth_token(client_id: str) -> str: @@ -136,7 +137,8 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None """Starts the toolbox server as a subprocess.""" print("Downloading toolbox binary from gcs bucket...") source_blob_name = get_toolbox_binary_url(toolbox_version) - download_blob("mcp-toolbox-for-databases", source_blob_name, "toolbox") + bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" + download_blob(bucket_name, source_blob_name, "toolbox") print("Toolbox binary downloaded successfully.") try: print("Opening toolbox server process...") diff --git a/packages/toolbox-llamaindex/integration.cloudbuild.yaml b/packages/toolbox-llamaindex/integration.cloudbuild.yaml index 028328fb7..ef80f4b0c 100644 --- a/packages/toolbox-llamaindex/integration.cloudbuild.yaml +++ b/packages/toolbox-llamaindex/integration.cloudbuild.yaml @@ -49,5 +49,5 @@ options: logging: CLOUD_LOGGING_ONLY substitutions: _VERSION: '3.13' - _TOOLBOX_VERSION: '1.4.0' + _TOOLBOX_VERSION: 'main' _TOOLBOX_MANIFEST_VERSION: '34' diff --git a/packages/toolbox-llamaindex/pyproject.toml b/packages/toolbox-llamaindex/pyproject.toml index ec8107ead..08b64b3d8 100644 --- a/packages/toolbox-llamaindex/pyproject.toml +++ b/packages/toolbox-llamaindex/pyproject.toml @@ -50,6 +50,7 @@ test = [ "pytest-asyncio==1.4.0", "pytest==9.0.3", "pytest-cov==7.1.0", + "numpy<2.2.0", "Pillow==12.2.0; python_version >= '3.10'", "google-cloud-secret-manager==2.28.0", "google-cloud-storage==3.10.1", diff --git a/packages/toolbox-llamaindex/tests/conftest.py b/packages/toolbox-llamaindex/tests/conftest.py index be662d048..a053f164d 100644 --- a/packages/toolbox-llamaindex/tests/conftest.py +++ b/packages/toolbox-llamaindex/tests/conftest.py @@ -75,7 +75,8 @@ def get_toolbox_binary_url(toolbox_version: str) -> str: arch = ( "arm64" if os_system == "darwin" and platform.machine() == "arm64" else "amd64" ) - return f"staging/v1.6.0-draft/{os_system}/{arch}/toolbox" + ext = ".exe" if os_system == "windows" else "" + return f"{toolbox_version}/{os_system}/{arch}/toolbox{ext}" def get_auth_token(client_id: str) -> str: @@ -136,7 +137,8 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None """Starts the toolbox server as a subprocess.""" print("Downloading toolbox binary from gcs bucket...") source_blob_name = get_toolbox_binary_url(toolbox_version) - download_blob("mcp-toolbox-for-databases", source_blob_name, "toolbox") + bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" + download_blob(bucket_name, source_blob_name, "toolbox") print("Toolbox binary downloaded successfully.") try: print("Opening toolbox server process...") From 0c6698324c00fc78b2ffb1207763d9a693598030 Mon Sep 17 00:00:00 2001 From: Anubhav Dhawan Date: Tue, 30 Jun 2026 22:05:56 +0530 Subject: [PATCH 13/19] chore: test with mcp-v202606 branch to fix unknown flag error --- packages/toolbox-adk/integration.cloudbuild.yaml | 2 +- packages/toolbox-core/integration.cloudbuild.yaml | 2 +- packages/toolbox-langchain/integration.cloudbuild.yaml | 2 +- packages/toolbox-llamaindex/integration.cloudbuild.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/toolbox-adk/integration.cloudbuild.yaml b/packages/toolbox-adk/integration.cloudbuild.yaml index 7fbf45127..5834b827a 100644 --- a/packages/toolbox-adk/integration.cloudbuild.yaml +++ b/packages/toolbox-adk/integration.cloudbuild.yaml @@ -50,5 +50,5 @@ options: substitutions: _VERSION: '3.13' # Default values (can be overridden by triggers) - _TOOLBOX_VERSION: 'main' + _TOOLBOX_VERSION: 'mcp-v202606' _TOOLBOX_MANIFEST_VERSION: '34' diff --git a/packages/toolbox-core/integration.cloudbuild.yaml b/packages/toolbox-core/integration.cloudbuild.yaml index 5161b5a9b..2b994816e 100644 --- a/packages/toolbox-core/integration.cloudbuild.yaml +++ b/packages/toolbox-core/integration.cloudbuild.yaml @@ -45,5 +45,5 @@ options: logging: CLOUD_LOGGING_ONLY substitutions: _VERSION: '3.13' - _TOOLBOX_VERSION: 'main' + _TOOLBOX_VERSION: 'mcp-v202606' _TOOLBOX_MANIFEST_VERSION: '34' diff --git a/packages/toolbox-langchain/integration.cloudbuild.yaml b/packages/toolbox-langchain/integration.cloudbuild.yaml index f56c024ed..8eee5ae29 100644 --- a/packages/toolbox-langchain/integration.cloudbuild.yaml +++ b/packages/toolbox-langchain/integration.cloudbuild.yaml @@ -49,5 +49,5 @@ options: logging: CLOUD_LOGGING_ONLY substitutions: _VERSION: '3.13' - _TOOLBOX_VERSION: 'main' + _TOOLBOX_VERSION: 'mcp-v202606' _TOOLBOX_MANIFEST_VERSION: '34' diff --git a/packages/toolbox-llamaindex/integration.cloudbuild.yaml b/packages/toolbox-llamaindex/integration.cloudbuild.yaml index ef80f4b0c..6f2513b8b 100644 --- a/packages/toolbox-llamaindex/integration.cloudbuild.yaml +++ b/packages/toolbox-llamaindex/integration.cloudbuild.yaml @@ -49,5 +49,5 @@ options: logging: CLOUD_LOGGING_ONLY substitutions: _VERSION: '3.13' - _TOOLBOX_VERSION: 'main' + _TOOLBOX_VERSION: 'mcp-v202606' _TOOLBOX_MANIFEST_VERSION: '34' From 173e74fcf2b2a80a8558e3be0f868ca5643e28d5 Mon Sep 17 00:00:00 2001 From: Anubhav Dhawan Date: Tue, 30 Jun 2026 22:14:49 +0530 Subject: [PATCH 14/19] fix(test): core fallback and adk toolset import --- .../toolbox-adk/tests/integration/conftest.py | 2 +- packages/toolbox-core/tests/test_e2e_mcp.py | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/packages/toolbox-adk/tests/integration/conftest.py b/packages/toolbox-adk/tests/integration/conftest.py index 4b131abed..89b4b1ce3 100644 --- a/packages/toolbox-adk/tests/integration/conftest.py +++ b/packages/toolbox-adk/tests/integration/conftest.py @@ -207,7 +207,7 @@ def toolbox_server_url(request) -> str: @pytest.fixture(autouse=True) def patch_toolbox_client_url(toolbox_server_url): - from toolbox_adk.client import ToolboxToolset + from toolbox_adk.toolset import ToolboxToolset original_init = ToolboxToolset.__init__ diff --git a/packages/toolbox-core/tests/test_e2e_mcp.py b/packages/toolbox-core/tests/test_e2e_mcp.py index b4bd541fa..618ae171d 100644 --- a/packages/toolbox-core/tests/test_e2e_mcp.py +++ b/packages/toolbox-core/tests/test_e2e_mcp.py @@ -100,9 +100,10 @@ async def test_run_tool_missing_params(self, get_n_rows_tool: ToolboxTool): with pytest.raises(TypeError, match="missing a required argument: 'num_rows'"): await get_n_rows_tool() - async def test_protocol_fallback_e2e(self): + async def test_protocol_fallback_e2e(self, toolbox_server_url: str): """Tests that a client using MCP_DRAFT can fallback to an older protocol against a server that doesn't support the draft version.""" - # The E2E server currently does not support DRAFT 2026, so this will trigger a fallback. + # The E2E server currently does not support DRAFT 2026 on port 5000, so this will trigger a fallback. + # However, port 5001 does support DRAFT 2026. async with ToolboxClient( "http://localhost:5000", protocol=Protocol.MCP_DRAFT ) as client: @@ -110,10 +111,16 @@ async def test_protocol_fallback_e2e(self): response = await tool(num_rows="1") assert "row1" in response # Verify that fallback occurred by checking the transport's final protocol version - assert ( - client._ToolboxClient__transport._protocol_version - != Protocol.MCP_DRAFT.value - ) + if "5001" in toolbox_server_url: + assert ( + client._ToolboxClient__transport._protocol_version + == Protocol.MCP_DRAFT.value + ) + else: + assert ( + client._ToolboxClient__transport._protocol_version + != Protocol.MCP_DRAFT.value + ) async def test_run_tool_wrong_param_type(self, get_n_rows_tool: ToolboxTool): """Invoke a tool with wrong param type.""" From ee00b9e1e0a9a6435ec73077ec06ace28b9e9c01 Mon Sep 17 00:00:00 2001 From: Anubhav Dhawan Date: Tue, 30 Jun 2026 22:15:43 +0530 Subject: [PATCH 15/19] chore: format files --- adk_fail.txt | 2296 +++++++++ core_fail.txt | 368 ++ full_log.txt | 4520 +++++++++++++++++ log.txt | 3367 ++++++++++++ packages/toolbox-adk/src/toolbox_adk/tool.py | 10 +- .../toolbox-adk/src/toolbox_adk/toolset.py | 3 +- .../toolbox-adk/tests/integration/conftest.py | 6 +- .../tests/integration/test_integration.py | 22 +- .../toolbox-adk/tests/unit/test_client.py | 1 - .../tests/unit/test_credentials.py | 40 +- packages/toolbox-adk/tests/unit/test_tool.py | 1 - .../toolbox-adk/tests/unit/test_toolset.py | 3 +- .../toolbox-core/src/toolbox_core/client.py | 21 +- .../toolbox_core/mcp_transport/telemetry.py | 5 +- .../mcp_transport/transport_base.py | 9 +- .../toolbox-core/src/toolbox_core/tool.py | 10 +- .../toolbox-core/src/toolbox_core/utils.py | 14 +- packages/toolbox-core/tests/conftest.py | 6 +- .../tests/mcp_transport/test_base.py | 1 - .../tests/mcp_transport/test_telemetry.py | 31 +- .../tests/mcp_transport/test_v20241105.py | 1 - .../tests/mcp_transport/test_v20250326.py | 1 - .../tests/mcp_transport/test_v20250618.py | 1 - .../tests/mcp_transport/test_v20251125.py | 1 - .../tests/mcp_transport/test_v20260618.py | 1 - .../toolbox-core/tests/test_auth_methods.py | 1 - packages/toolbox-core/tests/test_client.py | 10 +- packages/toolbox-core/tests/test_e2e.py | 1 - packages/toolbox-core/tests/test_e2e_mcp.py | 1 - packages/toolbox-core/tests/test_protocol.py | 9 +- .../toolbox-core/tests/test_sync_client.py | 9 +- packages/toolbox-core/tests/test_sync_e2e.py | 1 - packages/toolbox-core/tests/test_sync_tool.py | 1 - packages/toolbox-core/tests/test_tool.py | 1 - packages/toolbox-core/tests/test_utils.py | 12 +- packages/toolbox-langchain/tests/conftest.py | 6 +- .../tests/test_async_client.py | 1 - .../toolbox-langchain/tests/test_client.py | 1 - packages/toolbox-langchain/tests/test_e2e.py | 1 - .../toolbox-langchain/tests/test_tools.py | 1 - packages/toolbox-llamaindex/tests/conftest.py | 6 +- .../tests/test_async_client.py | 1 - .../toolbox-llamaindex/tests/test_client.py | 1 - packages/toolbox-llamaindex/tests/test_e2e.py | 1 - .../toolbox-llamaindex/tests/test_tools.py | 1 - 45 files changed, 10639 insertions(+), 166 deletions(-) create mode 100644 adk_fail.txt create mode 100644 core_fail.txt create mode 100644 full_log.txt create mode 100644 log.txt diff --git a/adk_fail.txt b/adk_fail.txt new file mode 100644 index 000000000..c167515ea --- /dev/null +++ b/adk_fail.txt @@ -0,0 +1,2296 @@ + +To live stream log output for this build, please ensure the grpc module is installed. Run: + pip install grpcio +and set: + export CLOUDSDK_PYTHON_SITEPACKAGES=1 + +----------------------------- REMOTE BUILD OUTPUT ------------------------------ +starting build "60aa8bc0-42d6-4534-94ed-93ed37930217" +FETCHSOURCE +From https://github.com/googleapis/mcp-toolbox-sdk-python + * branch 0c6698324c00fc78b2ffb1207763d9a693598030 -> FETCH_HEAD +HEAD is now at 0c66983 chore: test with mcp-v202606 branch to fix unknown flag error +GitCommit: +0c6698324c00fc78b2ffb1207763d9a693598030 +BUILD +Starting Step #0 - "Install requirements" +Step #0 - "Install requirements": Pulling image: python:3.10 +Step #0 - "Install requirements": 3.10: Pulling from library/python +Step #0 - "Install requirements": aa3e9ef32f73: Pulling fs layer +Step #0 - "Install requirements": 3f59c84a7863: Pulling fs layer +Step #0 - "Install requirements": 30d0db852850: Pulling fs layer +Step #0 - "Install requirements": 0252e6abaf0f: Pulling fs layer +Step #0 - "Install requirements": ccf7e73781a2: Pulling fs layer +Step #0 - "Install requirements": de50cca5f6c1: Pulling fs layer +Step #0 - "Install requirements": e2fc6298fd6c: Pulling fs layer +Step #0 - "Install requirements": e2fc6298fd6c: Waiting +Step #0 - "Install requirements": ccf7e73781a2: Verifying Checksum +Step #0 - "Install requirements": ccf7e73781a2: Download complete +Step #0 - "Install requirements": de50cca5f6c1: Verifying Checksum +Step #0 - "Install requirements": de50cca5f6c1: Download complete +Step #0 - "Install requirements": e2fc6298fd6c: Verifying Checksum +Step #0 - "Install requirements": e2fc6298fd6c: Download complete +Step #0 - "Install requirements": 3f59c84a7863: Verifying Checksum +Step #0 - "Install requirements": 3f59c84a7863: Download complete +Step #0 - "Install requirements": aa3e9ef32f73: Verifying Checksum +Step #0 - "Install requirements": aa3e9ef32f73: Download complete +Step #0 - "Install requirements": 30d0db852850: Verifying Checksum +Step #0 - "Install requirements": 30d0db852850: Download complete +Step #0 - "Install requirements": 0252e6abaf0f: Verifying Checksum +Step #0 - "Install requirements": 0252e6abaf0f: Download complete +Step #0 - "Install requirements": aa3e9ef32f73: Pull complete +Step #0 - "Install requirements": 3f59c84a7863: Pull complete +Step #0 - "Install requirements": 30d0db852850: Pull complete +Step #0 - "Install requirements": 0252e6abaf0f: Pull complete +Step #0 - "Install requirements": ccf7e73781a2: Pull complete +Step #0 - "Install requirements": de50cca5f6c1: Pull complete +Step #0 - "Install requirements": e2fc6298fd6c: Pull complete +Step #0 - "Install requirements": Digest: sha256:a359ba8614a261091f0b96f6d308f0acfe0af7b5007ed945a8d5c62ad7acb241 +Step #0 - "Install requirements": Status: Downloaded newer image for python:3.10 +Step #0 - "Install requirements": docker.io/library/python:3.10 +Step #0 - "Install requirements": Collecting uv +Step #0 - "Install requirements": Downloading uv-0.11.26-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.3 MB) +Step #0 - "Install requirements": ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 26.3/26.3 MB 62.7 MB/s eta 0:00:00 +Step #0 - "Install requirements": Installing collected packages: uv +Step #0 - "Install requirements": Successfully installed uv-0.11.26 +Step #0 - "Install requirements": WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv +Step #0 - "Install requirements": +Step #0 - "Install requirements": [notice] A new release of pip is available: 23.0.1 -> 26.1.2 +Step #0 - "Install requirements": [notice] To update, run: pip install --upgrade pip +Step #0 - "Install requirements": Using CPython 3.10.20 interpreter at: /usr/local/bin/python3 +Step #0 - "Install requirements": Creating virtual environment at: /workspace/venv +Step #0 - "Install requirements": Activate with: source /workspace/venv/bin/activate +Step #0 - "Install requirements": Using Python 3.10.20 environment at: /workspace/venv +Step #0 - "Install requirements": Resolved 1 package in 188ms +Step #0 - "Install requirements": Downloading uv (25.0MiB) +Step #0 - "Install requirements": Downloaded uv +Step #0 - "Install requirements": Prepared 1 package in 551ms +Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. +Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. +Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. +Step #0 - "Install requirements": Installed 1 package in 93ms +Step #0 - "Install requirements": + uv==0.11.26 +Step #0 - "Install requirements": Using Python 3.10.20 environment at: /workspace/venv +Step #0 - "Install requirements": Resolved 127 packages in 2.13s +Step #0 - "Install requirements": Building toolbox-core @ file:///workspace/packages/toolbox-core +Step #0 - "Install requirements": Downloading google-api-python-client (14.9MiB) +Step #0 - "Install requirements": Downloading pyarrow (46.6MiB) +Step #0 - "Install requirements": Downloading google-cloud-aiplatform (8.9MiB) +Step #0 - "Install requirements": Downloading cryptography (4.5MiB) +Step #0 - "Install requirements": Downloading sqlalchemy (3.1MiB) +Step #0 - "Install requirements": Downloading grpcio (6.5MiB) +Step #0 - "Install requirements": Downloading pydantic-core (2.0MiB) +Step #0 - "Install requirements": Downloading aiohttp (1.6MiB) +Step #0 - "Install requirements": Downloading google-adk (2.7MiB) +Step #0 - "Install requirements": Downloading google-cloud-discoveryengine (3.2MiB) +Step #0 - "Install requirements": Built toolbox-core @ file:///workspace/packages/toolbox-core +Step #0 - "Install requirements": Downloaded pydantic-core +Step #0 - "Install requirements": Downloaded aiohttp +Step #0 - "Install requirements": Downloaded sqlalchemy +Step #0 - "Install requirements": Downloaded grpcio +Step #0 - "Install requirements": Downloaded cryptography +Step #0 - "Install requirements": Downloaded google-adk +Step #0 - "Install requirements": Downloaded google-api-python-client +Step #0 - "Install requirements": Downloaded google-cloud-discoveryengine +Step #0 - "Install requirements": Downloaded pyarrow +Step #0 - "Install requirements": Downloaded google-cloud-aiplatform +Step #0 - "Install requirements": Prepared 127 packages in 4.20s +Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. +Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. +Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. +Step #0 - "Install requirements": Installed 127 packages in 2.16s +Step #0 - "Install requirements": + aiohappyeyeballs==2.6.2 +Step #0 - "Install requirements": + aiohttp==3.14.1 +Step #0 - "Install requirements": + aiosignal==1.4.0 +Step #0 - "Install requirements": + aiosqlite==0.22.1 +Step #0 - "Install requirements": + alembic==1.18.5 +Step #0 - "Install requirements": + annotated-doc==0.0.4 +Step #0 - "Install requirements": + annotated-types==0.7.0 +Step #0 - "Install requirements": + anyio==4.14.1 +Step #0 - "Install requirements": + async-timeout==5.0.1 +Step #0 - "Install requirements": + attrs==26.1.0 +Step #0 - "Install requirements": + authlib==1.7.2 +Step #0 - "Install requirements": + certifi==2026.6.17 +Step #0 - "Install requirements": + cffi==2.0.0 +Step #0 - "Install requirements": + charset-normalizer==3.4.7 +Step #0 - "Install requirements": + click==8.4.2 +Step #0 - "Install requirements": + cloudpickle==3.1.2 +Step #0 - "Install requirements": + cryptography==49.0.0 +Step #0 - "Install requirements": + deprecated==1.3.1 +Step #0 - "Install requirements": + distro==1.9.0 +Step #0 - "Install requirements": + docstring-parser==0.18.0 +Step #0 - "Install requirements": + exceptiongroup==1.3.1 +Step #0 - "Install requirements": + fastapi==0.138.2 +Step #0 - "Install requirements": + frozenlist==1.8.0 +Step #0 - "Install requirements": + google-adk==1.34.1 +Step #0 - "Install requirements": + google-api-core==2.31.0 +Step #0 - "Install requirements": + google-api-python-client==2.198.0 +Step #0 - "Install requirements": + google-auth==2.53.0 +Step #0 - "Install requirements": + google-auth-httplib2==0.4.0 +Step #0 - "Install requirements": + google-auth-oauthlib==1.4.0 +Step #0 - "Install requirements": + google-cloud-aiplatform==1.158.0 +Step #0 - "Install requirements": + google-cloud-appengine-logging==1.10.0 +Step #0 - "Install requirements": + google-cloud-audit-log==0.6.0 +Step #0 - "Install requirements": + google-cloud-bigquery==3.42.1 +Step #0 - "Install requirements": + google-cloud-bigquery-storage==2.39.0 +Step #0 - "Install requirements": + google-cloud-bigtable==2.40.0 +Step #0 - "Install requirements": + google-cloud-core==2.6.0 +Step #0 - "Install requirements": + google-cloud-dataplex==2.20.0 +Step #0 - "Install requirements": + google-cloud-discoveryengine==0.13.12 +Step #0 - "Install requirements": + google-cloud-iam==2.24.0 +Step #0 - "Install requirements": + google-cloud-logging==3.16.0 +Step #0 - "Install requirements": + google-cloud-monitoring==2.31.0 +Step #0 - "Install requirements": + google-cloud-pubsub==2.39.0 +Step #0 - "Install requirements": + google-cloud-resource-manager==1.18.0 +Step #0 - "Install requirements": + google-cloud-secret-manager==2.29.0 +Step #0 - "Install requirements": + google-cloud-spanner==3.69.0 +Step #0 - "Install requirements": + google-cloud-speech==2.40.0 +Step #0 - "Install requirements": + google-cloud-storage==3.12.0 +Step #0 - "Install requirements": + google-cloud-trace==1.20.0 +Step #0 - "Install requirements": + google-crc32c==1.8.0 +Step #0 - "Install requirements": + google-genai==1.75.0 +Step #0 - "Install requirements": + google-resumable-media==2.10.0 +Step #0 - "Install requirements": + googleapis-common-protos==1.75.0 +Step #0 - "Install requirements": + graphviz==0.21 +Step #0 - "Install requirements": + greenlet==3.5.3 +Step #0 - "Install requirements": + grpc-google-iam-v1==0.14.4 +Step #0 - "Install requirements": + grpc-interceptor==0.15.4 +Step #0 - "Install requirements": + grpcio==1.81.1 +Step #0 - "Install requirements": + grpcio-status==1.81.1 +Step #0 - "Install requirements": + h11==0.16.0 +Step #0 - "Install requirements": + httpcore==1.0.9 +Step #0 - "Install requirements": + httplib2==0.32.0 +Step #0 - "Install requirements": + httpx==0.28.1 +Step #0 - "Install requirements": + httpx-sse==0.4.3 +Step #0 - "Install requirements": + idna==3.18 +Step #0 - "Install requirements": + importlib-metadata==8.7.1 +Step #0 - "Install requirements": + joserfc==1.7.2 +Step #0 - "Install requirements": + jsonschema==4.26.0 +Step #0 - "Install requirements": + jsonschema-specifications==2025.9.1 +Step #0 - "Install requirements": + mako==1.3.12 +Step #0 - "Install requirements": + markupsafe==3.0.3 +Step #0 - "Install requirements": + mcp==1.28.1 +Step #0 - "Install requirements": + mmh3==5.2.1 +Step #0 - "Install requirements": + multidict==6.7.1 +Step #0 - "Install requirements": + oauthlib==3.3.1 +Step #0 - "Install requirements": + opentelemetry-api==1.41.1 +Step #0 - "Install requirements": + opentelemetry-exporter-gcp-logging==1.12.0a0 +Step #0 - "Install requirements": + opentelemetry-exporter-gcp-monitoring==1.9.0a0 +Step #0 - "Install requirements": + opentelemetry-exporter-gcp-trace==1.12.0 +Step #0 - "Install requirements": + opentelemetry-exporter-otlp-proto-common==1.41.1 +Step #0 - "Install requirements": + opentelemetry-exporter-otlp-proto-http==1.41.1 +Step #0 - "Install requirements": + opentelemetry-proto==1.41.1 +Step #0 - "Install requirements": + opentelemetry-resourcedetector-gcp==1.12.0a0 +Step #0 - "Install requirements": + opentelemetry-sdk==1.41.1 +Step #0 - "Install requirements": + opentelemetry-semantic-conventions==0.62b1 +Step #0 - "Install requirements": + packaging==26.2 +Step #0 - "Install requirements": + propcache==0.5.2 +Step #0 - "Install requirements": + proto-plus==1.28.0 +Step #0 - "Install requirements": + protobuf==6.33.6 +Step #0 - "Install requirements": + pyarrow==24.0.0 +Step #0 - "Install requirements": + pyasn1==0.6.3 +Step #0 - "Install requirements": + pyasn1-modules==0.4.2 +Step #0 - "Install requirements": + pycparser==3.0 +Step #0 - "Install requirements": + pydantic==2.13.4 +Step #0 - "Install requirements": + pydantic-core==2.46.4 +Step #0 - "Install requirements": + pydantic-settings==2.14.2 +Step #0 - "Install requirements": + pyjwt==2.13.0 +Step #0 - "Install requirements": + pyopenssl==26.3.0 +Step #0 - "Install requirements": + pyparsing==3.3.2 +Step #0 - "Install requirements": + python-dateutil==2.9.0.post0 +Step #0 - "Install requirements": + python-dotenv==1.2.2 +Step #0 - "Install requirements": + python-multipart==0.0.32 +Step #0 - "Install requirements": + pyyaml==6.0.3 +Step #0 - "Install requirements": + referencing==0.37.0 +Step #0 - "Install requirements": + requests==2.34.2 +Step #0 - "Install requirements": + requests-oauthlib==2.0.0 +Step #0 - "Install requirements": + rpds-py==0.30.0 +Step #0 - "Install requirements": + six==1.17.0 +Step #0 - "Install requirements": + sniffio==1.3.1 +Step #0 - "Install requirements": + sqlalchemy==2.0.51 +Step #0 - "Install requirements": + sqlalchemy-spanner==1.19.0 +Step #0 - "Install requirements": + sqlparse==0.5.5 +Step #0 - "Install requirements": + sse-starlette==3.4.5 +Step #0 - "Install requirements": + starlette==0.52.1 +Step #0 - "Install requirements": + tenacity==9.1.4 +Step #0 - "Install requirements": + tomli==2.4.1 +Step #0 - "Install requirements": + toolbox-core==1.1.0 (from file:///workspace/packages/toolbox-core) +Step #0 - "Install requirements": + typing-extensions==4.15.0 +Step #0 - "Install requirements": + typing-inspection==0.4.2 +Step #0 - "Install requirements": + tzlocal==5.4.4 +Step #0 - "Install requirements": + uritemplate==4.2.0 +Step #0 - "Install requirements": + urllib3==2.7.0 +Step #0 - "Install requirements": + uvicorn==0.49.0 +Step #0 - "Install requirements": + watchdog==6.0.0 +Step #0 - "Install requirements": + websockets==15.0.1 +Step #0 - "Install requirements": + wrapt==2.2.2 +Step #0 - "Install requirements": + yarl==1.24.2 +Step #0 - "Install requirements": + zipp==4.1.0 +Step #0 - "Install requirements": Using Python 3.10.20 environment at: /workspace/venv +Step #0 - "Install requirements": Resolved 162 packages in 1.77s +Step #0 - "Install requirements": Building toolbox-adk @ file:///workspace/packages/toolbox-adk +Step #0 - "Install requirements": Downloading jedi (4.7MiB) +Step #0 - "Install requirements": Downloading pygments (1.2MiB) +Step #0 - "Install requirements": Downloading ast-serialize (1.2MiB) +Step #0 - "Install requirements": Downloading mypy (14.3MiB) +Step #0 - "Install requirements": Downloading black (1.8MiB) +Step #0 - "Install requirements": Downloading numpy (15.6MiB) +Step #0 - "Install requirements": Downloaded ast-serialize +Step #0 - "Install requirements": Built toolbox-adk @ file:///workspace/packages/toolbox-adk +Step #0 - "Install requirements": Downloaded black +Step #0 - "Install requirements": Downloaded pygments +Step #0 - "Install requirements": Downloaded numpy +Step #0 - "Install requirements": Downloaded mypy +Step #0 - "Install requirements": Downloaded jedi +Step #0 - "Install requirements": Prepared 35 packages in 2.36s +Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. +Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. +Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. +Step #0 - "Install requirements": Installed 35 packages in 1.39s +Step #0 - "Install requirements": + ast-serialize==0.5.0 +Step #0 - "Install requirements": + asttokens==3.0.1 +Step #0 - "Install requirements": + backports-asyncio-runner==1.2.0 +Step #0 - "Install requirements": + black==26.5.1 +Step #0 - "Install requirements": + coverage==7.14.3 +Step #0 - "Install requirements": + decorator==5.3.1 +Step #0 - "Install requirements": + executing==2.2.1 +Step #0 - "Install requirements": + iniconfig==2.3.0 +Step #0 - "Install requirements": + ipython==8.39.0 +Step #0 - "Install requirements": + isort==8.0.1 +Step #0 - "Install requirements": + jedi==0.20.0 +Step #0 - "Install requirements": + librt==0.12.0 +Step #0 - "Install requirements": + matplotlib-inline==0.2.2 +Step #0 - "Install requirements": + mypy==2.1.0 +Step #0 - "Install requirements": + mypy-extensions==1.1.0 +Step #0 - "Install requirements": + numpy==2.1.3 +Step #0 - "Install requirements": + parso==0.8.7 +Step #0 - "Install requirements": + pathspec==1.1.1 +Step #0 - "Install requirements": + pexpect==4.9.0 +Step #0 - "Install requirements": + platformdirs==4.10.0 +Step #0 - "Install requirements": + pluggy==1.6.0 +Step #0 - "Install requirements": + prompt-toolkit==3.0.52 +Step #0 - "Install requirements": + ptyprocess==0.7.0 +Step #0 - "Install requirements": + pure-eval==0.2.3 +Step #0 - "Install requirements": + pygments==2.20.0 +Step #0 - "Install requirements": + pytest==9.0.3 +Step #0 - "Install requirements": + pytest-asyncio==1.4.0 +Step #0 - "Install requirements": + pytest-cov==7.1.0 +Step #0 - "Install requirements": + pytest-mock==3.15.1 +Step #0 - "Install requirements": + pytokens==0.4.1 +Step #0 - "Install requirements": + stack-data==0.6.3 +Step #0 - "Install requirements": + tokenize-rt==6.2.0 +Step #0 - "Install requirements": + toolbox-adk==1.0.1 (from file:///workspace/packages/toolbox-adk) +Step #0 - "Install requirements": + traitlets==5.15.1 +Step #0 - "Install requirements": + wcwidth==0.8.2 +Finished Step #0 - "Install requirements" +Starting Step #1 - "Run integration tests" +Step #1 - "Run integration tests": Already have image (with digest): python:3.10 +Step #1 - "Run integration tests": ============================= test session starts ============================== +Step #1 - "Run integration tests": platform linux -- Python 3.10.20, pytest-9.0.3, pluggy-1.6.0 +Step #1 - "Run integration tests": rootdir: /workspace/packages/toolbox-adk +Step #1 - "Run integration tests": configfile: pyproject.toml +Step #1 - "Run integration tests": plugins: cov-7.1.0, mock-3.15.1, asyncio-1.4.0, anyio-4.14.1 +Step #1 - "Run integration tests": asyncio: mode=strict, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function +Step #1 - "Run integration tests": collected 118 items +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/test_integration.py EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEsEE [ 28%] +Step #1 - "Run integration tests": EEEEEEEEEEEEEEEEEEEEEEEEEEEEEs [ 54%] +Step #1 - "Run integration tests": tests/unit/test_client.py .............. [ 66%] +Step #1 - "Run integration tests": tests/unit/test_credentials.py ................ [ 79%] +Step #1 - "Run integration tests": tests/unit/test_tool.py .............. [ 91%] +Step #1 - "Run integration tests": tests/unit/test_toolset.py .......... [100%] +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ==================================== ERRORS ==================================== +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_and_run[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": ---------------------------- Captured stdout setup ----------------------------- +Step #1 - "Run integration tests": Downloading toolbox binary from gcs bucket... +Step #1 - "Run integration tests": Blob mcp-v202606/linux/amd64/toolbox downloaded to toolbox. +Step #1 - "Run integration tests": Toolbox binary downloaded successfully. +Step #1 - "Run integration tests": Opening toolbox server process... +Step #1 - "Run integration tests": Flag --tools-file has been deprecated, please use --config instead +Step #1 - "Run integration tests": 2026-06-30T16:37:26.660050094Z INFO "Starting MCP Toolbox for Databases version 1.5.0+dev.linux.amd64.927f274" +Step #1 - "Run integration tests": Flag --tools-file has been deprecated, please use --config instead +Step #1 - "Run integration tests": 2026-06-30T16:37:26.667463953Z INFO "Starting MCP Toolbox for Databases version 1.5.0+dev.linux.amd64.927f274" +Step #1 - "Run integration tests": 2026-06-30T16:37:27.126752855Z INFO "Initialized 1 sources: my-cloud-sql-pg-source" +Step #1 - "Run integration tests": 2026-06-30T16:37:27.126845111Z INFO "Initialized 2 authServices: my-test-auth, my-test-auth2" +Step #1 - "Run integration tests": 2026-06-30T16:37:27.12686228Z INFO "Initialized 0 embeddingModels: " +Step #1 - "Run integration tests": 2026-06-30T16:37:27.126918805Z INFO "Initialized 7 tools: get-row-by-content-auth, search-rows, process-data, get-n-rows, get-row-by-id, get-row-by-id-auth, get-row-by-email-auth" +Step #1 - "Run integration tests": 2026-06-30T16:37:27.126973766Z INFO "Initialized 4 toolsets: default, my-toolset-2, my-toolset-3, my-toolset" +Step #1 - "Run integration tests": 2026-06-30T16:37:27.127210257Z INFO "Initialized 0 prompts: " +Step #1 - "Run integration tests": 2026-06-30T16:37:27.127230943Z INFO "Initialized 1 promptsets: default" +Step #1 - "Run integration tests": 2026-06-30T16:37:27.134652007Z INFO "Server ready to serve!" +Step #1 - "Run integration tests": 2026-06-30T16:37:27.145597663Z INFO "Initialized 1 sources: my-cloud-sql-pg-source" +Step #1 - "Run integration tests": 2026-06-30T16:37:27.145713842Z INFO "Initialized 2 authServices: my-test-auth, my-test-auth2" +Step #1 - "Run integration tests": 2026-06-30T16:37:27.145732758Z INFO "Initialized 0 embeddingModels: " +Step #1 - "Run integration tests": 2026-06-30T16:37:27.14580289Z INFO "Initialized 7 tools: search-rows, process-data, get-n-rows, get-row-by-id, get-row-by-id-auth, get-row-by-email-auth, get-row-by-content-auth" +Step #1 - "Run integration tests": 2026-06-30T16:37:27.145859554Z INFO "Initialized 4 toolsets: default, my-toolset, my-toolset-2, my-toolset-3" +Step #1 - "Run integration tests": 2026-06-30T16:37:27.145884124Z INFO "Initialized 0 prompts: " +Step #1 - "Run integration tests": 2026-06-30T16:37:27.145906852Z INFO "Initialized 1 promptsets: default" +Step #1 - "Run integration tests": 2026-06-30T16:37:27.153713207Z INFO "Server ready to serve!" +Step #1 - "Run integration tests": Checking if both toolbox servers are successfully started... +Step #1 - "Run integration tests": Toolbox servers started successfully. +Step #1 - "Run integration tests": ---------------------------- Captured stderr setup ----------------------------- +Step #1 - "Run integration tests": 2026-06-30T16:37:27.127288211Z WARN "Flag --enable-draft-specs is active. Please note that draft specs are subject to breaking changes and will be completely removed (not redirected) once stable MCP specifications are released. Do not use this configuration in production." +Step #1 - "Run integration tests": 2026-06-30T16:37:27.127355512Z WARN "wildcard (*) allows any website to access the resources. This creates a security risk regardless of whether you are in a production or local development environment. Recommended to use --allowed-origins with specific local addresses." +Step #1 - "Run integration tests": 2026-06-30T16:37:27.127467746Z WARN "wildcard (*) hosts allow any domain to access this resource, making it vulnerable to DNS rebinding attacks regardless of whether you are in a production or local development environment. For improved security, use the --allowed-hosts flag to specify trusted domains." +Step #1 - "Run integration tests": 2026-06-30T16:37:27.145973651Z WARN "wildcard (*) allows any website to access the resources. This creates a security risk regardless of whether you are in a production or local development environment. Recommended to use --allowed-origins with specific local addresses." +Step #1 - "Run integration tests": 2026-06-30T16:37:27.146069424Z WARN "wildcard (*) hosts allow any domain to access this resource, making it vulnerable to DNS rebinding attacks regardless of whether you are in a production or local development environment. For improved security, use the --allowed-hosts flag to specify trusted domains." +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_with_default_protocol[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_with_explicit_protocol[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_partial_loading_by_names[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_bound_params_e2e[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_3lo_flow_simulation[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_manual_token_integration[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_manual_credentials_integration[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_api_key_integration[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_adk_integration_optional_params[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_header_collision[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_specific[http://localhost:5000-my-toolset-1-expected_tools0] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_specific[http://localhost:5000-my-toolset-2-2-expected_tools1] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_default[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _____ ERROR at setup of TestBasicE2E.test_run_tool[http://localhost:5000] ______ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_run_tool_missing_params[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_run_tool_wrong_param_type[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": ___ ERROR at setup of TestBindParams.test_bind_params[http://localhost:5000] ___ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestBindParams.test_bind_params_callable[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_tool_unauth_with_auth[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_multiple_tools_unauth_with_auth[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_multiple_tools_partial_auth_usage[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": ___ ERROR at setup of TestAuth.test_run_tool_no_auth[http://localhost:5000] ____ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": __ ERROR at setup of TestAuth.test_run_tool_wrong_auth[http://localhost:5000] __ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _____ ERROR at setup of TestAuth.test_run_tool_auth[http://localhost:5000] _____ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": __ ERROR at setup of TestAuth.test_run_tool_async_auth[http://localhost:5000] __ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_optional_params_omitted[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_all_valid_params[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_missing_required_param[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestMapParams.test_run_tool_with_map_params[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestMapParams.test_run_tool_with_wrong_map_value_type[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_and_run[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_with_default_protocol[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_with_explicit_protocol[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_partial_loading_by_names[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_bound_params_e2e[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_3lo_flow_simulation[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_manual_token_integration[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_manual_credentials_integration[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_api_key_integration[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_adk_integration_optional_params[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_header_collision[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_specific[http://localhost:5001-my-toolset-1-expected_tools0] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_specific[http://localhost:5001-my-toolset-2-2-expected_tools1] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_default[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _____ ERROR at setup of TestBasicE2E.test_run_tool[http://localhost:5001] ______ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_run_tool_missing_params[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_run_tool_wrong_param_type[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": ___ ERROR at setup of TestBindParams.test_bind_params[http://localhost:5001] ___ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestBindParams.test_bind_params_callable[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_tool_unauth_with_auth[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_multiple_tools_unauth_with_auth[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_multiple_tools_partial_auth_usage[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": ___ ERROR at setup of TestAuth.test_run_tool_no_auth[http://localhost:5001] ____ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": __ ERROR at setup of TestAuth.test_run_tool_wrong_auth[http://localhost:5001] __ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _____ ERROR at setup of TestAuth.test_run_tool_auth[http://localhost:5001] _____ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": __ ERROR at setup of TestAuth.test_run_tool_async_auth[http://localhost:5001] __ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_optional_params_omitted[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_all_valid_params[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_missing_required_param[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestMapParams.test_run_tool_with_map_params[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": _ ERROR at setup of TestMapParams.test_run_tool_with_wrong_map_value_type[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(autouse=True) +Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): +Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset +Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError +Step #1 - "Run integration tests": =============================== warnings summary =============================== +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255 +Step #1 - "Run integration tests": /workspace/venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255: FutureWarning: You are using a Python version (3.10.20) which Google will stop supporting in new releases of google.api_core once it reaches its end of life (2026-10-04). Please upgrade to the latest Python version, or at least Python 3.11, to continue receiving updates for google.api_core past that date. +Step #1 - "Run integration tests": warnings.warn(message, FutureWarning) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255 +Step #1 - "Run integration tests": /workspace/venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255: FutureWarning: You are using a Python version (3.10.20) which Google will stop supporting in new releases of google.cloud.secretmanager_v1 once it reaches its end of life (2026-10-04). Please upgrade to the latest Python version, or at least Python 3.11, to continue receiving updates for google.cloud.secretmanager_v1 past that date. +Step #1 - "Run integration tests": warnings.warn(message, FutureWarning) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/unit/test_credentials.py::TestCredentialStrategy::test_from_adk_auth_config +Step #1 - "Run integration tests": tests/unit/test_tool.py::TestToolboxTool::test_3lo_request_credential_when_missing +Step #1 - "Run integration tests": tests/unit/test_tool.py::TestToolboxTool::test_3lo_uses_existing_credential +Step #1 - "Run integration tests": tests/unit/test_tool.py::TestToolboxTool::test_3lo_exception_reraise +Step #1 - "Run integration tests": tests/unit/test_tool.py::TestToolboxTool::test_3lo_exception_fallback +Step #1 - "Run integration tests": /workspace/venv/lib/python3.10/site-packages/google/adk/auth/auth_tool.py:94: DeprecationWarning: This method is deprecated. Use credential_key instead. +Step #1 - "Run integration tests": self.credential_key = self.get_credential_key() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html +Step #1 - "Run integration tests": ================================ tests coverage ================================ +Step #1 - "Run integration tests": _______________ coverage: platform linux, python 3.10.20-final-0 _______________ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": Name Stmts Miss Cover +Step #1 - "Run integration tests": ---------------------------------------------------- +Step #1 - "Run integration tests": src/toolbox_adk/__init__.py 6 0 100% +Step #1 - "Run integration tests": src/toolbox_adk/client.py 79 2 97% +Step #1 - "Run integration tests": src/toolbox_adk/credentials.py 75 3 96% +Step #1 - "Run integration tests": src/toolbox_adk/tool.py 128 9 93% +Step #1 - "Run integration tests": src/toolbox_adk/toolset.py 55 2 96% +Step #1 - "Run integration tests": src/toolbox_adk/version.py 1 0 100% +Step #1 - "Run integration tests": ---------------------------------------------------- +Step #1 - "Run integration tests": TOTAL 344 16 95% +Step #1 - "Run integration tests": Required test coverage of 90% reached. Total coverage: 95.35% +Step #1 - "Run integration tests": =========================== short test summary info ============================ +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_and_run[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_with_default_protocol[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_with_explicit_protocol[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_partial_loading_by_names[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_bound_params_e2e[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_3lo_flow_simulation[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_manual_token_integration[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_manual_credentials_integration[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_api_key_integration[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_adk_integration_optional_params[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_header_collision[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_specific[http://localhost:5000-my-toolset-1-expected_tools0] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_specific[http://localhost:5000-my-toolset-2-2-expected_tools1] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_default[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool_missing_params[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool_wrong_param_type[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBindParams::test_bind_params[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBindParams::test_bind_params_callable[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_unauth_with_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_multiple_tools_unauth_with_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_multiple_tools_partial_auth_usage[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_no_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_wrong_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_async_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_optional_params_omitted[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_all_valid_params[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_missing_required_param[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestMapParams::test_run_tool_with_map_params[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestMapParams::test_run_tool_with_wrong_map_value_type[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_and_run[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_with_default_protocol[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_with_explicit_protocol[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_partial_loading_by_names[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_bound_params_e2e[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_3lo_flow_simulation[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_manual_token_integration[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_manual_credentials_integration[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_api_key_integration[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_adk_integration_optional_params[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_header_collision[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_specific[http://localhost:5001-my-toolset-1-expected_tools0] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_specific[http://localhost:5001-my-toolset-2-2-expected_tools1] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_default[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool_missing_params[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool_wrong_param_type[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBindParams::test_bind_params[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBindParams::test_bind_params_callable[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_unauth_with_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_multiple_tools_unauth_with_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_multiple_tools_partial_auth_usage[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_no_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_wrong_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_async_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_optional_params_omitted[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_all_valid_params[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_missing_required_param[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestMapParams::test_run_tool_with_map_params[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestMapParams::test_run_tool_with_wrong_map_value_type[http://localhost:5001] +Step #1 - "Run integration tests": ============ 54 passed, 2 skipped, 7 warnings, 62 errors in 24.40s ============= +Finished Step #1 - "Run integration tests" +ERROR +ERROR: build step 1 "python:3.10" failed: step exited with non-zero status: 1 +-------------------------------------------------------------------------------- diff --git a/core_fail.txt b/core_fail.txt new file mode 100644 index 000000000..14653bbc0 --- /dev/null +++ b/core_fail.txt @@ -0,0 +1,368 @@ + +To live stream log output for this build, please ensure the grpc module is installed. Run: + pip install grpcio +and set: + export CLOUDSDK_PYTHON_SITEPACKAGES=1 + +----------------------------- REMOTE BUILD OUTPUT ------------------------------ +starting build "f5c1be4c-c32d-4e5d-80fb-c97ac998bafa" +FETCHSOURCE +From https://github.com/googleapis/mcp-toolbox-sdk-python + * branch 0c6698324c00fc78b2ffb1207763d9a693598030 -> FETCH_HEAD +HEAD is now at 0c66983 chore: test with mcp-v202606 branch to fix unknown flag error +GitCommit: +0c6698324c00fc78b2ffb1207763d9a693598030 +BUILD +Starting Step #0 - "Install requirements" +Step #0 - "Install requirements": Pulling image: python:3.10 +Step #0 - "Install requirements": 3.10: Pulling from library/python +Step #0 - "Install requirements": aa3e9ef32f73: Pulling fs layer +Step #0 - "Install requirements": 3f59c84a7863: Pulling fs layer +Step #0 - "Install requirements": 30d0db852850: Pulling fs layer +Step #0 - "Install requirements": 0252e6abaf0f: Pulling fs layer +Step #0 - "Install requirements": ccf7e73781a2: Pulling fs layer +Step #0 - "Install requirements": de50cca5f6c1: Pulling fs layer +Step #0 - "Install requirements": e2fc6298fd6c: Pulling fs layer +Step #0 - "Install requirements": e2fc6298fd6c: Waiting +Step #0 - "Install requirements": ccf7e73781a2: Verifying Checksum +Step #0 - "Install requirements": ccf7e73781a2: Download complete +Step #0 - "Install requirements": de50cca5f6c1: Download complete +Step #0 - "Install requirements": 3f59c84a7863: Verifying Checksum +Step #0 - "Install requirements": 3f59c84a7863: Download complete +Step #0 - "Install requirements": e2fc6298fd6c: Verifying Checksum +Step #0 - "Install requirements": e2fc6298fd6c: Download complete +Step #0 - "Install requirements": aa3e9ef32f73: Verifying Checksum +Step #0 - "Install requirements": aa3e9ef32f73: Download complete +Step #0 - "Install requirements": 30d0db852850: Verifying Checksum +Step #0 - "Install requirements": 30d0db852850: Download complete +Step #0 - "Install requirements": 0252e6abaf0f: Verifying Checksum +Step #0 - "Install requirements": 0252e6abaf0f: Download complete +Step #0 - "Install requirements": aa3e9ef32f73: Pull complete +Step #0 - "Install requirements": 3f59c84a7863: Pull complete +Step #0 - "Install requirements": 30d0db852850: Pull complete +Step #0 - "Install requirements": 0252e6abaf0f: Pull complete +Step #0 - "Install requirements": ccf7e73781a2: Pull complete +Step #0 - "Install requirements": de50cca5f6c1: Pull complete +Step #0 - "Install requirements": e2fc6298fd6c: Pull complete +Step #0 - "Install requirements": Digest: sha256:a359ba8614a261091f0b96f6d308f0acfe0af7b5007ed945a8d5c62ad7acb241 +Step #0 - "Install requirements": Status: Downloaded newer image for python:3.10 +Step #0 - "Install requirements": docker.io/library/python:3.10 +Step #0 - "Install requirements": Collecting uv +Step #0 - "Install requirements": Downloading uv-0.11.26-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.3 MB) +Step #0 - "Install requirements": ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 26.3/26.3 MB 59.1 MB/s eta 0:00:00 +Step #0 - "Install requirements": Installing collected packages: uv +Step #0 - "Install requirements": Successfully installed uv-0.11.26 +Step #0 - "Install requirements": WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv +Step #0 - "Install requirements": +Step #0 - "Install requirements": [notice] A new release of pip is available: 23.0.1 -> 26.1.2 +Step #0 - "Install requirements": [notice] To update, run: pip install --upgrade pip +Step #0 - "Install requirements": Using CPython 3.10.20 interpreter at: /usr/local/bin/python3 +Step #0 - "Install requirements": Creating virtual environment at: /workspace/venv +Step #0 - "Install requirements": Activate with: source /workspace/venv/bin/activate +Step #0 - "Install requirements": Using Python 3.10.20 environment at: /workspace/venv +Step #0 - "Install requirements": Resolved 1 package in 175ms +Step #0 - "Install requirements": Downloading uv (25.0MiB) +Step #0 - "Install requirements": Downloaded uv +Step #0 - "Install requirements": Prepared 1 package in 538ms +Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. +Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. +Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. +Step #0 - "Install requirements": Installed 1 package in 72ms +Step #0 - "Install requirements": + uv==0.11.26 +Step #0 - "Install requirements": Using Python 3.10.20 environment at: /workspace/venv +Step #0 - "Install requirements": Resolved 90 packages in 1.95s +Step #0 - "Install requirements": Building toolbox-core @ file:///workspace/packages/toolbox-core +Step #0 - "Install requirements": Downloading aiohttp (1.6MiB) +Step #0 - "Install requirements": Downloading grpcio (6.5MiB) +Step #0 - "Install requirements": Downloading pygments (1.2MiB) +Step #0 - "Install requirements": Downloading numpy (15.6MiB) +Step #0 - "Install requirements": Downloading mypy (14.3MiB) +Step #0 - "Install requirements": Downloading ast-serialize (1.2MiB) +Step #0 - "Install requirements": Downloading pydantic-core (2.0MiB) +Step #0 - "Install requirements": Downloading cryptography (4.5MiB) +Step #0 - "Install requirements": Downloading jedi (4.7MiB) +Step #0 - "Install requirements": Downloading black (1.8MiB) +Step #0 - "Install requirements": Built toolbox-core @ file:///workspace/packages/toolbox-core +Step #0 - "Install requirements": Downloaded ast-serialize +Step #0 - "Install requirements": Downloaded pydantic-core +Step #0 - "Install requirements": Downloaded aiohttp +Step #0 - "Install requirements": Downloaded black +Step #0 - "Install requirements": Downloaded grpcio +Step #0 - "Install requirements": Downloaded cryptography +Step #0 - "Install requirements": Downloaded pygments +Step #0 - "Install requirements": Downloaded numpy +Step #0 - "Install requirements": Downloaded mypy +Step #0 - "Install requirements": Downloaded jedi +Step #0 - "Install requirements": Prepared 90 packages in 2.82s +Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. +Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. +Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. +Step #0 - "Install requirements": Installed 90 packages in 1.36s +Step #0 - "Install requirements": + aiohappyeyeballs==2.6.2 +Step #0 - "Install requirements": + aiohttp==3.14.1 +Step #0 - "Install requirements": + aioresponses==0.7.8 +Step #0 - "Install requirements": + aiosignal==1.4.0 +Step #0 - "Install requirements": + annotated-types==0.7.0 +Step #0 - "Install requirements": + ast-serialize==0.5.0 +Step #0 - "Install requirements": + asttokens==3.0.1 +Step #0 - "Install requirements": + async-timeout==5.0.1 +Step #0 - "Install requirements": + attrs==26.1.0 +Step #0 - "Install requirements": + backports-asyncio-runner==1.2.0 +Step #0 - "Install requirements": + black==26.5.1 +Step #0 - "Install requirements": + certifi==2026.6.17 +Step #0 - "Install requirements": + cffi==2.0.0 +Step #0 - "Install requirements": + charset-normalizer==3.4.7 +Step #0 - "Install requirements": + click==8.4.2 +Step #0 - "Install requirements": + coverage==7.14.3 +Step #0 - "Install requirements": + cryptography==49.0.0 +Step #0 - "Install requirements": + decorator==5.3.1 +Step #0 - "Install requirements": + deprecated==1.3.1 +Step #0 - "Install requirements": + exceptiongroup==1.3.1 +Step #0 - "Install requirements": + executing==2.2.1 +Step #0 - "Install requirements": + frozenlist==1.8.0 +Step #0 - "Install requirements": + google-api-core==2.31.0 +Step #0 - "Install requirements": + google-auth==2.55.1 +Step #0 - "Install requirements": + google-cloud-core==2.6.0 +Step #0 - "Install requirements": + google-cloud-secret-manager==2.28.0 +Step #0 - "Install requirements": + google-cloud-storage==3.10.1 +Step #0 - "Install requirements": + google-crc32c==1.8.0 +Step #0 - "Install requirements": + google-resumable-media==2.10.0 +Step #0 - "Install requirements": + googleapis-common-protos==1.75.0 +Step #0 - "Install requirements": + grpc-google-iam-v1==0.14.4 +Step #0 - "Install requirements": + grpcio==1.81.1 +Step #0 - "Install requirements": + grpcio-status==1.81.1 +Step #0 - "Install requirements": + idna==3.18 +Step #0 - "Install requirements": + importlib-metadata==8.7.1 +Step #0 - "Install requirements": + iniconfig==2.3.0 +Step #0 - "Install requirements": + ipython==8.39.0 +Step #0 - "Install requirements": + isort==8.0.1 +Step #0 - "Install requirements": + jedi==0.20.0 +Step #0 - "Install requirements": + librt==0.12.0 +Step #0 - "Install requirements": + matplotlib-inline==0.2.2 +Step #0 - "Install requirements": + multidict==6.7.1 +Step #0 - "Install requirements": + mypy==2.1.0 +Step #0 - "Install requirements": + mypy-extensions==1.1.0 +Step #0 - "Install requirements": + numpy==2.1.3 +Step #0 - "Install requirements": + opentelemetry-api==1.41.1 +Step #0 - "Install requirements": + opentelemetry-exporter-otlp==1.41.1 +Step #0 - "Install requirements": + opentelemetry-exporter-otlp-proto-common==1.41.1 +Step #0 - "Install requirements": + opentelemetry-exporter-otlp-proto-grpc==1.41.1 +Step #0 - "Install requirements": + opentelemetry-exporter-otlp-proto-http==1.41.1 +Step #0 - "Install requirements": + opentelemetry-proto==1.41.1 +Step #0 - "Install requirements": + opentelemetry-sdk==1.41.1 +Step #0 - "Install requirements": + opentelemetry-semantic-conventions==0.62b1 +Step #0 - "Install requirements": + packaging==26.2 +Step #0 - "Install requirements": + parso==0.8.7 +Step #0 - "Install requirements": + pathspec==1.1.1 +Step #0 - "Install requirements": + pexpect==4.9.0 +Step #0 - "Install requirements": + platformdirs==4.10.0 +Step #0 - "Install requirements": + pluggy==1.6.0 +Step #0 - "Install requirements": + prompt-toolkit==3.0.52 +Step #0 - "Install requirements": + propcache==0.5.2 +Step #0 - "Install requirements": + proto-plus==1.28.0 +Step #0 - "Install requirements": + protobuf==6.33.6 +Step #0 - "Install requirements": + ptyprocess==0.7.0 +Step #0 - "Install requirements": + pure-eval==0.2.3 +Step #0 - "Install requirements": + pyasn1==0.6.3 +Step #0 - "Install requirements": + pyasn1-modules==0.4.2 +Step #0 - "Install requirements": + pycparser==3.0 +Step #0 - "Install requirements": + pydantic==2.13.4 +Step #0 - "Install requirements": + pydantic-core==2.46.4 +Step #0 - "Install requirements": + pygments==2.20.0 +Step #0 - "Install requirements": + pytest==9.0.3 +Step #0 - "Install requirements": + pytest-aioresponses==0.3.0 +Step #0 - "Install requirements": + pytest-asyncio==1.4.0 +Step #0 - "Install requirements": + pytest-cov==7.1.0 +Step #0 - "Install requirements": + pytest-mock==3.15.1 +Step #0 - "Install requirements": + pytokens==0.4.1 +Step #0 - "Install requirements": + requests==2.34.2 +Step #0 - "Install requirements": + stack-data==0.6.3 +Step #0 - "Install requirements": + tokenize-rt==6.2.0 +Step #0 - "Install requirements": + tomli==2.4.1 +Step #0 - "Install requirements": + toolbox-core==1.1.0 (from file:///workspace/packages/toolbox-core) +Step #0 - "Install requirements": + traitlets==5.15.1 +Step #0 - "Install requirements": + typing-extensions==4.15.0 +Step #0 - "Install requirements": + typing-inspection==0.4.2 +Step #0 - "Install requirements": + urllib3==2.7.0 +Step #0 - "Install requirements": + wcwidth==0.8.2 +Step #0 - "Install requirements": + wrapt==2.2.2 +Step #0 - "Install requirements": + yarl==1.24.2 +Step #0 - "Install requirements": + zipp==4.1.0 +Step #0 - "Install requirements": Using Python 3.10.20 environment at: /workspace/venv +Step #0 - "Install requirements": Resolved 27 packages in 133ms +Step #0 - "Install requirements": Downloading aiohttp (1.6MiB) +Step #0 - "Install requirements": Downloaded aiohttp +Step #0 - "Install requirements": Prepared 2 packages in 105ms +Step #0 - "Install requirements": Uninstalled 2 packages in 5ms +Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. +Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. +Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. +Step #0 - "Install requirements": Installed 2 packages in 24ms +Step #0 - "Install requirements": - aiohttp==3.14.1 +Step #0 - "Install requirements": + aiohttp==3.14.0 +Step #0 - "Install requirements": - google-auth==2.55.1 +Step #0 - "Install requirements": + google-auth==2.53.0 +Finished Step #0 - "Install requirements" +Starting Step #1 - "Run integration tests" +Step #1 - "Run integration tests": Already have image (with digest): python:3.10 +Step #1 - "Run integration tests": ============================= test session starts ============================== +Step #1 - "Run integration tests": platform linux -- Python 3.10.20, pytest-9.0.3, pluggy-1.6.0 +Step #1 - "Run integration tests": rootdir: /workspace/packages/toolbox-core +Step #1 - "Run integration tests": configfile: pyproject.toml +Step #1 - "Run integration tests": plugins: cov-7.1.0, aioresponses-0.3.0, mock-3.15.1, asyncio-1.4.0 +Step #1 - "Run integration tests": asyncio: mode=strict, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function +Step #1 - "Run integration tests": collected 1142 items +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/mcp_transport/test_base.py ................... [ 1%] +Step #1 - "Run integration tests": tests/mcp_transport/test_telemetry.py .................................. [ 4%] +Step #1 - "Run integration tests": ........... [ 5%] +Step #1 - "Run integration tests": tests/mcp_transport/test_v20241105.py .................................. [ 8%] +Step #1 - "Run integration tests": [ 8%] +Step #1 - "Run integration tests": tests/mcp_transport/test_v20250326.py .................................. [ 11%] +Step #1 - "Run integration tests": [ 11%] +Step #1 - "Run integration tests": tests/mcp_transport/test_v20250618.py .................................. [ 14%] +Step #1 - "Run integration tests": .... [ 14%] +Step #1 - "Run integration tests": tests/mcp_transport/test_v20251125.py .................................. [ 17%] +Step #1 - "Run integration tests": .. [ 18%] +Step #1 - "Run integration tests": tests/mcp_transport/test_v20260618.py .................. [ 19%] +Step #1 - "Run integration tests": tests/test_auth_methods.py .......... [ 20%] +Step #1 - "Run integration tests": tests/test_client.py ........................... [ 22%] +Step #1 - "Run integration tests": tests/test_e2e.py ................................... [ 25%] +Step #1 - "Run integration tests": tests/test_e2e_mcp.py .................................................. [ 30%] +Step #1 - "Run integration tests": ........................................................................ [ 36%] +Step #1 - "Run integration tests": ............. [ 37%] +Step #1 - "Run integration tests": tests/test_protocol.py ......................... [ 39%] +Step #1 - "Run integration tests": tests/test_sync_client.py ................ [ 41%] +Step #1 - "Run integration tests": tests/test_sync_e2e.py .............. [ 42%] +Step #1 - "Run integration tests": tests/test_sync_tool.py .................... [ 44%] +Step #1 - "Run integration tests": tests/test_tool.py .................................... [ 47%] +Step #1 - "Run integration tests": tests/test_utils.py ............................. [ 50%] +Step #1 - "Run integration tests": tests/mcp_transport/test_base.py ................... [ 51%] +Step #1 - "Run integration tests": tests/mcp_transport/test_telemetry.py .................................. [ 54%] +Step #1 - "Run integration tests": ........... [ 55%] +Step #1 - "Run integration tests": tests/mcp_transport/test_v20241105.py .................................. [ 58%] +Step #1 - "Run integration tests": [ 58%] +Step #1 - "Run integration tests": tests/mcp_transport/test_v20250326.py .................................. [ 61%] +Step #1 - "Run integration tests": [ 61%] +Step #1 - "Run integration tests": tests/mcp_transport/test_v20250618.py .................................. [ 64%] +Step #1 - "Run integration tests": .... [ 64%] +Step #1 - "Run integration tests": tests/mcp_transport/test_v20251125.py .................................. [ 67%] +Step #1 - "Run integration tests": .. [ 68%] +Step #1 - "Run integration tests": tests/mcp_transport/test_v20260618.py .................. [ 69%] +Step #1 - "Run integration tests": tests/test_auth_methods.py .......... [ 70%] +Step #1 - "Run integration tests": tests/test_client.py ........................... [ 72%] +Step #1 - "Run integration tests": tests/test_e2e.py ................................... [ 75%] +Step #1 - "Run integration tests": tests/test_e2e_mcp.py ....................F............................. [ 80%] +Step #1 - "Run integration tests": ........................................................................ [ 86%] +Step #1 - "Run integration tests": ............. [ 87%] +Step #1 - "Run integration tests": tests/test_protocol.py ......................... [ 89%] +Step #1 - "Run integration tests": tests/test_sync_client.py ................ [ 91%] +Step #1 - "Run integration tests": tests/test_sync_e2e.py .............. [ 92%] +Step #1 - "Run integration tests": tests/test_sync_tool.py .................... [ 94%] +Step #1 - "Run integration tests": tests/test_tool.py .................................... [ 97%] +Step #1 - "Run integration tests": tests/test_utils.py ............................. [100%] +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": =================================== FAILURES =================================== +Step #1 - "Run integration tests": ________ TestBasicE2E.test_protocol_fallback_e2e[http://localhost:5001] ________ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": async def test_protocol_fallback_e2e(self): +Step #1 - "Run integration tests": """Tests that a client using MCP_DRAFT can fallback to an older protocol against a server that doesn't support the draft version.""" +Step #1 - "Run integration tests": # The E2E server currently does not support DRAFT 2026, so this will trigger a fallback. +Step #1 - "Run integration tests": async with ToolboxClient( +Step #1 - "Run integration tests": "http://localhost:5000", protocol=Protocol.MCP_DRAFT +Step #1 - "Run integration tests": ) as client: +Step #1 - "Run integration tests": tool = await client.load_tool("get-n-rows") +Step #1 - "Run integration tests": response = await tool(num_rows="1") +Step #1 - "Run integration tests": assert "row1" in response +Step #1 - "Run integration tests": # Verify that fallback occurred by checking the transport's final protocol version +Step #1 - "Run integration tests": > assert ( +Step #1 - "Run integration tests": client._ToolboxClient__transport._protocol_version +Step #1 - "Run integration tests": != Protocol.MCP_DRAFT.value +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": E AssertionError: assert 'DRAFT-2026-v1' != 'DRAFT-2026-v1' +Step #1 - "Run integration tests": E + where 'DRAFT-2026-v1' = ._protocol_version +Step #1 - "Run integration tests": E + where = ._ToolboxClient__transport +Step #1 - "Run integration tests": E + and 'DRAFT-2026-v1' = .value +Step #1 - "Run integration tests": E + where = Protocol.MCP_DRAFT +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/test_e2e_mcp.py:113: AssertionError +Step #1 - "Run integration tests": ----------------------------- Captured stdout call ----------------------------- +Step #1 - "Run integration tests": 2026-06-30T16:37:37.047778208Z INFO "POST /mcp/ => HTTP 200 (444.092µs)" "http://localhost:5001/mcp/" "POST" "/mcp/" "127.0.0.1:47888" "localhost:5001" "http" "HTTP/1.1" 312 "Python/3.10 aiohttp/3.14.0" "" 200 "0.000444092s" 2942 +Step #1 - "Run integration tests": 2026-06-30T16:37:37.077414325Z INFO "POST /mcp/ => HTTP 200 (26.651716ms)" "http://localhost:5001/mcp/" "POST" "/mcp/" "127.0.0.1:47888" "localhost:5001" "http" "HTTP/1.1" 366 "Python/3.10 aiohttp/3.14.0" "" 200 "0.026651716s" 177 +Step #1 - "Run integration tests": =============================== warnings summary =============================== +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255 +Step #1 - "Run integration tests": /workspace/venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255: FutureWarning: You are using a Python version (3.10.20) which Google will stop supporting in new releases of google.api_core once it reaches its end of life (2026-10-04). Please upgrade to the latest Python version, or at least Python 3.11, to continue receiving updates for google.api_core past that date. +Step #1 - "Run integration tests": warnings.warn(message, FutureWarning) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255 +Step #1 - "Run integration tests": /workspace/venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255: FutureWarning: You are using a Python version (3.10.20) which Google will stop supporting in new releases of google.cloud.secretmanager_v1 once it reaches its end of life (2026-10-04). Please upgrade to the latest Python version, or at least Python 3.11, to continue receiving updates for google.cloud.secretmanager_v1 past that date. +Step #1 - "Run integration tests": warnings.warn(message, FutureWarning) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/test_tool.py:547 +Step #1 - "Run integration tests": /workspace/packages/toolbox-core/tests/test_tool.py:547: DeprecationWarning: invalid escape sequence '\(' +Step #1 - "Run integration tests": expected_error_message = "Authentication source\(s\) \`unused-auth-service\` unused by tool \`sample_tool\`." +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/test_client.py: 18 warnings +Step #1 - "Run integration tests": tests/test_e2e.py: 12 warnings +Step #1 - "Run integration tests": tests/test_e2e_mcp.py: 48 warnings +Step #1 - "Run integration tests": tests/test_sync_client.py: 8 warnings +Step #1 - "Run integration tests": tests/test_sync_e2e.py: 10 warnings +Step #1 - "Run integration tests": /workspace/packages/toolbox-core/src/toolbox_core/utils.py:56: UserWarning: This connection is using HTTP. To prevent credential exposure, please ensure all communication is sent over HTTPS. +Step #1 - "Run integration tests": warnings.warn( +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/test_sync_client.py::TestSyncClientLifecycle::test_load_tool_raises_if_loop_or_thread_none[http://localhost:5000] +Step #1 - "Run integration tests": tests/test_sync_client.py::TestSyncClientLifecycle::test_load_tool_raises_if_loop_or_thread_none[http://localhost:5001] +Step #1 - "Run integration tests": /workspace/packages/toolbox-core/tests/test_sync_client.py:342: RuntimeWarning: coroutine 'ToolboxClient.load_tool' was never awaited +Step #1 - "Run integration tests": with pytest.raises( +Step #1 - "Run integration tests": Enable tracemalloc to get traceback where the object was allocated. +Step #1 - "Run integration tests": See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/test_sync_client.py::TestSyncClientLifecycle::test_load_tool_raises_if_loop_or_thread_none[http://localhost:5000] +Step #1 - "Run integration tests": tests/test_sync_client.py::TestSyncClientLifecycle::test_load_tool_raises_if_loop_or_thread_none[http://localhost:5001] +Step #1 - "Run integration tests": /workspace/packages/toolbox-core/tests/test_sync_client.py:351: RuntimeWarning: coroutine 'ToolboxClient.load_toolset' was never awaited +Step #1 - "Run integration tests": with pytest.raises( +Step #1 - "Run integration tests": Enable tracemalloc to get traceback where the object was allocated. +Step #1 - "Run integration tests": See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html +Step #1 - "Run integration tests": ================================ tests coverage ================================ +Step #1 - "Run integration tests": _______________ coverage: platform linux, python 3.10.20-final-0 _______________ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": Name Stmts Miss Cover +Step #1 - "Run integration tests": ----------------------------------------------------------------------- +Step #1 - "Run integration tests": src/toolbox_core/__init__.py 4 0 100% +Step #1 - "Run integration tests": src/toolbox_core/auth_methods.py 59 2 97% +Step #1 - "Run integration tests": src/toolbox_core/client.py 123 2 98% +Step #1 - "Run integration tests": src/toolbox_core/exceptions.py 6 0 100% +Step #1 - "Run integration tests": src/toolbox_core/itransport.py 20 5 75% +Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/__init__.py 6 0 100% +Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/telemetry.py 153 14 91% +Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/transport_base.py 106 3 97% +Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20241105/mcp.py 132 15 89% +Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20241105/types.py 95 1 99% +Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20250326/mcp.py 145 19 87% +Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20250326/types.py 95 1 99% +Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20250618/mcp.py 135 12 91% +Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20250618/types.py 95 1 99% +Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20251125/mcp.py 135 15 89% +Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20251125/types.py 95 1 99% +Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20260618/mcp.py 128 23 82% +Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20260618/types.py 81 1 99% +Step #1 - "Run integration tests": src/toolbox_core/protocol.py 76 0 100% +Step #1 - "Run integration tests": src/toolbox_core/sync_client.py 45 0 100% +Step #1 - "Run integration tests": src/toolbox_core/sync_tool.py 67 0 100% +Step #1 - "Run integration tests": src/toolbox_core/tool.py 119 6 95% +Step #1 - "Run integration tests": src/toolbox_core/utils.py 61 0 100% +Step #1 - "Run integration tests": src/toolbox_core/version.py 1 0 100% +Step #1 - "Run integration tests": ----------------------------------------------------------------------- +Step #1 - "Run integration tests": TOTAL 1982 121 94% +Step #1 - "Run integration tests": Required test coverage of 90% reached. Total coverage: 93.90% +Step #1 - "Run integration tests": =========================== short test summary info ============================ +Step #1 - "Run integration tests": FAILED tests/test_e2e_mcp.py::TestBasicE2E::test_protocol_fallback_e2e[http://localhost:5001] +Step #1 - "Run integration tests": ================ 1 failed, 1141 passed, 103 warnings in 37.68s ================= +Finished Step #1 - "Run integration tests" +ERROR +ERROR: build step 1 "python:3.10" failed: step exited with non-zero status: 1 +-------------------------------------------------------------------------------- diff --git a/full_log.txt b/full_log.txt new file mode 100644 index 000000000..b11748914 --- /dev/null +++ b/full_log.txt @@ -0,0 +1,4520 @@ + +To live stream log output for this build, please ensure the grpc module is installed. Run: + pip install grpcio +and set: + export CLOUDSDK_PYTHON_SITEPACKAGES=1 + +----------------------------- REMOTE BUILD OUTPUT ------------------------------ +starting build "0b51f187-be73-4229-80a4-201376e3d2aa" +FETCHSOURCE +From https://github.com/googleapis/mcp-toolbox-sdk-python + * branch 28834dd4fa18f7f16826fe0eb812548ee6e0752c -> FETCH_HEAD +HEAD is now at 28834dd chore: fix integration tests url and lint errors +GitCommit: +28834dd4fa18f7f16826fe0eb812548ee6e0752c +BUILD +Starting Step #0 - "Install requirements" +Step #0 - "Install requirements": Pulling image: python:3.10 +Step #0 - "Install requirements": 3.10: Pulling from library/python +Step #0 - "Install requirements": aa3e9ef32f73: Pulling fs layer +Step #0 - "Install requirements": 3f59c84a7863: Pulling fs layer +Step #0 - "Install requirements": 30d0db852850: Pulling fs layer +Step #0 - "Install requirements": 0252e6abaf0f: Pulling fs layer +Step #0 - "Install requirements": ccf7e73781a2: Pulling fs layer +Step #0 - "Install requirements": de50cca5f6c1: Pulling fs layer +Step #0 - "Install requirements": e2fc6298fd6c: Pulling fs layer +Step #0 - "Install requirements": e2fc6298fd6c: Waiting +Step #0 - "Install requirements": ccf7e73781a2: Verifying Checksum +Step #0 - "Install requirements": ccf7e73781a2: Download complete +Step #0 - "Install requirements": e2fc6298fd6c: Verifying Checksum +Step #0 - "Install requirements": e2fc6298fd6c: Download complete +Step #0 - "Install requirements": de50cca5f6c1: Verifying Checksum +Step #0 - "Install requirements": de50cca5f6c1: Download complete +Step #0 - "Install requirements": 3f59c84a7863: Download complete +Step #0 - "Install requirements": aa3e9ef32f73: Download complete +Step #0 - "Install requirements": 30d0db852850: Verifying Checksum +Step #0 - "Install requirements": 30d0db852850: Download complete +Step #0 - "Install requirements": 0252e6abaf0f: Verifying Checksum +Step #0 - "Install requirements": 0252e6abaf0f: Download complete +Step #0 - "Install requirements": aa3e9ef32f73: Pull complete +Step #0 - "Install requirements": 3f59c84a7863: Pull complete +Step #0 - "Install requirements": 30d0db852850: Pull complete +Step #0 - "Install requirements": 0252e6abaf0f: Pull complete +Step #0 - "Install requirements": ccf7e73781a2: Pull complete +Step #0 - "Install requirements": de50cca5f6c1: Pull complete +Step #0 - "Install requirements": e2fc6298fd6c: Pull complete +Step #0 - "Install requirements": Digest: sha256:a359ba8614a261091f0b96f6d308f0acfe0af7b5007ed945a8d5c62ad7acb241 +Step #0 - "Install requirements": Status: Downloaded newer image for python:3.10 +Step #0 - "Install requirements": docker.io/library/python:3.10 +Step #0 - "Install requirements": Collecting uv +Step #0 - "Install requirements": Downloading uv-0.11.26-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.3 MB) +Step #0 - "Install requirements": ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 26.3/26.3 MB 60.6 MB/s eta 0:00:00 +Step #0 - "Install requirements": Installing collected packages: uv +Step #0 - "Install requirements": Successfully installed uv-0.11.26 +Step #0 - "Install requirements": WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv +Step #0 - "Install requirements": +Step #0 - "Install requirements": [notice] A new release of pip is available: 23.0.1 -> 26.1.2 +Step #0 - "Install requirements": [notice] To update, run: pip install --upgrade pip +Step #0 - "Install requirements": Using CPython 3.10.20 interpreter at: /usr/local/bin/python3 +Step #0 - "Install requirements": Creating virtual environment at: /workspace/venv +Step #0 - "Install requirements": Activate with: source /workspace/venv/bin/activate +Step #0 - "Install requirements": Using Python 3.10.20 environment at: /workspace/venv +Step #0 - "Install requirements": Resolved 1 package in 230ms +Step #0 - "Install requirements": Downloading uv (25.0MiB) +Step #0 - "Install requirements": Downloaded uv +Step #0 - "Install requirements": Prepared 1 package in 388ms +Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. +Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. +Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. +Step #0 - "Install requirements": Installed 1 package in 75ms +Step #0 - "Install requirements": + uv==0.11.26 +Step #0 - "Install requirements": Using Python 3.10.20 environment at: /workspace/venv +Step #0 - "Install requirements": Resolved 127 packages in 1.75s +Step #0 - "Install requirements": Building toolbox-core @ file:///workspace/packages/toolbox-core +Step #0 - "Install requirements": Downloading google-cloud-discoveryengine (3.2MiB) +Step #0 - "Install requirements": Downloading grpcio (6.5MiB) +Step #0 - "Install requirements": Downloading google-api-python-client (14.9MiB) +Step #0 - "Install requirements": Downloading pydantic-core (2.0MiB) +Step #0 - "Install requirements": Downloading pyarrow (46.6MiB) +Step #0 - "Install requirements": Downloading google-cloud-aiplatform (8.9MiB) +Step #0 - "Install requirements": Downloading aiohttp (1.6MiB) +Step #0 - "Install requirements": Downloading sqlalchemy (3.1MiB) +Step #0 - "Install requirements": Downloading google-adk (2.7MiB) +Step #0 - "Install requirements": Downloading cryptography (4.5MiB) +Step #0 - "Install requirements": Built toolbox-core @ file:///workspace/packages/toolbox-core +Step #0 - "Install requirements": Downloaded pydantic-core +Step #0 - "Install requirements": Downloaded aiohttp +Step #0 - "Install requirements": Downloaded sqlalchemy +Step #0 - "Install requirements": Downloaded grpcio +Step #0 - "Install requirements": Downloaded cryptography +Step #0 - "Install requirements": Downloaded google-adk +Step #0 - "Install requirements": Downloaded google-cloud-discoveryengine +Step #0 - "Install requirements": Downloaded google-api-python-client +Step #0 - "Install requirements": Downloaded pyarrow +Step #0 - "Install requirements": Downloaded google-cloud-aiplatform +Step #0 - "Install requirements": Prepared 127 packages in 2.44s +Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. +Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. +Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. +Step #0 - "Install requirements": Installed 127 packages in 2.07s +Step #0 - "Install requirements": + aiohappyeyeballs==2.6.2 +Step #0 - "Install requirements": + aiohttp==3.14.1 +Step #0 - "Install requirements": + aiosignal==1.4.0 +Step #0 - "Install requirements": + aiosqlite==0.22.1 +Step #0 - "Install requirements": + alembic==1.18.5 +Step #0 - "Install requirements": + annotated-doc==0.0.4 +Step #0 - "Install requirements": + annotated-types==0.7.0 +Step #0 - "Install requirements": + anyio==4.14.1 +Step #0 - "Install requirements": + async-timeout==5.0.1 +Step #0 - "Install requirements": + attrs==26.1.0 +Step #0 - "Install requirements": + authlib==1.7.2 +Step #0 - "Install requirements": + certifi==2026.6.17 +Step #0 - "Install requirements": + cffi==2.0.0 +Step #0 - "Install requirements": + charset-normalizer==3.4.7 +Step #0 - "Install requirements": + click==8.4.2 +Step #0 - "Install requirements": + cloudpickle==3.1.2 +Step #0 - "Install requirements": + cryptography==49.0.0 +Step #0 - "Install requirements": + deprecated==1.3.1 +Step #0 - "Install requirements": + distro==1.9.0 +Step #0 - "Install requirements": + docstring-parser==0.18.0 +Step #0 - "Install requirements": + exceptiongroup==1.3.1 +Step #0 - "Install requirements": + fastapi==0.138.2 +Step #0 - "Install requirements": + frozenlist==1.8.0 +Step #0 - "Install requirements": + google-adk==1.34.1 +Step #0 - "Install requirements": + google-api-core==2.31.0 +Step #0 - "Install requirements": + google-api-python-client==2.198.0 +Step #0 - "Install requirements": + google-auth==2.53.0 +Step #0 - "Install requirements": + google-auth-httplib2==0.4.0 +Step #0 - "Install requirements": + google-auth-oauthlib==1.4.0 +Step #0 - "Install requirements": + google-cloud-aiplatform==1.158.0 +Step #0 - "Install requirements": + google-cloud-appengine-logging==1.10.0 +Step #0 - "Install requirements": + google-cloud-audit-log==0.6.0 +Step #0 - "Install requirements": + google-cloud-bigquery==3.42.1 +Step #0 - "Install requirements": + google-cloud-bigquery-storage==2.39.0 +Step #0 - "Install requirements": + google-cloud-bigtable==2.40.0 +Step #0 - "Install requirements": + google-cloud-core==2.6.0 +Step #0 - "Install requirements": + google-cloud-dataplex==2.20.0 +Step #0 - "Install requirements": + google-cloud-discoveryengine==0.13.12 +Step #0 - "Install requirements": + google-cloud-iam==2.24.0 +Step #0 - "Install requirements": + google-cloud-logging==3.16.0 +Step #0 - "Install requirements": + google-cloud-monitoring==2.31.0 +Step #0 - "Install requirements": + google-cloud-pubsub==2.39.0 +Step #0 - "Install requirements": + google-cloud-resource-manager==1.18.0 +Step #0 - "Install requirements": + google-cloud-secret-manager==2.29.0 +Step #0 - "Install requirements": + google-cloud-spanner==3.69.0 +Step #0 - "Install requirements": + google-cloud-speech==2.40.0 +Step #0 - "Install requirements": + google-cloud-storage==3.12.0 +Step #0 - "Install requirements": + google-cloud-trace==1.20.0 +Step #0 - "Install requirements": + google-crc32c==1.8.0 +Step #0 - "Install requirements": + google-genai==1.75.0 +Step #0 - "Install requirements": + google-resumable-media==2.10.0 +Step #0 - "Install requirements": + googleapis-common-protos==1.75.0 +Step #0 - "Install requirements": + graphviz==0.21 +Step #0 - "Install requirements": + greenlet==3.5.3 +Step #0 - "Install requirements": + grpc-google-iam-v1==0.14.4 +Step #0 - "Install requirements": + grpc-interceptor==0.15.4 +Step #0 - "Install requirements": + grpcio==1.81.1 +Step #0 - "Install requirements": + grpcio-status==1.81.1 +Step #0 - "Install requirements": + h11==0.16.0 +Step #0 - "Install requirements": + httpcore==1.0.9 +Step #0 - "Install requirements": + httplib2==0.32.0 +Step #0 - "Install requirements": + httpx==0.28.1 +Step #0 - "Install requirements": + httpx-sse==0.4.3 +Step #0 - "Install requirements": + idna==3.18 +Step #0 - "Install requirements": + importlib-metadata==8.7.1 +Step #0 - "Install requirements": + joserfc==1.7.2 +Step #0 - "Install requirements": + jsonschema==4.26.0 +Step #0 - "Install requirements": + jsonschema-specifications==2025.9.1 +Step #0 - "Install requirements": + mako==1.3.12 +Step #0 - "Install requirements": + markupsafe==3.0.3 +Step #0 - "Install requirements": + mcp==1.28.1 +Step #0 - "Install requirements": + mmh3==5.2.1 +Step #0 - "Install requirements": + multidict==6.7.1 +Step #0 - "Install requirements": + oauthlib==3.3.1 +Step #0 - "Install requirements": + opentelemetry-api==1.41.1 +Step #0 - "Install requirements": + opentelemetry-exporter-gcp-logging==1.12.0a0 +Step #0 - "Install requirements": + opentelemetry-exporter-gcp-monitoring==1.9.0a0 +Step #0 - "Install requirements": + opentelemetry-exporter-gcp-trace==1.12.0 +Step #0 - "Install requirements": + opentelemetry-exporter-otlp-proto-common==1.41.1 +Step #0 - "Install requirements": + opentelemetry-exporter-otlp-proto-http==1.41.1 +Step #0 - "Install requirements": + opentelemetry-proto==1.41.1 +Step #0 - "Install requirements": + opentelemetry-resourcedetector-gcp==1.12.0a0 +Step #0 - "Install requirements": + opentelemetry-sdk==1.41.1 +Step #0 - "Install requirements": + opentelemetry-semantic-conventions==0.62b1 +Step #0 - "Install requirements": + packaging==26.2 +Step #0 - "Install requirements": + propcache==0.5.2 +Step #0 - "Install requirements": + proto-plus==1.28.0 +Step #0 - "Install requirements": + protobuf==6.33.6 +Step #0 - "Install requirements": + pyarrow==24.0.0 +Step #0 - "Install requirements": + pyasn1==0.6.3 +Step #0 - "Install requirements": + pyasn1-modules==0.4.2 +Step #0 - "Install requirements": + pycparser==3.0 +Step #0 - "Install requirements": + pydantic==2.13.4 +Step #0 - "Install requirements": + pydantic-core==2.46.4 +Step #0 - "Install requirements": + pydantic-settings==2.14.2 +Step #0 - "Install requirements": + pyjwt==2.13.0 +Step #0 - "Install requirements": + pyopenssl==26.3.0 +Step #0 - "Install requirements": + pyparsing==3.3.2 +Step #0 - "Install requirements": + python-dateutil==2.9.0.post0 +Step #0 - "Install requirements": + python-dotenv==1.2.2 +Step #0 - "Install requirements": + python-multipart==0.0.32 +Step #0 - "Install requirements": + pyyaml==6.0.3 +Step #0 - "Install requirements": + referencing==0.37.0 +Step #0 - "Install requirements": + requests==2.34.2 +Step #0 - "Install requirements": + requests-oauthlib==2.0.0 +Step #0 - "Install requirements": + rpds-py==0.30.0 +Step #0 - "Install requirements": + six==1.17.0 +Step #0 - "Install requirements": + sniffio==1.3.1 +Step #0 - "Install requirements": + sqlalchemy==2.0.51 +Step #0 - "Install requirements": + sqlalchemy-spanner==1.19.0 +Step #0 - "Install requirements": + sqlparse==0.5.5 +Step #0 - "Install requirements": + sse-starlette==3.4.5 +Step #0 - "Install requirements": + starlette==0.52.1 +Step #0 - "Install requirements": + tenacity==9.1.4 +Step #0 - "Install requirements": + tomli==2.4.1 +Step #0 - "Install requirements": + toolbox-core==1.1.0 (from file:///workspace/packages/toolbox-core) +Step #0 - "Install requirements": + typing-extensions==4.15.0 +Step #0 - "Install requirements": + typing-inspection==0.4.2 +Step #0 - "Install requirements": + tzlocal==5.4.4 +Step #0 - "Install requirements": + uritemplate==4.2.0 +Step #0 - "Install requirements": + urllib3==2.7.0 +Step #0 - "Install requirements": + uvicorn==0.49.0 +Step #0 - "Install requirements": + watchdog==6.0.0 +Step #0 - "Install requirements": + websockets==15.0.1 +Step #0 - "Install requirements": + wrapt==2.2.2 +Step #0 - "Install requirements": + yarl==1.24.2 +Step #0 - "Install requirements": + zipp==4.1.0 +Step #0 - "Install requirements": Using Python 3.10.20 environment at: /workspace/venv +Step #0 - "Install requirements": Resolved 162 packages in 1.19s +Step #0 - "Install requirements": Building toolbox-adk @ file:///workspace/packages/toolbox-adk +Step #0 - "Install requirements": Downloading jedi (4.7MiB) +Step #0 - "Install requirements": Downloading black (1.8MiB) +Step #0 - "Install requirements": Downloading pygments (1.2MiB) +Step #0 - "Install requirements": Downloading ast-serialize (1.2MiB) +Step #0 - "Install requirements": Downloading numpy (15.6MiB) +Step #0 - "Install requirements": Downloading mypy (14.3MiB) +Step #0 - "Install requirements": Downloaded ast-serialize +Step #0 - "Install requirements": Built toolbox-adk @ file:///workspace/packages/toolbox-adk +Step #0 - "Install requirements": Downloaded black +Step #0 - "Install requirements": Downloaded pygments +Step #0 - "Install requirements": Downloaded numpy +Step #0 - "Install requirements": Downloaded mypy +Step #0 - "Install requirements": Downloaded jedi +Step #0 - "Install requirements": Prepared 35 packages in 1.60s +Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. +Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. +Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. +Step #0 - "Install requirements": Installed 35 packages in 1.29s +Step #0 - "Install requirements": + ast-serialize==0.5.0 +Step #0 - "Install requirements": + asttokens==3.0.1 +Step #0 - "Install requirements": + backports-asyncio-runner==1.2.0 +Step #0 - "Install requirements": + black==26.5.1 +Step #0 - "Install requirements": + coverage==7.14.3 +Step #0 - "Install requirements": + decorator==5.3.1 +Step #0 - "Install requirements": + executing==2.2.1 +Step #0 - "Install requirements": + iniconfig==2.3.0 +Step #0 - "Install requirements": + ipython==8.39.0 +Step #0 - "Install requirements": + isort==8.0.1 +Step #0 - "Install requirements": + jedi==0.20.0 +Step #0 - "Install requirements": + librt==0.12.0 +Step #0 - "Install requirements": + matplotlib-inline==0.2.2 +Step #0 - "Install requirements": + mypy==2.1.0 +Step #0 - "Install requirements": + mypy-extensions==1.1.0 +Step #0 - "Install requirements": + numpy==2.1.3 +Step #0 - "Install requirements": + parso==0.8.7 +Step #0 - "Install requirements": + pathspec==1.1.1 +Step #0 - "Install requirements": + pexpect==4.9.0 +Step #0 - "Install requirements": + platformdirs==4.10.0 +Step #0 - "Install requirements": + pluggy==1.6.0 +Step #0 - "Install requirements": + prompt-toolkit==3.0.52 +Step #0 - "Install requirements": + ptyprocess==0.7.0 +Step #0 - "Install requirements": + pure-eval==0.2.3 +Step #0 - "Install requirements": + pygments==2.20.0 +Step #0 - "Install requirements": + pytest==9.0.3 +Step #0 - "Install requirements": + pytest-asyncio==1.4.0 +Step #0 - "Install requirements": + pytest-cov==7.1.0 +Step #0 - "Install requirements": + pytest-mock==3.15.1 +Step #0 - "Install requirements": + pytokens==0.4.1 +Step #0 - "Install requirements": + stack-data==0.6.3 +Step #0 - "Install requirements": + tokenize-rt==6.2.0 +Step #0 - "Install requirements": + toolbox-adk==1.0.1 (from file:///workspace/packages/toolbox-adk) +Step #0 - "Install requirements": + traitlets==5.15.1 +Step #0 - "Install requirements": + wcwidth==0.8.2 +Finished Step #0 - "Install requirements" +Starting Step #1 - "Run integration tests" +Step #1 - "Run integration tests": Already have image (with digest): python:3.10 +Step #1 - "Run integration tests": ============================= test session starts ============================== +Step #1 - "Run integration tests": platform linux -- Python 3.10.20, pytest-9.0.3, pluggy-1.6.0 +Step #1 - "Run integration tests": rootdir: /workspace/packages/toolbox-adk +Step #1 - "Run integration tests": configfile: pyproject.toml +Step #1 - "Run integration tests": plugins: cov-7.1.0, mock-3.15.1, asyncio-1.4.0, anyio-4.14.1 +Step #1 - "Run integration tests": asyncio: mode=strict, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function +Step #1 - "Run integration tests": collected 118 items +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/test_integration.py EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEsEE [ 28%] +Step #1 - "Run integration tests": EEEEEEEEEEEEEEEEEEEEEEEEEEEEEs [ 54%] +Step #1 - "Run integration tests": tests/unit/test_client.py .............. [ 66%] +Step #1 - "Run integration tests": tests/unit/test_credentials.py ................ [ 79%] +Step #1 - "Run integration tests": tests/unit/test_tool.py .............. [ 91%] +Step #1 - "Run integration tests": tests/unit/test_toolset.py .......... [100%] +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ==================================== ERRORS ==================================== +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_and_run[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": ---------------------------- Captured stdout setup ----------------------------- +Step #1 - "Run integration tests": Downloading toolbox binary from gcs bucket... +Step #1 - "Run integration tests": Blob main/linux/amd64/toolbox downloaded to toolbox. +Step #1 - "Run integration tests": Toolbox binary downloaded successfully. +Step #1 - "Run integration tests": Opening toolbox server process... +Step #1 - "Run integration tests": Flag --tools-file has been deprecated, please use --config instead +Step #1 - "Run integration tests": 2026-06-30T16:18:24.996347599Z INFO "Starting MCP Toolbox for Databases version 1.5.0+dev.linux.amd64.d6dc5fe" +Step #1 - "Run integration tests": 2026-06-30T16:18:25.184622215Z INFO "Initialized 1 sources: my-cloud-sql-pg-source" +Step #1 - "Run integration tests": 2026-06-30T16:18:25.184733748Z INFO "Initialized 2 authServices: my-test-auth2, my-test-auth" +Step #1 - "Run integration tests": 2026-06-30T16:18:25.184757239Z INFO "Initialized 0 embeddingModels: " +Step #1 - "Run integration tests": 2026-06-30T16:18:25.184815784Z INFO "Initialized 7 tools: get-n-rows, get-row-by-id, get-row-by-id-auth, get-row-by-email-auth, get-row-by-content-auth, search-rows, process-data" +Step #1 - "Run integration tests": 2026-06-30T16:18:25.184861911Z INFO "Initialized 4 toolsets: my-toolset-3, my-toolset, my-toolset-2, default" +Step #1 - "Run integration tests": 2026-06-30T16:18:25.184875547Z INFO "Initialized 0 prompts: " +Step #1 - "Run integration tests": 2026-06-30T16:18:25.184891891Z INFO "Initialized 1 promptsets: default" +Step #1 - "Run integration tests": 2026-06-30T16:18:25.191184382Z INFO "Server ready to serve!" +Step #1 - "Run integration tests": Checking if both toolbox servers are successfully started... +Step #1 - "Run integration tests": Checking if both toolbox servers are successfully started... +Step #1 - "Run integration tests": Checking if both toolbox servers are successfully started... +Step #1 - "Run integration tests": Checking if both toolbox servers are successfully started... +Step #1 - "Run integration tests": Checking if both toolbox servers are successfully started... +Step #1 - "Run integration tests": ---------------------------- Captured stderr setup ----------------------------- +Step #1 - "Run integration tests": Error: unknown flag: --enable-draft-specs +Step #1 - "Run integration tests": 2026-06-30T16:18:25.184979895Z WARN "wildcard (*) allows any website to access the resources. This creates a security risk regardless of whether you are in a production or local development environment. Recommended to use --allowed-origins with specific local addresses." +Step #1 - "Run integration tests": 2026-06-30T16:18:25.185019702Z WARN "wildcard (*) hosts allow any domain to access this resource, making it vulnerable to DNS rebinding attacks regardless of whether you are in a production or local development environment. For improved security, use the --allowed-hosts flag to specify trusted domains." +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_with_default_protocol[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_with_explicit_protocol[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_partial_loading_by_names[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_bound_params_e2e[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_3lo_flow_simulation[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_manual_token_integration[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_manual_credentials_integration[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_api_key_integration[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_adk_integration_optional_params[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_header_collision[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_specific[http://localhost:5000-my-toolset-1-expected_tools0] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_specific[http://localhost:5000-my-toolset-2-2-expected_tools1] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_default[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _____ ERROR at setup of TestBasicE2E.test_run_tool[http://localhost:5000] ______ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_run_tool_missing_params[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_run_tool_wrong_param_type[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": ___ ERROR at setup of TestBindParams.test_bind_params[http://localhost:5000] ___ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestBindParams.test_bind_params_callable[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_tool_unauth_with_auth[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_multiple_tools_unauth_with_auth[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_multiple_tools_partial_auth_usage[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": ___ ERROR at setup of TestAuth.test_run_tool_no_auth[http://localhost:5000] ____ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": __ ERROR at setup of TestAuth.test_run_tool_wrong_auth[http://localhost:5000] __ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _____ ERROR at setup of TestAuth.test_run_tool_auth[http://localhost:5000] _____ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": __ ERROR at setup of TestAuth.test_run_tool_async_auth[http://localhost:5000] __ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_optional_params_omitted[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_all_valid_params[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_missing_required_param[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestMapParams.test_run_tool_with_map_params[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestMapParams.test_run_tool_with_wrong_map_value_type[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_and_run[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_with_default_protocol[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_with_explicit_protocol[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_partial_loading_by_names[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_bound_params_e2e[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_3lo_flow_simulation[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_manual_token_integration[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_manual_credentials_integration[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_api_key_integration[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_adk_integration_optional_params[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_header_collision[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_specific[http://localhost:5001-my-toolset-1-expected_tools0] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_specific[http://localhost:5001-my-toolset-2-2-expected_tools1] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_default[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _____ ERROR at setup of TestBasicE2E.test_run_tool[http://localhost:5001] ______ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_run_tool_missing_params[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_run_tool_wrong_param_type[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": ___ ERROR at setup of TestBindParams.test_bind_params[http://localhost:5001] ___ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestBindParams.test_bind_params_callable[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_tool_unauth_with_auth[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_multiple_tools_unauth_with_auth[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_multiple_tools_partial_auth_usage[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": ___ ERROR at setup of TestAuth.test_run_tool_no_auth[http://localhost:5001] ____ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": __ ERROR at setup of TestAuth.test_run_tool_wrong_auth[http://localhost:5001] __ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _____ ERROR at setup of TestAuth.test_run_tool_auth[http://localhost:5001] _____ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": __ ERROR at setup of TestAuth.test_run_tool_async_auth[http://localhost:5001] __ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_optional_params_omitted[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_all_valid_params[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_missing_required_param[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestMapParams.test_run_tool_with_map_params[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestMapParams.test_run_tool_with_wrong_map_value_type[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): +Step #1 - "Run integration tests": yield +Step #1 - "Run integration tests": return +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(2) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError +Step #1 - "Run integration tests": =============================== warnings summary =============================== +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255 +Step #1 - "Run integration tests": /workspace/venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255: FutureWarning: You are using a Python version (3.10.20) which Google will stop supporting in new releases of google.api_core once it reaches its end of life (2026-10-04). Please upgrade to the latest Python version, or at least Python 3.11, to continue receiving updates for google.api_core past that date. +Step #1 - "Run integration tests": warnings.warn(message, FutureWarning) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255 +Step #1 - "Run integration tests": /workspace/venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255: FutureWarning: You are using a Python version (3.10.20) which Google will stop supporting in new releases of google.cloud.secretmanager_v1 once it reaches its end of life (2026-10-04). Please upgrade to the latest Python version, or at least Python 3.11, to continue receiving updates for google.cloud.secretmanager_v1 past that date. +Step #1 - "Run integration tests": warnings.warn(message, FutureWarning) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/unit/test_credentials.py::TestCredentialStrategy::test_from_adk_auth_config +Step #1 - "Run integration tests": tests/unit/test_tool.py::TestToolboxTool::test_3lo_request_credential_when_missing +Step #1 - "Run integration tests": tests/unit/test_tool.py::TestToolboxTool::test_3lo_uses_existing_credential +Step #1 - "Run integration tests": tests/unit/test_tool.py::TestToolboxTool::test_3lo_exception_reraise +Step #1 - "Run integration tests": tests/unit/test_tool.py::TestToolboxTool::test_3lo_exception_fallback +Step #1 - "Run integration tests": /workspace/venv/lib/python3.10/site-packages/google/adk/auth/auth_tool.py:94: DeprecationWarning: This method is deprecated. Use credential_key instead. +Step #1 - "Run integration tests": self.credential_key = self.get_credential_key() +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html +Step #1 - "Run integration tests": ================================ tests coverage ================================ +Step #1 - "Run integration tests": _______________ coverage: platform linux, python 3.10.20-final-0 _______________ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": Name Stmts Miss Cover +Step #1 - "Run integration tests": ---------------------------------------------------- +Step #1 - "Run integration tests": src/toolbox_adk/__init__.py 6 0 100% +Step #1 - "Run integration tests": src/toolbox_adk/client.py 79 2 97% +Step #1 - "Run integration tests": src/toolbox_adk/credentials.py 75 3 96% +Step #1 - "Run integration tests": src/toolbox_adk/tool.py 128 9 93% +Step #1 - "Run integration tests": src/toolbox_adk/toolset.py 55 2 96% +Step #1 - "Run integration tests": src/toolbox_adk/version.py 1 0 100% +Step #1 - "Run integration tests": ---------------------------------------------------- +Step #1 - "Run integration tests": TOTAL 344 16 95% +Step #1 - "Run integration tests": Required test coverage of 90% reached. Total coverage: 95.35% +Step #1 - "Run integration tests": =========================== short test summary info ============================ +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_and_run[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_with_default_protocol[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_with_explicit_protocol[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_partial_loading_by_names[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_bound_params_e2e[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_3lo_flow_simulation[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_manual_token_integration[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_manual_credentials_integration[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_api_key_integration[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_adk_integration_optional_params[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_header_collision[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_specific[http://localhost:5000-my-toolset-1-expected_tools0] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_specific[http://localhost:5000-my-toolset-2-2-expected_tools1] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_default[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool_missing_params[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool_wrong_param_type[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBindParams::test_bind_params[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBindParams::test_bind_params_callable[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_unauth_with_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_multiple_tools_unauth_with_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_multiple_tools_partial_auth_usage[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_no_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_wrong_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_async_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_optional_params_omitted[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_all_valid_params[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_missing_required_param[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestMapParams::test_run_tool_with_map_params[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestMapParams::test_run_tool_with_wrong_map_value_type[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_and_run[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_with_default_protocol[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_with_explicit_protocol[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_partial_loading_by_names[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_bound_params_e2e[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_3lo_flow_simulation[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_manual_token_integration[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_manual_credentials_integration[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_api_key_integration[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_adk_integration_optional_params[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_header_collision[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_specific[http://localhost:5001-my-toolset-1-expected_tools0] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_specific[http://localhost:5001-my-toolset-2-2-expected_tools1] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_default[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool_missing_params[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool_wrong_param_type[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBindParams::test_bind_params[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBindParams::test_bind_params_callable[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_unauth_with_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_multiple_tools_unauth_with_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_multiple_tools_partial_auth_usage[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_no_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_wrong_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_async_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_optional_params_omitted[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_all_valid_params[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_missing_required_param[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestMapParams::test_run_tool_with_map_params[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestMapParams::test_run_tool_with_wrong_map_value_type[http://localhost:5001] +Step #1 - "Run integration tests": ============ 54 passed, 2 skipped, 7 warnings, 62 errors in 23.28s ============= +Finished Step #1 - "Run integration tests" +ERROR +ERROR: build step 1 "python:3.10" failed: step exited with non-zero status: 1 +-------------------------------------------------------------------------------- diff --git a/log.txt b/log.txt new file mode 100644 index 000000000..6a2600237 --- /dev/null +++ b/log.txt @@ -0,0 +1,3367 @@ + +To live stream log output for this build, please ensure the grpc module is installed. Run: + pip install grpcio +and set: + export CLOUDSDK_PYTHON_SITEPACKAGES=1 + +----------------------------- REMOTE BUILD OUTPUT ------------------------------ +starting build "182725fb-f369-4de8-9e28-330f80b853df" +FETCHSOURCE +From https://github.com/googleapis/mcp-toolbox-sdk-python + * branch 28834dd4fa18f7f16826fe0eb812548ee6e0752c -> FETCH_HEAD +HEAD is now at 28834dd chore: fix integration tests url and lint errors +GitCommit: +28834dd4fa18f7f16826fe0eb812548ee6e0752c +BUILD +Starting Step #0 - "Install requirements" +Step #0 - "Install requirements": Pulling image: python:3.13 +Step #0 - "Install requirements": 3.13: Pulling from library/python +Step #0 - "Install requirements": aa3e9ef32f73: Pulling fs layer +Step #0 - "Install requirements": 3f59c84a7863: Pulling fs layer +Step #0 - "Install requirements": 30d0db852850: Pulling fs layer +Step #0 - "Install requirements": 0252e6abaf0f: Pulling fs layer +Step #0 - "Install requirements": c92b9edd050e: Pulling fs layer +Step #0 - "Install requirements": 129ee7ddf18e: Pulling fs layer +Step #0 - "Install requirements": dc020b606b19: Pulling fs layer +Step #0 - "Install requirements": dc020b606b19: Waiting +Step #0 - "Install requirements": c92b9edd050e: Verifying Checksum +Step #0 - "Install requirements": c92b9edd050e: Download complete +Step #0 - "Install requirements": dc020b606b19: Verifying Checksum +Step #0 - "Install requirements": dc020b606b19: Download complete +Step #0 - "Install requirements": 3f59c84a7863: Verifying Checksum +Step #0 - "Install requirements": 3f59c84a7863: Download complete +Step #0 - "Install requirements": 129ee7ddf18e: Verifying Checksum +Step #0 - "Install requirements": 129ee7ddf18e: Download complete +Step #0 - "Install requirements": aa3e9ef32f73: Verifying Checksum +Step #0 - "Install requirements": aa3e9ef32f73: Download complete +Step #0 - "Install requirements": 30d0db852850: Verifying Checksum +Step #0 - "Install requirements": 30d0db852850: Download complete +Step #0 - "Install requirements": 0252e6abaf0f: Verifying Checksum +Step #0 - "Install requirements": 0252e6abaf0f: Download complete +Step #0 - "Install requirements": aa3e9ef32f73: Pull complete +Step #0 - "Install requirements": 3f59c84a7863: Pull complete +Step #0 - "Install requirements": 30d0db852850: Pull complete +Step #0 - "Install requirements": 0252e6abaf0f: Pull complete +Step #0 - "Install requirements": c92b9edd050e: Pull complete +Step #0 - "Install requirements": 129ee7ddf18e: Pull complete +Step #0 - "Install requirements": dc020b606b19: Pull complete +Step #0 - "Install requirements": Digest: sha256:4c822f0fadfeba9ea973d81fb5bbd5c2106f12ae02d0a5cdd48907909395310b +Step #0 - "Install requirements": Status: Downloaded newer image for python:3.13 +Step #0 - "Install requirements": docker.io/library/python:3.13 +Step #0 - "Install requirements": Collecting uv +Step #0 - "Install requirements": Downloading uv-0.11.26-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB) +Step #0 - "Install requirements": Downloading uv-0.11.26-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.3 MB) +Step #0 - "Install requirements": ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 26.3/26.3 MB 119.9 MB/s 0:00:00 +Step #0 - "Install requirements": Installing collected packages: uv +Step #0 - "Install requirements": Successfully installed uv-0.11.26 +Step #0 - "Install requirements": WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning. +Step #0 - "Install requirements": Using CPython 3.13.14 interpreter at: /usr/local/bin/python3 +Step #0 - "Install requirements": Creating virtual environment at: /workspace/venv +Step #0 - "Install requirements": Activate with: source /workspace/venv/bin/activate +Step #0 - "Install requirements": Using Python 3.13.14 environment at: /workspace/venv +Step #0 - "Install requirements": Resolved 1 package in 258ms +Step #0 - "Install requirements": Downloading uv (25.0MiB) +Step #0 - "Install requirements": Downloaded uv +Step #0 - "Install requirements": Prepared 1 package in 353ms +Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. +Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. +Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. +Step #0 - "Install requirements": Installed 1 package in 73ms +Step #0 - "Install requirements": + uv==0.11.26 +Step #0 - "Install requirements": Using Python 3.13.14 environment at: /workspace/venv +Step #0 - "Install requirements": Resolved 67 packages in 1.78s +Step #0 - "Install requirements": Building toolbox-core @ file:///workspace/packages/toolbox-core +Step #0 - "Install requirements": Downloading pydantic-core (2.0MiB) +Step #0 - "Install requirements": Downloading sqlalchemy (3.1MiB) +Step #0 - "Install requirements": Downloading cryptography (4.5MiB) +Step #0 - "Install requirements": Downloading tiktoken (1.1MiB) +Step #0 - "Install requirements": Downloading pillow (6.8MiB) +Step #0 - "Install requirements": Downloading numpy (15.9MiB) +Step #0 - "Install requirements": Downloading networkx (2.0MiB) +Step #0 - "Install requirements": Downloading nltk (1.5MiB) +Step #0 - "Install requirements": Downloading llama-index-core (11.4MiB) +Step #0 - "Install requirements": Downloading aiohttp (1.7MiB) +Step #0 - "Install requirements": Built toolbox-core @ file:///workspace/packages/toolbox-core +Step #0 - "Install requirements": Downloaded tiktoken +Step #0 - "Install requirements": Downloaded aiohttp +Step #0 - "Install requirements": Downloaded pydantic-core +Step #0 - "Install requirements": Downloaded sqlalchemy +Step #0 - "Install requirements": Downloaded nltk +Step #0 - "Install requirements": Downloaded cryptography +Step #0 - "Install requirements": Downloaded pillow +Step #0 - "Install requirements": Downloaded networkx +Step #0 - "Install requirements": Downloaded llama-index-core +Step #0 - "Install requirements": Downloaded numpy +Step #0 - "Install requirements": Prepared 66 packages in 1.18s +Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. +Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. +Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. +Step #0 - "Install requirements": Installed 67 packages in 562ms +Step #0 - "Install requirements": + aiohappyeyeballs==2.6.2 +Step #0 - "Install requirements": + aiohttp==3.14.0 +Step #0 - "Install requirements": + aiosignal==1.4.0 +Step #0 - "Install requirements": + aiosqlite==0.22.1 +Step #0 - "Install requirements": + annotated-types==0.7.0 +Step #0 - "Install requirements": + anyio==4.14.1 +Step #0 - "Install requirements": + attrs==26.1.0 +Step #0 - "Install requirements": + banks==2.4.4 +Step #0 - "Install requirements": + certifi==2026.6.17 +Step #0 - "Install requirements": + cffi==2.0.0 +Step #0 - "Install requirements": + charset-normalizer==3.4.7 +Step #0 - "Install requirements": + click==8.4.2 +Step #0 - "Install requirements": + colorama==0.4.6 +Step #0 - "Install requirements": + cryptography==49.0.0 +Step #0 - "Install requirements": + dataclasses-json==0.6.7 +Step #0 - "Install requirements": + deprecated==1.3.1 +Step #0 - "Install requirements": + dirtyjson==1.0.8 +Step #0 - "Install requirements": + filetype==1.2.0 +Step #0 - "Install requirements": + frozenlist==1.8.0 +Step #0 - "Install requirements": + fsspec==2026.6.0 +Step #0 - "Install requirements": + google-auth==2.55.1 +Step #0 - "Install requirements": + greenlet==3.5.3 +Step #0 - "Install requirements": + griffe==2.1.0 +Step #0 - "Install requirements": + griffecli==2.1.0 +Step #0 - "Install requirements": + griffelib==2.1.0 +Step #0 - "Install requirements": + h11==0.16.0 +Step #0 - "Install requirements": + httpcore==1.0.9 +Step #0 - "Install requirements": + httpx==0.28.1 +Step #0 - "Install requirements": + idna==3.18 +Step #0 - "Install requirements": + jinja2==3.1.6 +Step #0 - "Install requirements": + joblib==1.5.3 +Step #0 - "Install requirements": + llama-index-core==0.14.22 +Step #0 - "Install requirements": + llama-index-instrumentation==0.5.0 +Step #0 - "Install requirements": + llama-index-workflows==2.22.1 +Step #0 - "Install requirements": + markupsafe==3.0.3 +Step #0 - "Install requirements": + marshmallow==3.26.2 +Step #0 - "Install requirements": + multidict==6.7.1 +Step #0 - "Install requirements": + mypy-extensions==1.1.0 +Step #0 - "Install requirements": + nest-asyncio==1.6.0 +Step #0 - "Install requirements": + networkx==3.6.1 +Step #0 - "Install requirements": + nltk==3.9.4 +Step #0 - "Install requirements": + numpy==2.5.0 +Step #0 - "Install requirements": + packaging==26.2 +Step #0 - "Install requirements": + pillow==12.2.0 +Step #0 - "Install requirements": + platformdirs==4.10.0 +Step #0 - "Install requirements": + propcache==0.5.2 +Step #0 - "Install requirements": + pyasn1==0.6.3 +Step #0 - "Install requirements": + pyasn1-modules==0.4.2 +Step #0 - "Install requirements": + pycparser==3.0 +Step #0 - "Install requirements": + pydantic==2.13.4 +Step #0 - "Install requirements": + pydantic-core==2.46.4 +Step #0 - "Install requirements": + pyyaml==6.0.3 +Step #0 - "Install requirements": + regex==2026.6.28 +Step #0 - "Install requirements": + requests==2.34.2 +Step #0 - "Install requirements": + setuptools==82.0.1 +Step #0 - "Install requirements": + sqlalchemy==2.0.51 +Step #0 - "Install requirements": + tenacity==9.1.4 +Step #0 - "Install requirements": + tiktoken==0.13.0 +Step #0 - "Install requirements": + tinytag==2.2.1 +Step #0 - "Install requirements": + toolbox-core==1.1.0 (from file:///workspace/packages/toolbox-core) +Step #0 - "Install requirements": + tqdm==4.68.3 +Step #0 - "Install requirements": + typing-extensions==4.15.0 +Step #0 - "Install requirements": + typing-inspect==0.9.0 +Step #0 - "Install requirements": + typing-inspection==0.4.2 +Step #0 - "Install requirements": + urllib3==2.7.0 +Step #0 - "Install requirements": + wrapt==2.2.2 +Step #0 - "Install requirements": + yarl==1.24.2 +Step #0 - "Install requirements": Using Python 3.13.14 environment at: /workspace/venv +Step #0 - "Install requirements": Resolved 111 packages in 1.22s +Step #0 - "Install requirements": Building toolbox-llamaindex @ file:///workspace/packages/toolbox-llamaindex +Step #0 - "Install requirements": Downloading mypy (14.3MiB) +Step #0 - "Install requirements": Downloading black (1.8MiB) +Step #0 - "Install requirements": Downloading numpy (15.3MiB) +Step #0 - "Install requirements": Downloading grpcio (6.5MiB) +Step #0 - "Install requirements": Downloading ast-serialize (1.2MiB) +Step #0 - "Install requirements": Downloading jedi (4.7MiB) +Step #0 - "Install requirements": Downloading pygments (1.2MiB) +Step #0 - "Install requirements": Downloaded ast-serialize +Step #0 - "Install requirements": Built toolbox-llamaindex @ file:///workspace/packages/toolbox-llamaindex +Step #0 - "Install requirements": Downloaded black +Step #0 - "Install requirements": Downloaded pygments +Step #0 - "Install requirements": Downloaded grpcio +Step #0 - "Install requirements": Downloaded numpy +Step #0 - "Install requirements": Downloaded mypy +Step #0 - "Install requirements": Downloaded jedi +Step #0 - "Install requirements": Prepared 45 packages in 1.76s +Step #0 - "Install requirements": Uninstalled 1 package in 33ms +Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. +Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. +Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. +Step #0 - "Install requirements": Installed 45 packages in 1.29s +Step #0 - "Install requirements": + ast-serialize==0.5.0 +Step #0 - "Install requirements": + asttokens==3.0.1 +Step #0 - "Install requirements": + black==26.5.1 +Step #0 - "Install requirements": + coverage==7.14.3 +Step #0 - "Install requirements": + decorator==5.3.1 +Step #0 - "Install requirements": + executing==2.2.1 +Step #0 - "Install requirements": + google-api-core==2.31.0 +Step #0 - "Install requirements": + google-cloud-core==2.6.0 +Step #0 - "Install requirements": + google-cloud-secret-manager==2.28.0 +Step #0 - "Install requirements": + google-cloud-storage==3.10.1 +Step #0 - "Install requirements": + google-crc32c==1.8.0 +Step #0 - "Install requirements": + google-resumable-media==2.10.0 +Step #0 - "Install requirements": + googleapis-common-protos==1.75.0 +Step #0 - "Install requirements": + grpc-google-iam-v1==0.14.4 +Step #0 - "Install requirements": + grpcio==1.81.1 +Step #0 - "Install requirements": + grpcio-status==1.81.1 +Step #0 - "Install requirements": + iniconfig==2.3.0 +Step #0 - "Install requirements": + ipython==9.15.0 +Step #0 - "Install requirements": + ipython-pygments-lexers==1.1.1 +Step #0 - "Install requirements": + isort==8.0.1 +Step #0 - "Install requirements": + jedi==0.20.0 +Step #0 - "Install requirements": + librt==0.12.0 +Step #0 - "Install requirements": + matplotlib-inline==0.2.2 +Step #0 - "Install requirements": + mypy==2.1.0 +Step #0 - "Install requirements": - numpy==2.5.0 +Step #0 - "Install requirements": + numpy==2.1.3 +Step #0 - "Install requirements": + parso==0.8.7 +Step #0 - "Install requirements": + pathspec==1.1.1 +Step #0 - "Install requirements": + pexpect==4.9.0 +Step #0 - "Install requirements": + pluggy==1.6.0 +Step #0 - "Install requirements": + prompt-toolkit==3.0.52 +Step #0 - "Install requirements": + proto-plus==1.28.0 +Step #0 - "Install requirements": + protobuf==7.35.1 +Step #0 - "Install requirements": + psutil==7.2.2 +Step #0 - "Install requirements": + ptyprocess==0.7.0 +Step #0 - "Install requirements": + pure-eval==0.2.3 +Step #0 - "Install requirements": + pygments==2.20.0 +Step #0 - "Install requirements": + pytest==9.0.3 +Step #0 - "Install requirements": + pytest-asyncio==1.4.0 +Step #0 - "Install requirements": + pytest-cov==7.1.0 +Step #0 - "Install requirements": + pytokens==0.4.1 +Step #0 - "Install requirements": + stack-data==0.6.3 +Step #0 - "Install requirements": + tokenize-rt==6.2.0 +Step #0 - "Install requirements": + toolbox-llamaindex==0.7.0 (from file:///workspace/packages/toolbox-llamaindex) +Step #0 - "Install requirements": + traitlets==5.15.1 +Step #0 - "Install requirements": + wcwidth==0.8.2 +Finished Step #0 - "Install requirements" +Starting Step #1 - "Run integration tests" +Step #1 - "Run integration tests": Already have image (with digest): python:3.13 +Step #1 - "Run integration tests": ============================= test session starts ============================== +Step #1 - "Run integration tests": platform linux -- Python 3.13.14, pytest-9.0.3, pluggy-1.6.0 +Step #1 - "Run integration tests": rootdir: /workspace/packages/toolbox-llamaindex +Step #1 - "Run integration tests": configfile: pyproject.toml +Step #1 - "Run integration tests": plugins: cov-7.1.0, asyncio-1.4.0, anyio-4.14.1 +Step #1 - "Run integration tests": asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function +Step #1 - "Run integration tests": collected 178 items +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/test_async_client.py ................. [ 9%] +Step #1 - "Run integration tests": tests/test_async_tools.py .................. [ 19%] +Step #1 - "Run integration tests": tests/test_client.py ................ [ 28%] +Step #1 - "Run integration tests": tests/test_e2e.py EEEEEEEEEEEEEEEEEEEEEEEEEEEE [ 44%] +Step #1 - "Run integration tests": tests/test_tools.py .......... [ 50%] +Step #1 - "Run integration tests": tests/test_async_client.py ................. [ 59%] +Step #1 - "Run integration tests": tests/test_async_tools.py .................. [ 69%] +Step #1 - "Run integration tests": tests/test_client.py ................ [ 78%] +Step #1 - "Run integration tests": tests/test_e2e.py EEEEEEEEEEEEEEEEEEEEEEEEEEEE [ 94%] +Step #1 - "Run integration tests": tests/test_tools.py .......... [100%] +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ==================================== ERRORS ==================================== +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_aload_toolset_specific[http://localhost:5000-my-toolset-1-expected_tools0] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup +Step #1 - "Run integration tests": return (yield) +Step #1 - "Run integration tests": ^^^^^ +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": ---------------------------- Captured stdout setup ----------------------------- +Step #1 - "Run integration tests": Downloading toolbox binary from gcs bucket... +Step #1 - "Run integration tests": Blob main/linux/amd64/toolbox downloaded to toolbox. +Step #1 - "Run integration tests": Toolbox binary downloaded successfully. +Step #1 - "Run integration tests": Opening toolbox server process... +Step #1 - "Run integration tests": Flag --tools-file has been deprecated, please use --config instead +Step #1 - "Run integration tests": 2026-06-30T16:18:19.084190671Z INFO "Starting MCP Toolbox for Databases version 1.5.0+dev.linux.amd64.d6dc5fe" +Step #1 - "Run integration tests": 2026-06-30T16:18:19.245794982Z INFO "Initialized 1 sources: my-cloud-sql-pg-source" +Step #1 - "Run integration tests": 2026-06-30T16:18:19.245873488Z INFO "Initialized 2 authServices: my-test-auth, my-test-auth2" +Step #1 - "Run integration tests": 2026-06-30T16:18:19.245887639Z INFO "Initialized 0 embeddingModels: " +Step #1 - "Run integration tests": 2026-06-30T16:18:19.245967166Z INFO "Initialized 7 tools: search-rows, process-data, get-n-rows, get-row-by-id, get-row-by-id-auth, get-row-by-email-auth, get-row-by-content-auth" +Step #1 - "Run integration tests": 2026-06-30T16:18:19.246008489Z INFO "Initialized 4 toolsets: my-toolset-3, default, my-toolset, my-toolset-2" +Step #1 - "Run integration tests": 2026-06-30T16:18:19.24601994Z INFO "Initialized 0 prompts: " +Step #1 - "Run integration tests": 2026-06-30T16:18:19.246035752Z INFO "Initialized 1 promptsets: default" +Step #1 - "Run integration tests": 2026-06-30T16:18:19.250732417Z INFO "Server ready to serve!" +Step #1 - "Run integration tests": Checking if both toolbox servers are successfully started... +Step #1 - "Run integration tests": Checking if both toolbox servers are successfully started... +Step #1 - "Run integration tests": Checking if both toolbox servers are successfully started... +Step #1 - "Run integration tests": Checking if both toolbox servers are successfully started... +Step #1 - "Run integration tests": Checking if both toolbox servers are successfully started... +Step #1 - "Run integration tests": ---------------------------- Captured stderr setup ----------------------------- +Step #1 - "Run integration tests": Error: unknown flag: --enable-draft-specs +Step #1 - "Run integration tests": 2026-06-30T16:18:19.246067874Z WARN "wildcard (*) allows any website to access the resources. This creates a security risk regardless of whether you are in a production or local development environment. Recommended to use --allowed-origins with specific local addresses." +Step #1 - "Run integration tests": 2026-06-30T16:18:19.246095996Z WARN "wildcard (*) hosts allow any domain to access this resource, making it vulnerable to DNS rebinding attacks regardless of whether you are in a production or local development environment. For improved security, use the --allowed-hosts flag to specify trusted domains." +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_aload_toolset_specific[http://localhost:5000-my-toolset-2-2-expected_tools1] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_aload_toolset_all[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_async[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_sync[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_missing_params[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_wrong_param_type[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_unauth_with_auth[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_no_auth[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_wrong_auth[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_auth[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_param_auth_no_auth[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_param_auth[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_param_auth_no_field[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_load_toolset_specific[http://localhost:5000-my-toolset-1-expected_tools0] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_load_toolset_specific[http://localhost:5000-my-toolset-2-2-expected_tools1] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_aload_toolset_all[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_async[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_sync[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_missing_params[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_wrong_param_type[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_unauth_with_auth[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_no_auth[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_wrong_auth[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_auth[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_param_auth_no_auth[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_param_auth[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_param_auth_no_field[http://localhost:5000] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_aload_toolset_specific[http://localhost:5001-my-toolset-1-expected_tools0] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_aload_toolset_specific[http://localhost:5001-my-toolset-2-2-expected_tools1] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_aload_toolset_all[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_async[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_sync[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_missing_params[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_wrong_param_type[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_unauth_with_auth[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_no_auth[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_wrong_auth[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_auth[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_param_auth_no_auth[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_param_auth[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_param_auth_no_field[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_load_toolset_specific[http://localhost:5001-my-toolset-1-expected_tools0] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_load_toolset_specific[http://localhost:5001-my-toolset-2-2-expected_tools1] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_aload_toolset_all[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_async[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": self = +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": def setup(self) -> None: +Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" +Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: +Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) +Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory +Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache +Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. +Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories +Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): +Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) +Step #1 - "Run integration tests": > return super().setup() +Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: +Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_sync[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_missing_params[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_wrong_param_type[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_unauth_with_auth[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_no_auth[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_wrong_auth[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_auth[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_param_auth_no_auth[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_param_auth[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_param_auth_no_field[http://localhost:5001] _ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": @pytest.fixture(scope="session") +Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: +Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" +Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") +Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) +Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" +Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") +Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") +Step #1 - "Run integration tests": try: +Step #1 - "Run integration tests": print("Opening toolbox server process...") +Step #1 - "Run integration tests": # Make toolbox executable +Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) +Step #1 - "Run integration tests": # Run toolbox binary +Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( +Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( +Step #1 - "Run integration tests": [ +Step #1 - "Run integration tests": "./toolbox", +Step #1 - "Run integration tests": "--port", +Step #1 - "Run integration tests": "5001", +Step #1 - "Run integration tests": "--tools-file", +Step #1 - "Run integration tests": tools_file_path, +Step #1 - "Run integration tests": "--enable-draft-specs", +Step #1 - "Run integration tests": ] +Step #1 - "Run integration tests": ) +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": # Wait for server to start +Step #1 - "Run integration tests": # Retry logic with a timeout +Step #1 - "Run integration tests": for _ in range(5): # retries +Step #1 - "Run integration tests": time.sleep(4) +Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") +Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: +Step #1 - "Run integration tests": print("Toolbox servers started successfully.") +Step #1 - "Run integration tests": break +Step #1 - "Run integration tests": else: +Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") +Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError +Step #1 - "Run integration tests": ================================ tests coverage ================================ +Step #1 - "Run integration tests": _______________ coverage: platform linux, python 3.13.14-final-0 _______________ +Step #1 - "Run integration tests": +Step #1 - "Run integration tests": Name Stmts Miss Cover +Step #1 - "Run integration tests": ------------------------------------------------------------ +Step #1 - "Run integration tests": src/toolbox_llamaindex/__init__.py 3 0 100% +Step #1 - "Run integration tests": src/toolbox_llamaindex/async_client.py 49 3 94% +Step #1 - "Run integration tests": src/toolbox_llamaindex/async_tools.py 36 5 86% +Step #1 - "Run integration tests": src/toolbox_llamaindex/client.py 79 4 95% +Step #1 - "Run integration tests": src/toolbox_llamaindex/tools.py 38 3 92% +Step #1 - "Run integration tests": src/toolbox_llamaindex/version.py 1 0 100% +Step #1 - "Run integration tests": ------------------------------------------------------------ +Step #1 - "Run integration tests": TOTAL 206 15 93% +Step #1 - "Run integration tests": Required test coverage of 90% reached. Total coverage: 92.72% +Step #1 - "Run integration tests": =========================== short test summary info ============================ +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_aload_toolset_specific[http://localhost:5000-my-toolset-1-expected_tools0] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_aload_toolset_specific[http://localhost:5000-my-toolset-2-2-expected_tools1] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_aload_toolset_all[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_async[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_sync[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_missing_params[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_wrong_param_type[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_unauth_with_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_no_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_wrong_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_param_auth_no_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_param_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_param_auth_no_field[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_load_toolset_specific[http://localhost:5000-my-toolset-1-expected_tools0] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_load_toolset_specific[http://localhost:5000-my-toolset-2-2-expected_tools1] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_aload_toolset_all[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_async[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_sync[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_missing_params[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_wrong_param_type[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_unauth_with_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_no_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_wrong_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_param_auth_no_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_param_auth[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_param_auth_no_field[http://localhost:5000] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_aload_toolset_specific[http://localhost:5001-my-toolset-1-expected_tools0] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_aload_toolset_specific[http://localhost:5001-my-toolset-2-2-expected_tools1] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_aload_toolset_all[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_async[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_sync[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_missing_params[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_wrong_param_type[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_unauth_with_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_no_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_wrong_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_param_auth_no_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_param_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_param_auth_no_field[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_load_toolset_specific[http://localhost:5001-my-toolset-1-expected_tools0] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_load_toolset_specific[http://localhost:5001-my-toolset-2-2-expected_tools1] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_aload_toolset_all[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_async[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_sync[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_missing_params[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_wrong_param_type[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_unauth_with_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_no_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_wrong_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_param_auth_no_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_param_auth[http://localhost:5001] +Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_param_auth_no_field[http://localhost:5001] +Step #1 - "Run integration tests": ======================= 122 passed, 56 errors in 30.15s ======================== +Finished Step #1 - "Run integration tests" +ERROR +ERROR: build step 1 "python:3.13" failed: step exited with non-zero status: 1 +-------------------------------------------------------------------------------- diff --git a/packages/toolbox-adk/src/toolbox_adk/tool.py b/packages/toolbox-adk/src/toolbox_adk/tool.py index 0d94821b6..6062f345f 100644 --- a/packages/toolbox-adk/src/toolbox_adk/tool.py +++ b/packages/toolbox-adk/src/toolbox_adk/tool.py @@ -17,12 +17,10 @@ from typing import Any, Awaitable, Callable, Dict, Mapping, Optional import toolbox_core -from fastapi.openapi.models import OAuth2, OAuthFlowAuthorizationCode, OAuthFlows -from google.adk.auth.auth_credential import ( - AuthCredential, - AuthCredentialTypes, - OAuth2Auth, -) +from fastapi.openapi.models import (OAuth2, OAuthFlowAuthorizationCode, + OAuthFlows) +from google.adk.auth.auth_credential import (AuthCredential, + AuthCredentialTypes, OAuth2Auth) from google.adk.auth.auth_tool import AuthConfig from google.adk.tools.base_tool import BaseTool from google.adk.tools.tool_context import ToolContext diff --git a/packages/toolbox-adk/src/toolbox_adk/toolset.py b/packages/toolbox-adk/src/toolbox_adk/toolset.py index 7689f96d9..e4a8eeb99 100644 --- a/packages/toolbox-adk/src/toolbox_adk/toolset.py +++ b/packages/toolbox-adk/src/toolbox_adk/toolset.py @@ -12,7 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Any, Awaitable, Callable, Dict, List, Mapping, Optional, Union +from typing import (Any, Awaitable, Callable, Dict, List, Mapping, Optional, + Union) from google.adk.agents.readonly_context import ReadonlyContext from google.adk.tools.base_tool import BaseTool diff --git a/packages/toolbox-adk/tests/integration/conftest.py b/packages/toolbox-adk/tests/integration/conftest.py index 89b4b1ce3..20aea226d 100644 --- a/packages/toolbox-adk/tests/integration/conftest.py +++ b/packages/toolbox-adk/tests/integration/conftest.py @@ -152,7 +152,11 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None print("Downloading toolbox binary from gcs bucket...") source_blob_name = get_toolbox_binary_url(toolbox_version) - bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" + bucket_name = ( + "mcp-toolbox-for-databases-dev" + if toolbox_version in ("main", "mcp-v202606") + else "mcp-toolbox-for-databases" + ) download_blob(bucket_name, source_blob_name, "toolbox") print("Toolbox binary downloaded successfully.") diff --git a/packages/toolbox-adk/tests/integration/test_integration.py b/packages/toolbox-adk/tests/integration/test_integration.py index 780b66d38..2f5566c4e 100644 --- a/packages/toolbox-adk/tests/integration/test_integration.py +++ b/packages/toolbox-adk/tests/integration/test_integration.py @@ -19,19 +19,16 @@ import pytest from google import genai from google.adk import Agent -from google.adk.auth.auth_credential import ( - AuthCredential, - AuthCredentialTypes, - OAuth2Auth, -) +from google.adk.auth.auth_credential import (AuthCredential, + AuthCredentialTypes, OAuth2Auth) from google.adk.runners import Runner -from google.adk.sessions.in_memory_session_service import InMemorySessionService +from google.adk.sessions.in_memory_session_service import \ + InMemorySessionService from google.adk.tools.base_tool import BaseTool from google.genai import types from pydantic import ValidationError -from toolbox_core.protocol import Protocol - from toolbox_adk import CredentialStrategy, ToolboxTool, ToolboxToolset +from toolbox_core.protocol import Protocol # Ensure TOOLBOX_VERSION is set for the fixture if "TOOLBOX_VERSION" not in os.environ: @@ -312,12 +309,9 @@ async def test_api_key_integration(self): async def test_adk_integration_optional_params(self): """test that we can create credentials from ADK objects without auth_scheme.""" - from google.adk.auth.auth_credential import ( - AuthCredential, - AuthCredentialTypes, - HttpAuth, - HttpCredentials, - ) + from google.adk.auth.auth_credential import (AuthCredential, + AuthCredentialTypes, + HttpAuth, HttpCredentials) # 1. Create ADK credential (HTTP Bearer) adk_creds = AuthCredential( diff --git a/packages/toolbox-adk/tests/unit/test_client.py b/packages/toolbox-adk/tests/unit/test_client.py index 7b1b0a25e..f3bc8f25c 100644 --- a/packages/toolbox-adk/tests/unit/test_client.py +++ b/packages/toolbox-adk/tests/unit/test_client.py @@ -16,7 +16,6 @@ from unittest.mock import AsyncMock, MagicMock, patch import pytest - from toolbox_adk import CredentialStrategy, ToolboxClient from toolbox_adk.client import CredentialConfig, CredentialType diff --git a/packages/toolbox-adk/tests/unit/test_credentials.py b/packages/toolbox-adk/tests/unit/test_credentials.py index 9e94d5638..c3464ee4c 100644 --- a/packages/toolbox-adk/tests/unit/test_credentials.py +++ b/packages/toolbox-adk/tests/unit/test_credentials.py @@ -65,11 +65,9 @@ def test_api_key(self): def test_from_adk_credentials_oauth2(self): from fastapi.openapi.models import OAuth2, OAuthFlows - from google.adk.auth.auth_credential import ( - AuthCredential, - AuthCredentialTypes, - OAuth2Auth, - ) + from google.adk.auth.auth_credential import (AuthCredential, + AuthCredentialTypes, + OAuth2Auth) auth_credential = AuthCredential( auth_type=AuthCredentialTypes.OAUTH2, @@ -86,12 +84,9 @@ def test_from_adk_credentials_oauth2(self): def test_from_adk_credentials_http_bearer(self): from fastapi.openapi.models import HTTPBearer - from google.adk.auth.auth_credential import ( - AuthCredential, - AuthCredentialTypes, - HttpAuth, - HttpCredentials, - ) + from google.adk.auth.auth_credential import (AuthCredential, + AuthCredentialTypes, + HttpAuth, HttpCredentials) auth_credential = AuthCredential( auth_type=AuthCredentialTypes.HTTP, @@ -109,7 +104,8 @@ def test_from_adk_credentials_http_bearer(self): def test_from_adk_credentials_api_key(self): from fastapi.openapi.models import APIKey, APIKeyIn - from google.adk.auth.auth_credential import AuthCredential, AuthCredentialTypes + from google.adk.auth.auth_credential import (AuthCredential, + AuthCredentialTypes) auth_credential = AuthCredential( auth_type=AuthCredentialTypes.API_KEY, api_key="abc" @@ -126,7 +122,8 @@ def test_from_adk_credentials_api_key(self): def test_from_adk_credentials_api_key_default_location(self): from fastapi.openapi.models import APIKey - from google.adk.auth.auth_credential import AuthCredential, AuthCredentialTypes + from google.adk.auth.auth_credential import (AuthCredential, + AuthCredentialTypes) auth_credential = AuthCredential( auth_type=AuthCredentialTypes.API_KEY, api_key="abc" @@ -151,7 +148,8 @@ class MockScheme: def test_from_adk_credentials_api_key_query_fail(self): import pytest from fastapi.openapi.models import APIKey, APIKeyIn - from google.adk.auth.auth_credential import AuthCredential, AuthCredentialTypes + from google.adk.auth.auth_credential import (AuthCredential, + AuthCredentialTypes) cred = AuthCredential(auth_type=AuthCredentialTypes.API_KEY, api_key="abc") scheme = APIKey(type="apiKey", name="key", **{"in": APIKeyIn.query}) @@ -163,7 +161,8 @@ def test_from_adk_credentials_api_key_query_fail(self): def test_from_adk_credentials_api_key_no_scheme_raises(self): import pytest - from google.adk.auth.auth_credential import AuthCredential, AuthCredentialTypes + from google.adk.auth.auth_credential import (AuthCredential, + AuthCredentialTypes) auth_credential = AuthCredential( auth_type=AuthCredentialTypes.API_KEY, api_key="my-key" @@ -175,7 +174,8 @@ def test_from_adk_credentials_api_key_no_scheme_raises(self): def test_from_adk_credentials_unsupported(self): import pytest - from google.adk.auth.auth_credential import AuthCredential, AuthCredentialTypes + from google.adk.auth.auth_credential import (AuthCredential, + AuthCredentialTypes) auth_credential = AuthCredential( auth_type=AuthCredentialTypes.OAUTH2 @@ -186,11 +186,9 @@ def test_from_adk_credentials_unsupported(self): def test_from_adk_auth_config(self): from fastapi.openapi.models import OAuth2, OAuthFlows - from google.adk.auth.auth_credential import ( - AuthCredential, - AuthCredentialTypes, - OAuth2Auth, - ) + from google.adk.auth.auth_credential import (AuthCredential, + AuthCredentialTypes, + OAuth2Auth) from google.adk.auth.auth_tool import AuthConfig oauth2_auth = OAuth2Auth(client_id="cid2", client_secret="csec2", scopes=["s2"]) diff --git a/packages/toolbox-adk/tests/unit/test_tool.py b/packages/toolbox-adk/tests/unit/test_tool.py index 3b55290ea..0dc2e4bfe 100644 --- a/packages/toolbox-adk/tests/unit/test_tool.py +++ b/packages/toolbox-adk/tests/unit/test_tool.py @@ -16,7 +16,6 @@ import pytest from google.genai.types import Type - from toolbox_adk.credentials import CredentialConfig, CredentialType from toolbox_adk.tool import ToolboxTool diff --git a/packages/toolbox-adk/tests/unit/test_toolset.py b/packages/toolbox-adk/tests/unit/test_toolset.py index ff632e1ea..86a121333 100644 --- a/packages/toolbox-adk/tests/unit/test_toolset.py +++ b/packages/toolbox-adk/tests/unit/test_toolset.py @@ -16,10 +16,9 @@ from unittest.mock import AsyncMock, MagicMock, patch import pytest -from toolbox_core.protocol import Protocol - from toolbox_adk.tool import ToolboxTool from toolbox_adk.toolset import ToolboxToolset +from toolbox_core.protocol import Protocol class TestToolboxToolset: diff --git a/packages/toolbox-core/src/toolbox_core/client.py b/packages/toolbox-core/src/toolbox_core/client.py index b2224eedc..8efd2ad0d 100644 --- a/packages/toolbox-core/src/toolbox_core/client.py +++ b/packages/toolbox-core/src/toolbox_core/client.py @@ -20,26 +20,19 @@ from aiohttp import ClientSession from deprecated import deprecated - from toolbox_core.exceptions import ProtocolNegotiationError from . import version from .itransport import ITransport -from .mcp_transport import ( - McpHttpTransportV20241105, - McpHttpTransportV20250326, - McpHttpTransportV20250618, - McpHttpTransportV20251125, - McpHttpTransportV20260618, -) +from .mcp_transport import (McpHttpTransportV20241105, + McpHttpTransportV20250326, + McpHttpTransportV20250618, + McpHttpTransportV20251125, + McpHttpTransportV20260618) from .protocol import Protocol, ToolSchema from .tool import ToolboxTool -from .utils import ( - identify_auth_requirements, - resolve_value, - validate_unused_requirements, - warn_if_http_and_headers, -) +from .utils import (identify_auth_requirements, resolve_value, + validate_unused_requirements, warn_if_http_and_headers) class _McpTransportProxy(ITransport): diff --git a/packages/toolbox-core/src/toolbox_core/mcp_transport/telemetry.py b/packages/toolbox-core/src/toolbox_core/mcp_transport/telemetry.py index ab9972034..1cca9b9b2 100644 --- a/packages/toolbox-core/src/toolbox_core/mcp_transport/telemetry.py +++ b/packages/toolbox-core/src/toolbox_core/mcp_transport/telemetry.py @@ -33,9 +33,8 @@ from opentelemetry import metrics, trace from opentelemetry.metrics import Histogram, Meter from opentelemetry.trace import Span, SpanKind, Status, StatusCode, Tracer - from opentelemetry.trace.propagation.tracecontext import ( - TraceContextTextMapPropagator, - ) + from opentelemetry.trace.propagation.tracecontext import \ + TraceContextTextMapPropagator TELEMETRY_AVAILABLE = True except ImportError: diff --git a/packages/toolbox-core/src/toolbox_core/mcp_transport/transport_base.py b/packages/toolbox-core/src/toolbox_core/mcp_transport/transport_base.py index 735ae9066..b91d957aa 100644 --- a/packages/toolbox-core/src/toolbox_core/mcp_transport/transport_base.py +++ b/packages/toolbox-core/src/toolbox_core/mcp_transport/transport_base.py @@ -21,13 +21,8 @@ from .. import version from ..itransport import ITransport -from ..protocol import ( - AdditionalPropertiesSchema, - ParameterSchema, - Protocol, - TelemetryAttributes, - ToolSchema, -) +from ..protocol import (AdditionalPropertiesSchema, ParameterSchema, Protocol, + TelemetryAttributes, ToolSchema) from . import telemetry diff --git a/packages/toolbox-core/src/toolbox_core/tool.py b/packages/toolbox-core/src/toolbox_core/tool.py index 89212325e..8ef2c8ef1 100644 --- a/packages/toolbox-core/src/toolbox_core/tool.py +++ b/packages/toolbox-core/src/toolbox_core/tool.py @@ -20,13 +20,9 @@ from .itransport import ITransport from .protocol import ParameterSchema, TelemetryAttributes -from .utils import ( - create_func_docstring, - identify_auth_requirements, - params_to_pydantic_model, - resolve_value, - warn_if_http_and_headers, -) +from .utils import (create_func_docstring, identify_auth_requirements, + params_to_pydantic_model, resolve_value, + warn_if_http_and_headers) class ToolboxTool: diff --git a/packages/toolbox-core/src/toolbox_core/utils.py b/packages/toolbox-core/src/toolbox_core/utils.py index 92660c84b..7330625a6 100644 --- a/packages/toolbox-core/src/toolbox_core/utils.py +++ b/packages/toolbox-core/src/toolbox_core/utils.py @@ -15,20 +15,10 @@ import asyncio import warnings -from typing import ( - Any, - Awaitable, - Callable, - Iterable, - Mapping, - Sequence, - Type, - Union, - cast, -) +from typing import (Any, Awaitable, Callable, Iterable, Mapping, Sequence, + Type, Union, cast) from pydantic import BaseModel, Field, create_model - from toolbox_core.protocol import ParameterSchema diff --git a/packages/toolbox-core/tests/conftest.py b/packages/toolbox-core/tests/conftest.py index 1dfe4a3ac..2e500752e 100644 --- a/packages/toolbox-core/tests/conftest.py +++ b/packages/toolbox-core/tests/conftest.py @@ -137,7 +137,11 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None """Starts the toolbox server as a subprocess.""" print("Downloading toolbox binary from gcs bucket...") source_blob_name = get_toolbox_binary_url(toolbox_version) - bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" + bucket_name = ( + "mcp-toolbox-for-databases-dev" + if toolbox_version in ("main", "mcp-v202606") + else "mcp-toolbox-for-databases" + ) download_blob(bucket_name, source_blob_name, "toolbox") print("Toolbox binary downloaded successfully.") try: diff --git a/packages/toolbox-core/tests/mcp_transport/test_base.py b/packages/toolbox-core/tests/mcp_transport/test_base.py index 785065023..bfd8ed1f2 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_base.py +++ b/packages/toolbox-core/tests/mcp_transport/test_base.py @@ -19,7 +19,6 @@ import pytest import pytest_asyncio from aiohttp import ClientSession - from toolbox_core.mcp_transport.transport_base import _McpHttpTransportBase from toolbox_core.protocol import TelemetryAttributes, ToolSchema diff --git a/packages/toolbox-core/tests/mcp_transport/test_telemetry.py b/packages/toolbox-core/tests/mcp_transport/test_telemetry.py index f3a2eaff8..359232aa6 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_telemetry.py +++ b/packages/toolbox-core/tests/mcp_transport/test_telemetry.py @@ -15,31 +15,16 @@ from unittest.mock import ANY, MagicMock, patch import pytest - import toolbox_core.mcp_transport.telemetry as telemetry_module from toolbox_core.mcp_transport.telemetry import ( - ATTR_ERROR_TYPE, - ATTR_GEN_AI_OPERATION_NAME, - ATTR_GEN_AI_TOOL_NAME, - ATTR_MCP_METHOD_NAME, - ATTR_MCP_PROTOCOL_VERSION, - ATTR_NETWORK_PROTOCOL_NAME, - ATTR_NETWORK_TRANSPORT, - ATTR_SERVER_ADDRESS, - ATTR_SERVER_PORT, - create_operation_duration_histogram, - create_session_duration_histogram, - create_traceparent_from_context, - create_tracestate_from_context, - end_span, - extract_server_info, - get_meter, - get_tracer, - record_error_from_jsonrpc, - record_operation_duration, - record_session_duration, - start_span, -) + ATTR_ERROR_TYPE, ATTR_GEN_AI_OPERATION_NAME, ATTR_GEN_AI_TOOL_NAME, + ATTR_MCP_METHOD_NAME, ATTR_MCP_PROTOCOL_VERSION, + ATTR_NETWORK_PROTOCOL_NAME, ATTR_NETWORK_TRANSPORT, ATTR_SERVER_ADDRESS, + ATTR_SERVER_PORT, create_operation_duration_histogram, + create_session_duration_histogram, create_traceparent_from_context, + create_tracestate_from_context, end_span, extract_server_info, get_meter, + get_tracer, record_error_from_jsonrpc, record_operation_duration, + record_session_duration, start_span) class TestGetTracer: diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20241105.py b/packages/toolbox-core/tests/mcp_transport/test_v20241105.py index eadb0e264..89af3827f 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20241105.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20241105.py @@ -17,7 +17,6 @@ import pytest import pytest_asyncio from aiohttp import ClientSession - from toolbox_core.exceptions import ProtocolNegotiationError from toolbox_core.mcp_transport.v20241105 import types from toolbox_core.mcp_transport.v20241105.mcp import McpHttpTransportV20241105 diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20250326.py b/packages/toolbox-core/tests/mcp_transport/test_v20250326.py index a9fb3f35b..ce4f94139 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20250326.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20250326.py @@ -17,7 +17,6 @@ import pytest import pytest_asyncio from aiohttp import ClientSession - from toolbox_core.mcp_transport.v20250326 import types from toolbox_core.mcp_transport.v20250326.mcp import McpHttpTransportV20250326 from toolbox_core.protocol import ManifestSchema, Protocol diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20250618.py b/packages/toolbox-core/tests/mcp_transport/test_v20250618.py index b5a1a0a94..0da5f12d9 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20250618.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20250618.py @@ -17,7 +17,6 @@ import pytest import pytest_asyncio from aiohttp import ClientSession - from toolbox_core.exceptions import ProtocolNegotiationError from toolbox_core.mcp_transport.v20250618 import types from toolbox_core.mcp_transport.v20250618.mcp import McpHttpTransportV20250618 diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20251125.py b/packages/toolbox-core/tests/mcp_transport/test_v20251125.py index f575b81bc..190ad6970 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20251125.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20251125.py @@ -17,7 +17,6 @@ import pytest import pytest_asyncio from aiohttp import ClientSession - from toolbox_core.exceptions import ProtocolNegotiationError from toolbox_core.mcp_transport.v20251125 import types from toolbox_core.mcp_transport.v20251125.mcp import McpHttpTransportV20251125 diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20260618.py b/packages/toolbox-core/tests/mcp_transport/test_v20260618.py index 5c751320f..dd927252b 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20260618.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20260618.py @@ -17,7 +17,6 @@ import pytest import pytest_asyncio from aiohttp import ClientSession - from toolbox_core.mcp_transport.v20260618 import types from toolbox_core.mcp_transport.v20260618.mcp import McpHttpTransportV20260618 from toolbox_core.protocol import ManifestSchema, Protocol diff --git a/packages/toolbox-core/tests/test_auth_methods.py b/packages/toolbox-core/tests/test_auth_methods.py index cd78073f7..07ac56c78 100644 --- a/packages/toolbox-core/tests/test_auth_methods.py +++ b/packages/toolbox-core/tests/test_auth_methods.py @@ -17,7 +17,6 @@ import pytest from google.auth.exceptions import GoogleAuthError - from toolbox_core import auth_methods # Constants for test values diff --git a/packages/toolbox-core/tests/test_client.py b/packages/toolbox-core/tests/test_client.py index e28bb03a1..1f0dfeabe 100644 --- a/packages/toolbox-core/tests/test_client.py +++ b/packages/toolbox-core/tests/test_client.py @@ -20,16 +20,10 @@ import pytest from aiohttp import web - from toolbox_core.client import ToolboxClient from toolbox_core.itransport import ITransport -from toolbox_core.protocol import ( - ManifestSchema, - ParameterSchema, - Protocol, - TelemetryAttributes, - ToolSchema, -) +from toolbox_core.protocol import (ManifestSchema, ParameterSchema, Protocol, + TelemetryAttributes, ToolSchema) TEST_BASE_URL = "http://toolbox.example.com" diff --git a/packages/toolbox-core/tests/test_e2e.py b/packages/toolbox-core/tests/test_e2e.py index 0b926e178..273ddc085 100644 --- a/packages/toolbox-core/tests/test_e2e.py +++ b/packages/toolbox-core/tests/test_e2e.py @@ -18,7 +18,6 @@ import pytest import pytest_asyncio from pydantic import ValidationError - from toolbox_core.client import ToolboxClient from toolbox_core.protocol import Protocol from toolbox_core.tool import ToolboxTool diff --git a/packages/toolbox-core/tests/test_e2e_mcp.py b/packages/toolbox-core/tests/test_e2e_mcp.py index 618ae171d..8a7fe5c3a 100644 --- a/packages/toolbox-core/tests/test_e2e_mcp.py +++ b/packages/toolbox-core/tests/test_e2e_mcp.py @@ -18,7 +18,6 @@ import pytest import pytest_asyncio from pydantic import ValidationError - from toolbox_core.client import ToolboxClient from toolbox_core.protocol import Protocol from toolbox_core.tool import ToolboxTool diff --git a/packages/toolbox-core/tests/test_protocol.py b/packages/toolbox-core/tests/test_protocol.py index 3c50b3225..f3ab0cb9a 100644 --- a/packages/toolbox-core/tests/test_protocol.py +++ b/packages/toolbox-core/tests/test_protocol.py @@ -17,13 +17,8 @@ from typing import Any, Optional import pytest - -from toolbox_core.protocol import ( - AdditionalPropertiesSchema, - ParameterSchema, - Protocol, - TelemetryAttributes, -) +from toolbox_core.protocol import (AdditionalPropertiesSchema, ParameterSchema, + Protocol, TelemetryAttributes) # --------------------------------------------------------------------------- # # TelemetryAttributes — wire format & alias contract # diff --git a/packages/toolbox-core/tests/test_sync_client.py b/packages/toolbox-core/tests/test_sync_client.py index 6a6649b9f..ee5d5da67 100644 --- a/packages/toolbox-core/tests/test_sync_client.py +++ b/packages/toolbox-core/tests/test_sync_client.py @@ -18,15 +18,10 @@ from unittest.mock import AsyncMock, Mock, patch import pytest - from toolbox_core.client import ToolboxClient from toolbox_core.itransport import ITransport -from toolbox_core.protocol import ( - ManifestSchema, - ParameterSchema, - TelemetryAttributes, - ToolSchema, -) +from toolbox_core.protocol import (ManifestSchema, ParameterSchema, + TelemetryAttributes, ToolSchema) from toolbox_core.sync_client import ToolboxSyncClient from toolbox_core.sync_tool import ToolboxSyncTool diff --git a/packages/toolbox-core/tests/test_sync_e2e.py b/packages/toolbox-core/tests/test_sync_e2e.py index a306cedc2..3b8a74304 100644 --- a/packages/toolbox-core/tests/test_sync_e2e.py +++ b/packages/toolbox-core/tests/test_sync_e2e.py @@ -13,7 +13,6 @@ # limitations under the License. import pytest - from toolbox_core.sync_client import ToolboxSyncClient from toolbox_core.sync_tool import ToolboxSyncTool diff --git a/packages/toolbox-core/tests/test_sync_tool.py b/packages/toolbox-core/tests/test_sync_tool.py index 7db4f94e1..20ac5ae5a 100644 --- a/packages/toolbox-core/tests/test_sync_tool.py +++ b/packages/toolbox-core/tests/test_sync_tool.py @@ -20,7 +20,6 @@ from unittest.mock import MagicMock, Mock, create_autospec, patch import pytest - from toolbox_core.protocol import TelemetryAttributes from toolbox_core.sync_tool import ToolboxSyncTool from toolbox_core.tool import ToolboxTool diff --git a/packages/toolbox-core/tests/test_tool.py b/packages/toolbox-core/tests/test_tool.py index 1b23db3ae..9d8b7ccc4 100644 --- a/packages/toolbox-core/tests/test_tool.py +++ b/packages/toolbox-core/tests/test_tool.py @@ -24,7 +24,6 @@ from aiohttp import ClientSession from aioresponses import aioresponses from pydantic import ValidationError - from toolbox_core.itransport import ITransport from toolbox_core.protocol import ParameterSchema, TelemetryAttributes from toolbox_core.tool import ToolboxTool diff --git a/packages/toolbox-core/tests/test_utils.py b/packages/toolbox-core/tests/test_utils.py index ec6ebb22b..3ec60a5d4 100644 --- a/packages/toolbox-core/tests/test_utils.py +++ b/packages/toolbox-core/tests/test_utils.py @@ -20,15 +20,11 @@ import pytest from pydantic import BaseModel, ValidationError - from toolbox_core.protocol import ParameterSchema -from toolbox_core.utils import ( - create_func_docstring, - identify_auth_requirements, - params_to_pydantic_model, - resolve_value, - warn_if_http_and_headers, -) +from toolbox_core.utils import (create_func_docstring, + identify_auth_requirements, + params_to_pydantic_model, resolve_value, + warn_if_http_and_headers) def create_param_mock(name: str, description: str, annotation: Type) -> Mock: diff --git a/packages/toolbox-langchain/tests/conftest.py b/packages/toolbox-langchain/tests/conftest.py index 24db10123..7fe322b6d 100644 --- a/packages/toolbox-langchain/tests/conftest.py +++ b/packages/toolbox-langchain/tests/conftest.py @@ -137,7 +137,11 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None """Starts the toolbox server as a subprocess.""" print("Downloading toolbox binary from gcs bucket...") source_blob_name = get_toolbox_binary_url(toolbox_version) - bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" + bucket_name = ( + "mcp-toolbox-for-databases-dev" + if toolbox_version in ("main", "mcp-v202606") + else "mcp-toolbox-for-databases" + ) download_blob(bucket_name, source_blob_name, "toolbox") print("Toolbox binary downloaded successfully.") try: diff --git a/packages/toolbox-langchain/tests/test_async_client.py b/packages/toolbox-langchain/tests/test_async_client.py index 9da3511df..c93468d48 100644 --- a/packages/toolbox-langchain/tests/test_async_client.py +++ b/packages/toolbox-langchain/tests/test_async_client.py @@ -21,7 +21,6 @@ from toolbox_core.protocol import ParameterSchema as CoreParameterSchema from toolbox_core.protocol import Protocol from toolbox_core.tool import ToolboxTool as ToolboxCoreTool - from toolbox_langchain.async_client import AsyncToolboxClient from toolbox_langchain.async_tools import AsyncToolboxTool diff --git a/packages/toolbox-langchain/tests/test_client.py b/packages/toolbox-langchain/tests/test_client.py index 6150d4a17..eb7275455 100644 --- a/packages/toolbox-langchain/tests/test_client.py +++ b/packages/toolbox-langchain/tests/test_client.py @@ -20,7 +20,6 @@ from toolbox_core.protocol import Protocol from toolbox_core.sync_tool import ToolboxSyncTool as ToolboxCoreSyncTool from toolbox_core.utils import params_to_pydantic_model - from toolbox_langchain.client import ToolboxClient from toolbox_langchain.tools import ToolboxTool diff --git a/packages/toolbox-langchain/tests/test_e2e.py b/packages/toolbox-langchain/tests/test_e2e.py index 93fbd01ea..924f58040 100644 --- a/packages/toolbox-langchain/tests/test_e2e.py +++ b/packages/toolbox-langchain/tests/test_e2e.py @@ -37,7 +37,6 @@ import pytest import pytest_asyncio from pydantic import ValidationError - from toolbox_langchain.client import ToolboxClient diff --git a/packages/toolbox-langchain/tests/test_tools.py b/packages/toolbox-langchain/tests/test_tools.py index 9775283a3..0d41a1a3c 100644 --- a/packages/toolbox-langchain/tests/test_tools.py +++ b/packages/toolbox-langchain/tests/test_tools.py @@ -21,7 +21,6 @@ from toolbox_core.sync_tool import ToolboxSyncTool as ToolboxCoreSyncTool from toolbox_core.tool import ToolboxTool as CoreAsyncTool from toolbox_core.utils import params_to_pydantic_model - from toolbox_langchain.tools import ToolboxTool diff --git a/packages/toolbox-llamaindex/tests/conftest.py b/packages/toolbox-llamaindex/tests/conftest.py index a053f164d..e5bd6f771 100644 --- a/packages/toolbox-llamaindex/tests/conftest.py +++ b/packages/toolbox-llamaindex/tests/conftest.py @@ -137,7 +137,11 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None """Starts the toolbox server as a subprocess.""" print("Downloading toolbox binary from gcs bucket...") source_blob_name = get_toolbox_binary_url(toolbox_version) - bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" + bucket_name = ( + "mcp-toolbox-for-databases-dev" + if toolbox_version in ("main", "mcp-v202606") + else "mcp-toolbox-for-databases" + ) download_blob(bucket_name, source_blob_name, "toolbox") print("Toolbox binary downloaded successfully.") try: diff --git a/packages/toolbox-llamaindex/tests/test_async_client.py b/packages/toolbox-llamaindex/tests/test_async_client.py index 6011a3474..26a07cb11 100644 --- a/packages/toolbox-llamaindex/tests/test_async_client.py +++ b/packages/toolbox-llamaindex/tests/test_async_client.py @@ -21,7 +21,6 @@ from toolbox_core.protocol import ParameterSchema as CoreParameterSchema from toolbox_core.protocol import Protocol from toolbox_core.tool import ToolboxTool as ToolboxCoreTool - from toolbox_llamaindex.async_client import AsyncToolboxClient from toolbox_llamaindex.async_tools import AsyncToolboxTool diff --git a/packages/toolbox-llamaindex/tests/test_client.py b/packages/toolbox-llamaindex/tests/test_client.py index 9ae5364d2..bf8379f02 100644 --- a/packages/toolbox-llamaindex/tests/test_client.py +++ b/packages/toolbox-llamaindex/tests/test_client.py @@ -20,7 +20,6 @@ from toolbox_core.protocol import Protocol from toolbox_core.sync_tool import ToolboxSyncTool as ToolboxCoreSyncTool from toolbox_core.utils import params_to_pydantic_model - from toolbox_llamaindex.client import ToolboxClient from toolbox_llamaindex.tools import ToolboxTool diff --git a/packages/toolbox-llamaindex/tests/test_e2e.py b/packages/toolbox-llamaindex/tests/test_e2e.py index e0cdba4cb..f4006862d 100644 --- a/packages/toolbox-llamaindex/tests/test_e2e.py +++ b/packages/toolbox-llamaindex/tests/test_e2e.py @@ -37,7 +37,6 @@ import pytest import pytest_asyncio from pydantic import ValidationError - from toolbox_llamaindex.client import ToolboxClient diff --git a/packages/toolbox-llamaindex/tests/test_tools.py b/packages/toolbox-llamaindex/tests/test_tools.py index 980926acb..77843b9fc 100644 --- a/packages/toolbox-llamaindex/tests/test_tools.py +++ b/packages/toolbox-llamaindex/tests/test_tools.py @@ -22,7 +22,6 @@ from toolbox_core.sync_tool import ToolboxSyncTool as ToolboxCoreSyncTool from toolbox_core.tool import ToolboxTool as CoreAsyncTool from toolbox_core.utils import params_to_pydantic_model - from toolbox_llamaindex.async_tools import AsyncToolboxTool from toolbox_llamaindex.tools import ToolboxTool From b019d54fde431a06f117274ff019682ad71797f1 Mon Sep 17 00:00:00 2001 From: Anubhav Dhawan Date: Tue, 30 Jun 2026 22:19:11 +0530 Subject: [PATCH 16/19] Revert "chore: format files" This reverts commit ee00b9e1e0a9a6435ec73077ec06ace28b9e9c01. --- adk_fail.txt | 2296 --------- core_fail.txt | 368 -- full_log.txt | 4520 ----------------- log.txt | 3367 ------------ packages/toolbox-adk/src/toolbox_adk/tool.py | 10 +- .../toolbox-adk/src/toolbox_adk/toolset.py | 3 +- .../toolbox-adk/tests/integration/conftest.py | 6 +- .../tests/integration/test_integration.py | 22 +- .../toolbox-adk/tests/unit/test_client.py | 1 + .../tests/unit/test_credentials.py | 40 +- packages/toolbox-adk/tests/unit/test_tool.py | 1 + .../toolbox-adk/tests/unit/test_toolset.py | 3 +- .../toolbox-core/src/toolbox_core/client.py | 21 +- .../toolbox_core/mcp_transport/telemetry.py | 5 +- .../mcp_transport/transport_base.py | 9 +- .../toolbox-core/src/toolbox_core/tool.py | 10 +- .../toolbox-core/src/toolbox_core/utils.py | 14 +- packages/toolbox-core/tests/conftest.py | 6 +- .../tests/mcp_transport/test_base.py | 1 + .../tests/mcp_transport/test_telemetry.py | 31 +- .../tests/mcp_transport/test_v20241105.py | 1 + .../tests/mcp_transport/test_v20250326.py | 1 + .../tests/mcp_transport/test_v20250618.py | 1 + .../tests/mcp_transport/test_v20251125.py | 1 + .../tests/mcp_transport/test_v20260618.py | 1 + .../toolbox-core/tests/test_auth_methods.py | 1 + packages/toolbox-core/tests/test_client.py | 10 +- packages/toolbox-core/tests/test_e2e.py | 1 + packages/toolbox-core/tests/test_e2e_mcp.py | 1 + packages/toolbox-core/tests/test_protocol.py | 9 +- .../toolbox-core/tests/test_sync_client.py | 9 +- packages/toolbox-core/tests/test_sync_e2e.py | 1 + packages/toolbox-core/tests/test_sync_tool.py | 1 + packages/toolbox-core/tests/test_tool.py | 1 + packages/toolbox-core/tests/test_utils.py | 12 +- packages/toolbox-langchain/tests/conftest.py | 6 +- .../tests/test_async_client.py | 1 + .../toolbox-langchain/tests/test_client.py | 1 + packages/toolbox-langchain/tests/test_e2e.py | 1 + .../toolbox-langchain/tests/test_tools.py | 1 + packages/toolbox-llamaindex/tests/conftest.py | 6 +- .../tests/test_async_client.py | 1 + .../toolbox-llamaindex/tests/test_client.py | 1 + packages/toolbox-llamaindex/tests/test_e2e.py | 1 + .../toolbox-llamaindex/tests/test_tools.py | 1 + 45 files changed, 166 insertions(+), 10639 deletions(-) delete mode 100644 adk_fail.txt delete mode 100644 core_fail.txt delete mode 100644 full_log.txt delete mode 100644 log.txt diff --git a/adk_fail.txt b/adk_fail.txt deleted file mode 100644 index c167515ea..000000000 --- a/adk_fail.txt +++ /dev/null @@ -1,2296 +0,0 @@ - -To live stream log output for this build, please ensure the grpc module is installed. Run: - pip install grpcio -and set: - export CLOUDSDK_PYTHON_SITEPACKAGES=1 - ------------------------------ REMOTE BUILD OUTPUT ------------------------------ -starting build "60aa8bc0-42d6-4534-94ed-93ed37930217" -FETCHSOURCE -From https://github.com/googleapis/mcp-toolbox-sdk-python - * branch 0c6698324c00fc78b2ffb1207763d9a693598030 -> FETCH_HEAD -HEAD is now at 0c66983 chore: test with mcp-v202606 branch to fix unknown flag error -GitCommit: -0c6698324c00fc78b2ffb1207763d9a693598030 -BUILD -Starting Step #0 - "Install requirements" -Step #0 - "Install requirements": Pulling image: python:3.10 -Step #0 - "Install requirements": 3.10: Pulling from library/python -Step #0 - "Install requirements": aa3e9ef32f73: Pulling fs layer -Step #0 - "Install requirements": 3f59c84a7863: Pulling fs layer -Step #0 - "Install requirements": 30d0db852850: Pulling fs layer -Step #0 - "Install requirements": 0252e6abaf0f: Pulling fs layer -Step #0 - "Install requirements": ccf7e73781a2: Pulling fs layer -Step #0 - "Install requirements": de50cca5f6c1: Pulling fs layer -Step #0 - "Install requirements": e2fc6298fd6c: Pulling fs layer -Step #0 - "Install requirements": e2fc6298fd6c: Waiting -Step #0 - "Install requirements": ccf7e73781a2: Verifying Checksum -Step #0 - "Install requirements": ccf7e73781a2: Download complete -Step #0 - "Install requirements": de50cca5f6c1: Verifying Checksum -Step #0 - "Install requirements": de50cca5f6c1: Download complete -Step #0 - "Install requirements": e2fc6298fd6c: Verifying Checksum -Step #0 - "Install requirements": e2fc6298fd6c: Download complete -Step #0 - "Install requirements": 3f59c84a7863: Verifying Checksum -Step #0 - "Install requirements": 3f59c84a7863: Download complete -Step #0 - "Install requirements": aa3e9ef32f73: Verifying Checksum -Step #0 - "Install requirements": aa3e9ef32f73: Download complete -Step #0 - "Install requirements": 30d0db852850: Verifying Checksum -Step #0 - "Install requirements": 30d0db852850: Download complete -Step #0 - "Install requirements": 0252e6abaf0f: Verifying Checksum -Step #0 - "Install requirements": 0252e6abaf0f: Download complete -Step #0 - "Install requirements": aa3e9ef32f73: Pull complete -Step #0 - "Install requirements": 3f59c84a7863: Pull complete -Step #0 - "Install requirements": 30d0db852850: Pull complete -Step #0 - "Install requirements": 0252e6abaf0f: Pull complete -Step #0 - "Install requirements": ccf7e73781a2: Pull complete -Step #0 - "Install requirements": de50cca5f6c1: Pull complete -Step #0 - "Install requirements": e2fc6298fd6c: Pull complete -Step #0 - "Install requirements": Digest: sha256:a359ba8614a261091f0b96f6d308f0acfe0af7b5007ed945a8d5c62ad7acb241 -Step #0 - "Install requirements": Status: Downloaded newer image for python:3.10 -Step #0 - "Install requirements": docker.io/library/python:3.10 -Step #0 - "Install requirements": Collecting uv -Step #0 - "Install requirements": Downloading uv-0.11.26-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.3 MB) -Step #0 - "Install requirements": ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 26.3/26.3 MB 62.7 MB/s eta 0:00:00 -Step #0 - "Install requirements": Installing collected packages: uv -Step #0 - "Install requirements": Successfully installed uv-0.11.26 -Step #0 - "Install requirements": WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv -Step #0 - "Install requirements": -Step #0 - "Install requirements": [notice] A new release of pip is available: 23.0.1 -> 26.1.2 -Step #0 - "Install requirements": [notice] To update, run: pip install --upgrade pip -Step #0 - "Install requirements": Using CPython 3.10.20 interpreter at: /usr/local/bin/python3 -Step #0 - "Install requirements": Creating virtual environment at: /workspace/venv -Step #0 - "Install requirements": Activate with: source /workspace/venv/bin/activate -Step #0 - "Install requirements": Using Python 3.10.20 environment at: /workspace/venv -Step #0 - "Install requirements": Resolved 1 package in 188ms -Step #0 - "Install requirements": Downloading uv (25.0MiB) -Step #0 - "Install requirements": Downloaded uv -Step #0 - "Install requirements": Prepared 1 package in 551ms -Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. -Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. -Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. -Step #0 - "Install requirements": Installed 1 package in 93ms -Step #0 - "Install requirements": + uv==0.11.26 -Step #0 - "Install requirements": Using Python 3.10.20 environment at: /workspace/venv -Step #0 - "Install requirements": Resolved 127 packages in 2.13s -Step #0 - "Install requirements": Building toolbox-core @ file:///workspace/packages/toolbox-core -Step #0 - "Install requirements": Downloading google-api-python-client (14.9MiB) -Step #0 - "Install requirements": Downloading pyarrow (46.6MiB) -Step #0 - "Install requirements": Downloading google-cloud-aiplatform (8.9MiB) -Step #0 - "Install requirements": Downloading cryptography (4.5MiB) -Step #0 - "Install requirements": Downloading sqlalchemy (3.1MiB) -Step #0 - "Install requirements": Downloading grpcio (6.5MiB) -Step #0 - "Install requirements": Downloading pydantic-core (2.0MiB) -Step #0 - "Install requirements": Downloading aiohttp (1.6MiB) -Step #0 - "Install requirements": Downloading google-adk (2.7MiB) -Step #0 - "Install requirements": Downloading google-cloud-discoveryengine (3.2MiB) -Step #0 - "Install requirements": Built toolbox-core @ file:///workspace/packages/toolbox-core -Step #0 - "Install requirements": Downloaded pydantic-core -Step #0 - "Install requirements": Downloaded aiohttp -Step #0 - "Install requirements": Downloaded sqlalchemy -Step #0 - "Install requirements": Downloaded grpcio -Step #0 - "Install requirements": Downloaded cryptography -Step #0 - "Install requirements": Downloaded google-adk -Step #0 - "Install requirements": Downloaded google-api-python-client -Step #0 - "Install requirements": Downloaded google-cloud-discoveryengine -Step #0 - "Install requirements": Downloaded pyarrow -Step #0 - "Install requirements": Downloaded google-cloud-aiplatform -Step #0 - "Install requirements": Prepared 127 packages in 4.20s -Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. -Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. -Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. -Step #0 - "Install requirements": Installed 127 packages in 2.16s -Step #0 - "Install requirements": + aiohappyeyeballs==2.6.2 -Step #0 - "Install requirements": + aiohttp==3.14.1 -Step #0 - "Install requirements": + aiosignal==1.4.0 -Step #0 - "Install requirements": + aiosqlite==0.22.1 -Step #0 - "Install requirements": + alembic==1.18.5 -Step #0 - "Install requirements": + annotated-doc==0.0.4 -Step #0 - "Install requirements": + annotated-types==0.7.0 -Step #0 - "Install requirements": + anyio==4.14.1 -Step #0 - "Install requirements": + async-timeout==5.0.1 -Step #0 - "Install requirements": + attrs==26.1.0 -Step #0 - "Install requirements": + authlib==1.7.2 -Step #0 - "Install requirements": + certifi==2026.6.17 -Step #0 - "Install requirements": + cffi==2.0.0 -Step #0 - "Install requirements": + charset-normalizer==3.4.7 -Step #0 - "Install requirements": + click==8.4.2 -Step #0 - "Install requirements": + cloudpickle==3.1.2 -Step #0 - "Install requirements": + cryptography==49.0.0 -Step #0 - "Install requirements": + deprecated==1.3.1 -Step #0 - "Install requirements": + distro==1.9.0 -Step #0 - "Install requirements": + docstring-parser==0.18.0 -Step #0 - "Install requirements": + exceptiongroup==1.3.1 -Step #0 - "Install requirements": + fastapi==0.138.2 -Step #0 - "Install requirements": + frozenlist==1.8.0 -Step #0 - "Install requirements": + google-adk==1.34.1 -Step #0 - "Install requirements": + google-api-core==2.31.0 -Step #0 - "Install requirements": + google-api-python-client==2.198.0 -Step #0 - "Install requirements": + google-auth==2.53.0 -Step #0 - "Install requirements": + google-auth-httplib2==0.4.0 -Step #0 - "Install requirements": + google-auth-oauthlib==1.4.0 -Step #0 - "Install requirements": + google-cloud-aiplatform==1.158.0 -Step #0 - "Install requirements": + google-cloud-appengine-logging==1.10.0 -Step #0 - "Install requirements": + google-cloud-audit-log==0.6.0 -Step #0 - "Install requirements": + google-cloud-bigquery==3.42.1 -Step #0 - "Install requirements": + google-cloud-bigquery-storage==2.39.0 -Step #0 - "Install requirements": + google-cloud-bigtable==2.40.0 -Step #0 - "Install requirements": + google-cloud-core==2.6.0 -Step #0 - "Install requirements": + google-cloud-dataplex==2.20.0 -Step #0 - "Install requirements": + google-cloud-discoveryengine==0.13.12 -Step #0 - "Install requirements": + google-cloud-iam==2.24.0 -Step #0 - "Install requirements": + google-cloud-logging==3.16.0 -Step #0 - "Install requirements": + google-cloud-monitoring==2.31.0 -Step #0 - "Install requirements": + google-cloud-pubsub==2.39.0 -Step #0 - "Install requirements": + google-cloud-resource-manager==1.18.0 -Step #0 - "Install requirements": + google-cloud-secret-manager==2.29.0 -Step #0 - "Install requirements": + google-cloud-spanner==3.69.0 -Step #0 - "Install requirements": + google-cloud-speech==2.40.0 -Step #0 - "Install requirements": + google-cloud-storage==3.12.0 -Step #0 - "Install requirements": + google-cloud-trace==1.20.0 -Step #0 - "Install requirements": + google-crc32c==1.8.0 -Step #0 - "Install requirements": + google-genai==1.75.0 -Step #0 - "Install requirements": + google-resumable-media==2.10.0 -Step #0 - "Install requirements": + googleapis-common-protos==1.75.0 -Step #0 - "Install requirements": + graphviz==0.21 -Step #0 - "Install requirements": + greenlet==3.5.3 -Step #0 - "Install requirements": + grpc-google-iam-v1==0.14.4 -Step #0 - "Install requirements": + grpc-interceptor==0.15.4 -Step #0 - "Install requirements": + grpcio==1.81.1 -Step #0 - "Install requirements": + grpcio-status==1.81.1 -Step #0 - "Install requirements": + h11==0.16.0 -Step #0 - "Install requirements": + httpcore==1.0.9 -Step #0 - "Install requirements": + httplib2==0.32.0 -Step #0 - "Install requirements": + httpx==0.28.1 -Step #0 - "Install requirements": + httpx-sse==0.4.3 -Step #0 - "Install requirements": + idna==3.18 -Step #0 - "Install requirements": + importlib-metadata==8.7.1 -Step #0 - "Install requirements": + joserfc==1.7.2 -Step #0 - "Install requirements": + jsonschema==4.26.0 -Step #0 - "Install requirements": + jsonschema-specifications==2025.9.1 -Step #0 - "Install requirements": + mako==1.3.12 -Step #0 - "Install requirements": + markupsafe==3.0.3 -Step #0 - "Install requirements": + mcp==1.28.1 -Step #0 - "Install requirements": + mmh3==5.2.1 -Step #0 - "Install requirements": + multidict==6.7.1 -Step #0 - "Install requirements": + oauthlib==3.3.1 -Step #0 - "Install requirements": + opentelemetry-api==1.41.1 -Step #0 - "Install requirements": + opentelemetry-exporter-gcp-logging==1.12.0a0 -Step #0 - "Install requirements": + opentelemetry-exporter-gcp-monitoring==1.9.0a0 -Step #0 - "Install requirements": + opentelemetry-exporter-gcp-trace==1.12.0 -Step #0 - "Install requirements": + opentelemetry-exporter-otlp-proto-common==1.41.1 -Step #0 - "Install requirements": + opentelemetry-exporter-otlp-proto-http==1.41.1 -Step #0 - "Install requirements": + opentelemetry-proto==1.41.1 -Step #0 - "Install requirements": + opentelemetry-resourcedetector-gcp==1.12.0a0 -Step #0 - "Install requirements": + opentelemetry-sdk==1.41.1 -Step #0 - "Install requirements": + opentelemetry-semantic-conventions==0.62b1 -Step #0 - "Install requirements": + packaging==26.2 -Step #0 - "Install requirements": + propcache==0.5.2 -Step #0 - "Install requirements": + proto-plus==1.28.0 -Step #0 - "Install requirements": + protobuf==6.33.6 -Step #0 - "Install requirements": + pyarrow==24.0.0 -Step #0 - "Install requirements": + pyasn1==0.6.3 -Step #0 - "Install requirements": + pyasn1-modules==0.4.2 -Step #0 - "Install requirements": + pycparser==3.0 -Step #0 - "Install requirements": + pydantic==2.13.4 -Step #0 - "Install requirements": + pydantic-core==2.46.4 -Step #0 - "Install requirements": + pydantic-settings==2.14.2 -Step #0 - "Install requirements": + pyjwt==2.13.0 -Step #0 - "Install requirements": + pyopenssl==26.3.0 -Step #0 - "Install requirements": + pyparsing==3.3.2 -Step #0 - "Install requirements": + python-dateutil==2.9.0.post0 -Step #0 - "Install requirements": + python-dotenv==1.2.2 -Step #0 - "Install requirements": + python-multipart==0.0.32 -Step #0 - "Install requirements": + pyyaml==6.0.3 -Step #0 - "Install requirements": + referencing==0.37.0 -Step #0 - "Install requirements": + requests==2.34.2 -Step #0 - "Install requirements": + requests-oauthlib==2.0.0 -Step #0 - "Install requirements": + rpds-py==0.30.0 -Step #0 - "Install requirements": + six==1.17.0 -Step #0 - "Install requirements": + sniffio==1.3.1 -Step #0 - "Install requirements": + sqlalchemy==2.0.51 -Step #0 - "Install requirements": + sqlalchemy-spanner==1.19.0 -Step #0 - "Install requirements": + sqlparse==0.5.5 -Step #0 - "Install requirements": + sse-starlette==3.4.5 -Step #0 - "Install requirements": + starlette==0.52.1 -Step #0 - "Install requirements": + tenacity==9.1.4 -Step #0 - "Install requirements": + tomli==2.4.1 -Step #0 - "Install requirements": + toolbox-core==1.1.0 (from file:///workspace/packages/toolbox-core) -Step #0 - "Install requirements": + typing-extensions==4.15.0 -Step #0 - "Install requirements": + typing-inspection==0.4.2 -Step #0 - "Install requirements": + tzlocal==5.4.4 -Step #0 - "Install requirements": + uritemplate==4.2.0 -Step #0 - "Install requirements": + urllib3==2.7.0 -Step #0 - "Install requirements": + uvicorn==0.49.0 -Step #0 - "Install requirements": + watchdog==6.0.0 -Step #0 - "Install requirements": + websockets==15.0.1 -Step #0 - "Install requirements": + wrapt==2.2.2 -Step #0 - "Install requirements": + yarl==1.24.2 -Step #0 - "Install requirements": + zipp==4.1.0 -Step #0 - "Install requirements": Using Python 3.10.20 environment at: /workspace/venv -Step #0 - "Install requirements": Resolved 162 packages in 1.77s -Step #0 - "Install requirements": Building toolbox-adk @ file:///workspace/packages/toolbox-adk -Step #0 - "Install requirements": Downloading jedi (4.7MiB) -Step #0 - "Install requirements": Downloading pygments (1.2MiB) -Step #0 - "Install requirements": Downloading ast-serialize (1.2MiB) -Step #0 - "Install requirements": Downloading mypy (14.3MiB) -Step #0 - "Install requirements": Downloading black (1.8MiB) -Step #0 - "Install requirements": Downloading numpy (15.6MiB) -Step #0 - "Install requirements": Downloaded ast-serialize -Step #0 - "Install requirements": Built toolbox-adk @ file:///workspace/packages/toolbox-adk -Step #0 - "Install requirements": Downloaded black -Step #0 - "Install requirements": Downloaded pygments -Step #0 - "Install requirements": Downloaded numpy -Step #0 - "Install requirements": Downloaded mypy -Step #0 - "Install requirements": Downloaded jedi -Step #0 - "Install requirements": Prepared 35 packages in 2.36s -Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. -Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. -Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. -Step #0 - "Install requirements": Installed 35 packages in 1.39s -Step #0 - "Install requirements": + ast-serialize==0.5.0 -Step #0 - "Install requirements": + asttokens==3.0.1 -Step #0 - "Install requirements": + backports-asyncio-runner==1.2.0 -Step #0 - "Install requirements": + black==26.5.1 -Step #0 - "Install requirements": + coverage==7.14.3 -Step #0 - "Install requirements": + decorator==5.3.1 -Step #0 - "Install requirements": + executing==2.2.1 -Step #0 - "Install requirements": + iniconfig==2.3.0 -Step #0 - "Install requirements": + ipython==8.39.0 -Step #0 - "Install requirements": + isort==8.0.1 -Step #0 - "Install requirements": + jedi==0.20.0 -Step #0 - "Install requirements": + librt==0.12.0 -Step #0 - "Install requirements": + matplotlib-inline==0.2.2 -Step #0 - "Install requirements": + mypy==2.1.0 -Step #0 - "Install requirements": + mypy-extensions==1.1.0 -Step #0 - "Install requirements": + numpy==2.1.3 -Step #0 - "Install requirements": + parso==0.8.7 -Step #0 - "Install requirements": + pathspec==1.1.1 -Step #0 - "Install requirements": + pexpect==4.9.0 -Step #0 - "Install requirements": + platformdirs==4.10.0 -Step #0 - "Install requirements": + pluggy==1.6.0 -Step #0 - "Install requirements": + prompt-toolkit==3.0.52 -Step #0 - "Install requirements": + ptyprocess==0.7.0 -Step #0 - "Install requirements": + pure-eval==0.2.3 -Step #0 - "Install requirements": + pygments==2.20.0 -Step #0 - "Install requirements": + pytest==9.0.3 -Step #0 - "Install requirements": + pytest-asyncio==1.4.0 -Step #0 - "Install requirements": + pytest-cov==7.1.0 -Step #0 - "Install requirements": + pytest-mock==3.15.1 -Step #0 - "Install requirements": + pytokens==0.4.1 -Step #0 - "Install requirements": + stack-data==0.6.3 -Step #0 - "Install requirements": + tokenize-rt==6.2.0 -Step #0 - "Install requirements": + toolbox-adk==1.0.1 (from file:///workspace/packages/toolbox-adk) -Step #0 - "Install requirements": + traitlets==5.15.1 -Step #0 - "Install requirements": + wcwidth==0.8.2 -Finished Step #0 - "Install requirements" -Starting Step #1 - "Run integration tests" -Step #1 - "Run integration tests": Already have image (with digest): python:3.10 -Step #1 - "Run integration tests": ============================= test session starts ============================== -Step #1 - "Run integration tests": platform linux -- Python 3.10.20, pytest-9.0.3, pluggy-1.6.0 -Step #1 - "Run integration tests": rootdir: /workspace/packages/toolbox-adk -Step #1 - "Run integration tests": configfile: pyproject.toml -Step #1 - "Run integration tests": plugins: cov-7.1.0, mock-3.15.1, asyncio-1.4.0, anyio-4.14.1 -Step #1 - "Run integration tests": asyncio: mode=strict, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function -Step #1 - "Run integration tests": collected 118 items -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/test_integration.py EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEsEE [ 28%] -Step #1 - "Run integration tests": EEEEEEEEEEEEEEEEEEEEEEEEEEEEEs [ 54%] -Step #1 - "Run integration tests": tests/unit/test_client.py .............. [ 66%] -Step #1 - "Run integration tests": tests/unit/test_credentials.py ................ [ 79%] -Step #1 - "Run integration tests": tests/unit/test_tool.py .............. [ 91%] -Step #1 - "Run integration tests": tests/unit/test_toolset.py .......... [100%] -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ==================================== ERRORS ==================================== -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_and_run[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": ---------------------------- Captured stdout setup ----------------------------- -Step #1 - "Run integration tests": Downloading toolbox binary from gcs bucket... -Step #1 - "Run integration tests": Blob mcp-v202606/linux/amd64/toolbox downloaded to toolbox. -Step #1 - "Run integration tests": Toolbox binary downloaded successfully. -Step #1 - "Run integration tests": Opening toolbox server process... -Step #1 - "Run integration tests": Flag --tools-file has been deprecated, please use --config instead -Step #1 - "Run integration tests": 2026-06-30T16:37:26.660050094Z INFO "Starting MCP Toolbox for Databases version 1.5.0+dev.linux.amd64.927f274" -Step #1 - "Run integration tests": Flag --tools-file has been deprecated, please use --config instead -Step #1 - "Run integration tests": 2026-06-30T16:37:26.667463953Z INFO "Starting MCP Toolbox for Databases version 1.5.0+dev.linux.amd64.927f274" -Step #1 - "Run integration tests": 2026-06-30T16:37:27.126752855Z INFO "Initialized 1 sources: my-cloud-sql-pg-source" -Step #1 - "Run integration tests": 2026-06-30T16:37:27.126845111Z INFO "Initialized 2 authServices: my-test-auth, my-test-auth2" -Step #1 - "Run integration tests": 2026-06-30T16:37:27.12686228Z INFO "Initialized 0 embeddingModels: " -Step #1 - "Run integration tests": 2026-06-30T16:37:27.126918805Z INFO "Initialized 7 tools: get-row-by-content-auth, search-rows, process-data, get-n-rows, get-row-by-id, get-row-by-id-auth, get-row-by-email-auth" -Step #1 - "Run integration tests": 2026-06-30T16:37:27.126973766Z INFO "Initialized 4 toolsets: default, my-toolset-2, my-toolset-3, my-toolset" -Step #1 - "Run integration tests": 2026-06-30T16:37:27.127210257Z INFO "Initialized 0 prompts: " -Step #1 - "Run integration tests": 2026-06-30T16:37:27.127230943Z INFO "Initialized 1 promptsets: default" -Step #1 - "Run integration tests": 2026-06-30T16:37:27.134652007Z INFO "Server ready to serve!" -Step #1 - "Run integration tests": 2026-06-30T16:37:27.145597663Z INFO "Initialized 1 sources: my-cloud-sql-pg-source" -Step #1 - "Run integration tests": 2026-06-30T16:37:27.145713842Z INFO "Initialized 2 authServices: my-test-auth, my-test-auth2" -Step #1 - "Run integration tests": 2026-06-30T16:37:27.145732758Z INFO "Initialized 0 embeddingModels: " -Step #1 - "Run integration tests": 2026-06-30T16:37:27.14580289Z INFO "Initialized 7 tools: search-rows, process-data, get-n-rows, get-row-by-id, get-row-by-id-auth, get-row-by-email-auth, get-row-by-content-auth" -Step #1 - "Run integration tests": 2026-06-30T16:37:27.145859554Z INFO "Initialized 4 toolsets: default, my-toolset, my-toolset-2, my-toolset-3" -Step #1 - "Run integration tests": 2026-06-30T16:37:27.145884124Z INFO "Initialized 0 prompts: " -Step #1 - "Run integration tests": 2026-06-30T16:37:27.145906852Z INFO "Initialized 1 promptsets: default" -Step #1 - "Run integration tests": 2026-06-30T16:37:27.153713207Z INFO "Server ready to serve!" -Step #1 - "Run integration tests": Checking if both toolbox servers are successfully started... -Step #1 - "Run integration tests": Toolbox servers started successfully. -Step #1 - "Run integration tests": ---------------------------- Captured stderr setup ----------------------------- -Step #1 - "Run integration tests": 2026-06-30T16:37:27.127288211Z WARN "Flag --enable-draft-specs is active. Please note that draft specs are subject to breaking changes and will be completely removed (not redirected) once stable MCP specifications are released. Do not use this configuration in production." -Step #1 - "Run integration tests": 2026-06-30T16:37:27.127355512Z WARN "wildcard (*) allows any website to access the resources. This creates a security risk regardless of whether you are in a production or local development environment. Recommended to use --allowed-origins with specific local addresses." -Step #1 - "Run integration tests": 2026-06-30T16:37:27.127467746Z WARN "wildcard (*) hosts allow any domain to access this resource, making it vulnerable to DNS rebinding attacks regardless of whether you are in a production or local development environment. For improved security, use the --allowed-hosts flag to specify trusted domains." -Step #1 - "Run integration tests": 2026-06-30T16:37:27.145973651Z WARN "wildcard (*) allows any website to access the resources. This creates a security risk regardless of whether you are in a production or local development environment. Recommended to use --allowed-origins with specific local addresses." -Step #1 - "Run integration tests": 2026-06-30T16:37:27.146069424Z WARN "wildcard (*) hosts allow any domain to access this resource, making it vulnerable to DNS rebinding attacks regardless of whether you are in a production or local development environment. For improved security, use the --allowed-hosts flag to specify trusted domains." -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_with_default_protocol[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_with_explicit_protocol[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_partial_loading_by_names[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_bound_params_e2e[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_3lo_flow_simulation[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_manual_token_integration[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_manual_credentials_integration[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_api_key_integration[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_adk_integration_optional_params[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_header_collision[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_specific[http://localhost:5000-my-toolset-1-expected_tools0] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_specific[http://localhost:5000-my-toolset-2-2-expected_tools1] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_default[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _____ ERROR at setup of TestBasicE2E.test_run_tool[http://localhost:5000] ______ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_run_tool_missing_params[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_run_tool_wrong_param_type[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": ___ ERROR at setup of TestBindParams.test_bind_params[http://localhost:5000] ___ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestBindParams.test_bind_params_callable[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_tool_unauth_with_auth[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_multiple_tools_unauth_with_auth[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_multiple_tools_partial_auth_usage[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": ___ ERROR at setup of TestAuth.test_run_tool_no_auth[http://localhost:5000] ____ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": __ ERROR at setup of TestAuth.test_run_tool_wrong_auth[http://localhost:5000] __ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _____ ERROR at setup of TestAuth.test_run_tool_auth[http://localhost:5000] _____ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": __ ERROR at setup of TestAuth.test_run_tool_async_auth[http://localhost:5000] __ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_optional_params_omitted[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_all_valid_params[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_missing_required_param[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestMapParams.test_run_tool_with_map_params[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestMapParams.test_run_tool_with_wrong_map_value_type[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5000' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_and_run[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_with_default_protocol[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_with_explicit_protocol[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_partial_loading_by_names[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_bound_params_e2e[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_3lo_flow_simulation[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_manual_token_integration[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_manual_credentials_integration[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_api_key_integration[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_adk_integration_optional_params[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_header_collision[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_specific[http://localhost:5001-my-toolset-1-expected_tools0] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_specific[http://localhost:5001-my-toolset-2-2-expected_tools1] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_default[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _____ ERROR at setup of TestBasicE2E.test_run_tool[http://localhost:5001] ______ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_run_tool_missing_params[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_run_tool_wrong_param_type[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": ___ ERROR at setup of TestBindParams.test_bind_params[http://localhost:5001] ___ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestBindParams.test_bind_params_callable[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_tool_unauth_with_auth[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_multiple_tools_unauth_with_auth[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_multiple_tools_partial_auth_usage[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": ___ ERROR at setup of TestAuth.test_run_tool_no_auth[http://localhost:5001] ____ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": __ ERROR at setup of TestAuth.test_run_tool_wrong_auth[http://localhost:5001] __ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _____ ERROR at setup of TestAuth.test_run_tool_auth[http://localhost:5001] _____ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": __ ERROR at setup of TestAuth.test_run_tool_async_auth[http://localhost:5001] __ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_optional_params_omitted[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_all_valid_params[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_missing_required_param[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestMapParams.test_run_tool_with_map_params[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": _ ERROR at setup of TestMapParams.test_run_tool_with_wrong_map_value_type[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_server_url = 'http://localhost:5001' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(autouse=True) -Step #1 - "Run integration tests": def patch_toolbox_client_url(toolbox_server_url): -Step #1 - "Run integration tests": > from toolbox_adk.client import ToolboxToolset -Step #1 - "Run integration tests": E ImportError: cannot import name 'ToolboxToolset' from 'toolbox_adk.client' (/workspace/packages/toolbox-adk/src/toolbox_adk/client.py) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:210: ImportError -Step #1 - "Run integration tests": =============================== warnings summary =============================== -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255 -Step #1 - "Run integration tests": /workspace/venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255: FutureWarning: You are using a Python version (3.10.20) which Google will stop supporting in new releases of google.api_core once it reaches its end of life (2026-10-04). Please upgrade to the latest Python version, or at least Python 3.11, to continue receiving updates for google.api_core past that date. -Step #1 - "Run integration tests": warnings.warn(message, FutureWarning) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255 -Step #1 - "Run integration tests": /workspace/venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255: FutureWarning: You are using a Python version (3.10.20) which Google will stop supporting in new releases of google.cloud.secretmanager_v1 once it reaches its end of life (2026-10-04). Please upgrade to the latest Python version, or at least Python 3.11, to continue receiving updates for google.cloud.secretmanager_v1 past that date. -Step #1 - "Run integration tests": warnings.warn(message, FutureWarning) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/unit/test_credentials.py::TestCredentialStrategy::test_from_adk_auth_config -Step #1 - "Run integration tests": tests/unit/test_tool.py::TestToolboxTool::test_3lo_request_credential_when_missing -Step #1 - "Run integration tests": tests/unit/test_tool.py::TestToolboxTool::test_3lo_uses_existing_credential -Step #1 - "Run integration tests": tests/unit/test_tool.py::TestToolboxTool::test_3lo_exception_reraise -Step #1 - "Run integration tests": tests/unit/test_tool.py::TestToolboxTool::test_3lo_exception_fallback -Step #1 - "Run integration tests": /workspace/venv/lib/python3.10/site-packages/google/adk/auth/auth_tool.py:94: DeprecationWarning: This method is deprecated. Use credential_key instead. -Step #1 - "Run integration tests": self.credential_key = self.get_credential_key() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html -Step #1 - "Run integration tests": ================================ tests coverage ================================ -Step #1 - "Run integration tests": _______________ coverage: platform linux, python 3.10.20-final-0 _______________ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": Name Stmts Miss Cover -Step #1 - "Run integration tests": ---------------------------------------------------- -Step #1 - "Run integration tests": src/toolbox_adk/__init__.py 6 0 100% -Step #1 - "Run integration tests": src/toolbox_adk/client.py 79 2 97% -Step #1 - "Run integration tests": src/toolbox_adk/credentials.py 75 3 96% -Step #1 - "Run integration tests": src/toolbox_adk/tool.py 128 9 93% -Step #1 - "Run integration tests": src/toolbox_adk/toolset.py 55 2 96% -Step #1 - "Run integration tests": src/toolbox_adk/version.py 1 0 100% -Step #1 - "Run integration tests": ---------------------------------------------------- -Step #1 - "Run integration tests": TOTAL 344 16 95% -Step #1 - "Run integration tests": Required test coverage of 90% reached. Total coverage: 95.35% -Step #1 - "Run integration tests": =========================== short test summary info ============================ -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_and_run[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_with_default_protocol[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_with_explicit_protocol[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_partial_loading_by_names[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_bound_params_e2e[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_3lo_flow_simulation[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_manual_token_integration[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_manual_credentials_integration[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_api_key_integration[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_adk_integration_optional_params[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_header_collision[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_specific[http://localhost:5000-my-toolset-1-expected_tools0] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_specific[http://localhost:5000-my-toolset-2-2-expected_tools1] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_default[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool_missing_params[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool_wrong_param_type[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBindParams::test_bind_params[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBindParams::test_bind_params_callable[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_unauth_with_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_multiple_tools_unauth_with_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_multiple_tools_partial_auth_usage[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_no_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_wrong_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_async_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_optional_params_omitted[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_all_valid_params[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_missing_required_param[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestMapParams::test_run_tool_with_map_params[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestMapParams::test_run_tool_with_wrong_map_value_type[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_and_run[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_with_default_protocol[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_with_explicit_protocol[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_partial_loading_by_names[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_bound_params_e2e[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_3lo_flow_simulation[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_manual_token_integration[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_manual_credentials_integration[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_api_key_integration[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_adk_integration_optional_params[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_header_collision[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_specific[http://localhost:5001-my-toolset-1-expected_tools0] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_specific[http://localhost:5001-my-toolset-2-2-expected_tools1] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_default[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool_missing_params[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool_wrong_param_type[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBindParams::test_bind_params[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBindParams::test_bind_params_callable[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_unauth_with_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_multiple_tools_unauth_with_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_multiple_tools_partial_auth_usage[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_no_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_wrong_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_async_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_optional_params_omitted[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_all_valid_params[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_missing_required_param[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestMapParams::test_run_tool_with_map_params[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestMapParams::test_run_tool_with_wrong_map_value_type[http://localhost:5001] -Step #1 - "Run integration tests": ============ 54 passed, 2 skipped, 7 warnings, 62 errors in 24.40s ============= -Finished Step #1 - "Run integration tests" -ERROR -ERROR: build step 1 "python:3.10" failed: step exited with non-zero status: 1 --------------------------------------------------------------------------------- diff --git a/core_fail.txt b/core_fail.txt deleted file mode 100644 index 14653bbc0..000000000 --- a/core_fail.txt +++ /dev/null @@ -1,368 +0,0 @@ - -To live stream log output for this build, please ensure the grpc module is installed. Run: - pip install grpcio -and set: - export CLOUDSDK_PYTHON_SITEPACKAGES=1 - ------------------------------ REMOTE BUILD OUTPUT ------------------------------ -starting build "f5c1be4c-c32d-4e5d-80fb-c97ac998bafa" -FETCHSOURCE -From https://github.com/googleapis/mcp-toolbox-sdk-python - * branch 0c6698324c00fc78b2ffb1207763d9a693598030 -> FETCH_HEAD -HEAD is now at 0c66983 chore: test with mcp-v202606 branch to fix unknown flag error -GitCommit: -0c6698324c00fc78b2ffb1207763d9a693598030 -BUILD -Starting Step #0 - "Install requirements" -Step #0 - "Install requirements": Pulling image: python:3.10 -Step #0 - "Install requirements": 3.10: Pulling from library/python -Step #0 - "Install requirements": aa3e9ef32f73: Pulling fs layer -Step #0 - "Install requirements": 3f59c84a7863: Pulling fs layer -Step #0 - "Install requirements": 30d0db852850: Pulling fs layer -Step #0 - "Install requirements": 0252e6abaf0f: Pulling fs layer -Step #0 - "Install requirements": ccf7e73781a2: Pulling fs layer -Step #0 - "Install requirements": de50cca5f6c1: Pulling fs layer -Step #0 - "Install requirements": e2fc6298fd6c: Pulling fs layer -Step #0 - "Install requirements": e2fc6298fd6c: Waiting -Step #0 - "Install requirements": ccf7e73781a2: Verifying Checksum -Step #0 - "Install requirements": ccf7e73781a2: Download complete -Step #0 - "Install requirements": de50cca5f6c1: Download complete -Step #0 - "Install requirements": 3f59c84a7863: Verifying Checksum -Step #0 - "Install requirements": 3f59c84a7863: Download complete -Step #0 - "Install requirements": e2fc6298fd6c: Verifying Checksum -Step #0 - "Install requirements": e2fc6298fd6c: Download complete -Step #0 - "Install requirements": aa3e9ef32f73: Verifying Checksum -Step #0 - "Install requirements": aa3e9ef32f73: Download complete -Step #0 - "Install requirements": 30d0db852850: Verifying Checksum -Step #0 - "Install requirements": 30d0db852850: Download complete -Step #0 - "Install requirements": 0252e6abaf0f: Verifying Checksum -Step #0 - "Install requirements": 0252e6abaf0f: Download complete -Step #0 - "Install requirements": aa3e9ef32f73: Pull complete -Step #0 - "Install requirements": 3f59c84a7863: Pull complete -Step #0 - "Install requirements": 30d0db852850: Pull complete -Step #0 - "Install requirements": 0252e6abaf0f: Pull complete -Step #0 - "Install requirements": ccf7e73781a2: Pull complete -Step #0 - "Install requirements": de50cca5f6c1: Pull complete -Step #0 - "Install requirements": e2fc6298fd6c: Pull complete -Step #0 - "Install requirements": Digest: sha256:a359ba8614a261091f0b96f6d308f0acfe0af7b5007ed945a8d5c62ad7acb241 -Step #0 - "Install requirements": Status: Downloaded newer image for python:3.10 -Step #0 - "Install requirements": docker.io/library/python:3.10 -Step #0 - "Install requirements": Collecting uv -Step #0 - "Install requirements": Downloading uv-0.11.26-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.3 MB) -Step #0 - "Install requirements": ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 26.3/26.3 MB 59.1 MB/s eta 0:00:00 -Step #0 - "Install requirements": Installing collected packages: uv -Step #0 - "Install requirements": Successfully installed uv-0.11.26 -Step #0 - "Install requirements": WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv -Step #0 - "Install requirements": -Step #0 - "Install requirements": [notice] A new release of pip is available: 23.0.1 -> 26.1.2 -Step #0 - "Install requirements": [notice] To update, run: pip install --upgrade pip -Step #0 - "Install requirements": Using CPython 3.10.20 interpreter at: /usr/local/bin/python3 -Step #0 - "Install requirements": Creating virtual environment at: /workspace/venv -Step #0 - "Install requirements": Activate with: source /workspace/venv/bin/activate -Step #0 - "Install requirements": Using Python 3.10.20 environment at: /workspace/venv -Step #0 - "Install requirements": Resolved 1 package in 175ms -Step #0 - "Install requirements": Downloading uv (25.0MiB) -Step #0 - "Install requirements": Downloaded uv -Step #0 - "Install requirements": Prepared 1 package in 538ms -Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. -Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. -Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. -Step #0 - "Install requirements": Installed 1 package in 72ms -Step #0 - "Install requirements": + uv==0.11.26 -Step #0 - "Install requirements": Using Python 3.10.20 environment at: /workspace/venv -Step #0 - "Install requirements": Resolved 90 packages in 1.95s -Step #0 - "Install requirements": Building toolbox-core @ file:///workspace/packages/toolbox-core -Step #0 - "Install requirements": Downloading aiohttp (1.6MiB) -Step #0 - "Install requirements": Downloading grpcio (6.5MiB) -Step #0 - "Install requirements": Downloading pygments (1.2MiB) -Step #0 - "Install requirements": Downloading numpy (15.6MiB) -Step #0 - "Install requirements": Downloading mypy (14.3MiB) -Step #0 - "Install requirements": Downloading ast-serialize (1.2MiB) -Step #0 - "Install requirements": Downloading pydantic-core (2.0MiB) -Step #0 - "Install requirements": Downloading cryptography (4.5MiB) -Step #0 - "Install requirements": Downloading jedi (4.7MiB) -Step #0 - "Install requirements": Downloading black (1.8MiB) -Step #0 - "Install requirements": Built toolbox-core @ file:///workspace/packages/toolbox-core -Step #0 - "Install requirements": Downloaded ast-serialize -Step #0 - "Install requirements": Downloaded pydantic-core -Step #0 - "Install requirements": Downloaded aiohttp -Step #0 - "Install requirements": Downloaded black -Step #0 - "Install requirements": Downloaded grpcio -Step #0 - "Install requirements": Downloaded cryptography -Step #0 - "Install requirements": Downloaded pygments -Step #0 - "Install requirements": Downloaded numpy -Step #0 - "Install requirements": Downloaded mypy -Step #0 - "Install requirements": Downloaded jedi -Step #0 - "Install requirements": Prepared 90 packages in 2.82s -Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. -Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. -Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. -Step #0 - "Install requirements": Installed 90 packages in 1.36s -Step #0 - "Install requirements": + aiohappyeyeballs==2.6.2 -Step #0 - "Install requirements": + aiohttp==3.14.1 -Step #0 - "Install requirements": + aioresponses==0.7.8 -Step #0 - "Install requirements": + aiosignal==1.4.0 -Step #0 - "Install requirements": + annotated-types==0.7.0 -Step #0 - "Install requirements": + ast-serialize==0.5.0 -Step #0 - "Install requirements": + asttokens==3.0.1 -Step #0 - "Install requirements": + async-timeout==5.0.1 -Step #0 - "Install requirements": + attrs==26.1.0 -Step #0 - "Install requirements": + backports-asyncio-runner==1.2.0 -Step #0 - "Install requirements": + black==26.5.1 -Step #0 - "Install requirements": + certifi==2026.6.17 -Step #0 - "Install requirements": + cffi==2.0.0 -Step #0 - "Install requirements": + charset-normalizer==3.4.7 -Step #0 - "Install requirements": + click==8.4.2 -Step #0 - "Install requirements": + coverage==7.14.3 -Step #0 - "Install requirements": + cryptography==49.0.0 -Step #0 - "Install requirements": + decorator==5.3.1 -Step #0 - "Install requirements": + deprecated==1.3.1 -Step #0 - "Install requirements": + exceptiongroup==1.3.1 -Step #0 - "Install requirements": + executing==2.2.1 -Step #0 - "Install requirements": + frozenlist==1.8.0 -Step #0 - "Install requirements": + google-api-core==2.31.0 -Step #0 - "Install requirements": + google-auth==2.55.1 -Step #0 - "Install requirements": + google-cloud-core==2.6.0 -Step #0 - "Install requirements": + google-cloud-secret-manager==2.28.0 -Step #0 - "Install requirements": + google-cloud-storage==3.10.1 -Step #0 - "Install requirements": + google-crc32c==1.8.0 -Step #0 - "Install requirements": + google-resumable-media==2.10.0 -Step #0 - "Install requirements": + googleapis-common-protos==1.75.0 -Step #0 - "Install requirements": + grpc-google-iam-v1==0.14.4 -Step #0 - "Install requirements": + grpcio==1.81.1 -Step #0 - "Install requirements": + grpcio-status==1.81.1 -Step #0 - "Install requirements": + idna==3.18 -Step #0 - "Install requirements": + importlib-metadata==8.7.1 -Step #0 - "Install requirements": + iniconfig==2.3.0 -Step #0 - "Install requirements": + ipython==8.39.0 -Step #0 - "Install requirements": + isort==8.0.1 -Step #0 - "Install requirements": + jedi==0.20.0 -Step #0 - "Install requirements": + librt==0.12.0 -Step #0 - "Install requirements": + matplotlib-inline==0.2.2 -Step #0 - "Install requirements": + multidict==6.7.1 -Step #0 - "Install requirements": + mypy==2.1.0 -Step #0 - "Install requirements": + mypy-extensions==1.1.0 -Step #0 - "Install requirements": + numpy==2.1.3 -Step #0 - "Install requirements": + opentelemetry-api==1.41.1 -Step #0 - "Install requirements": + opentelemetry-exporter-otlp==1.41.1 -Step #0 - "Install requirements": + opentelemetry-exporter-otlp-proto-common==1.41.1 -Step #0 - "Install requirements": + opentelemetry-exporter-otlp-proto-grpc==1.41.1 -Step #0 - "Install requirements": + opentelemetry-exporter-otlp-proto-http==1.41.1 -Step #0 - "Install requirements": + opentelemetry-proto==1.41.1 -Step #0 - "Install requirements": + opentelemetry-sdk==1.41.1 -Step #0 - "Install requirements": + opentelemetry-semantic-conventions==0.62b1 -Step #0 - "Install requirements": + packaging==26.2 -Step #0 - "Install requirements": + parso==0.8.7 -Step #0 - "Install requirements": + pathspec==1.1.1 -Step #0 - "Install requirements": + pexpect==4.9.0 -Step #0 - "Install requirements": + platformdirs==4.10.0 -Step #0 - "Install requirements": + pluggy==1.6.0 -Step #0 - "Install requirements": + prompt-toolkit==3.0.52 -Step #0 - "Install requirements": + propcache==0.5.2 -Step #0 - "Install requirements": + proto-plus==1.28.0 -Step #0 - "Install requirements": + protobuf==6.33.6 -Step #0 - "Install requirements": + ptyprocess==0.7.0 -Step #0 - "Install requirements": + pure-eval==0.2.3 -Step #0 - "Install requirements": + pyasn1==0.6.3 -Step #0 - "Install requirements": + pyasn1-modules==0.4.2 -Step #0 - "Install requirements": + pycparser==3.0 -Step #0 - "Install requirements": + pydantic==2.13.4 -Step #0 - "Install requirements": + pydantic-core==2.46.4 -Step #0 - "Install requirements": + pygments==2.20.0 -Step #0 - "Install requirements": + pytest==9.0.3 -Step #0 - "Install requirements": + pytest-aioresponses==0.3.0 -Step #0 - "Install requirements": + pytest-asyncio==1.4.0 -Step #0 - "Install requirements": + pytest-cov==7.1.0 -Step #0 - "Install requirements": + pytest-mock==3.15.1 -Step #0 - "Install requirements": + pytokens==0.4.1 -Step #0 - "Install requirements": + requests==2.34.2 -Step #0 - "Install requirements": + stack-data==0.6.3 -Step #0 - "Install requirements": + tokenize-rt==6.2.0 -Step #0 - "Install requirements": + tomli==2.4.1 -Step #0 - "Install requirements": + toolbox-core==1.1.0 (from file:///workspace/packages/toolbox-core) -Step #0 - "Install requirements": + traitlets==5.15.1 -Step #0 - "Install requirements": + typing-extensions==4.15.0 -Step #0 - "Install requirements": + typing-inspection==0.4.2 -Step #0 - "Install requirements": + urllib3==2.7.0 -Step #0 - "Install requirements": + wcwidth==0.8.2 -Step #0 - "Install requirements": + wrapt==2.2.2 -Step #0 - "Install requirements": + yarl==1.24.2 -Step #0 - "Install requirements": + zipp==4.1.0 -Step #0 - "Install requirements": Using Python 3.10.20 environment at: /workspace/venv -Step #0 - "Install requirements": Resolved 27 packages in 133ms -Step #0 - "Install requirements": Downloading aiohttp (1.6MiB) -Step #0 - "Install requirements": Downloaded aiohttp -Step #0 - "Install requirements": Prepared 2 packages in 105ms -Step #0 - "Install requirements": Uninstalled 2 packages in 5ms -Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. -Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. -Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. -Step #0 - "Install requirements": Installed 2 packages in 24ms -Step #0 - "Install requirements": - aiohttp==3.14.1 -Step #0 - "Install requirements": + aiohttp==3.14.0 -Step #0 - "Install requirements": - google-auth==2.55.1 -Step #0 - "Install requirements": + google-auth==2.53.0 -Finished Step #0 - "Install requirements" -Starting Step #1 - "Run integration tests" -Step #1 - "Run integration tests": Already have image (with digest): python:3.10 -Step #1 - "Run integration tests": ============================= test session starts ============================== -Step #1 - "Run integration tests": platform linux -- Python 3.10.20, pytest-9.0.3, pluggy-1.6.0 -Step #1 - "Run integration tests": rootdir: /workspace/packages/toolbox-core -Step #1 - "Run integration tests": configfile: pyproject.toml -Step #1 - "Run integration tests": plugins: cov-7.1.0, aioresponses-0.3.0, mock-3.15.1, asyncio-1.4.0 -Step #1 - "Run integration tests": asyncio: mode=strict, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function -Step #1 - "Run integration tests": collected 1142 items -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/mcp_transport/test_base.py ................... [ 1%] -Step #1 - "Run integration tests": tests/mcp_transport/test_telemetry.py .................................. [ 4%] -Step #1 - "Run integration tests": ........... [ 5%] -Step #1 - "Run integration tests": tests/mcp_transport/test_v20241105.py .................................. [ 8%] -Step #1 - "Run integration tests": [ 8%] -Step #1 - "Run integration tests": tests/mcp_transport/test_v20250326.py .................................. [ 11%] -Step #1 - "Run integration tests": [ 11%] -Step #1 - "Run integration tests": tests/mcp_transport/test_v20250618.py .................................. [ 14%] -Step #1 - "Run integration tests": .... [ 14%] -Step #1 - "Run integration tests": tests/mcp_transport/test_v20251125.py .................................. [ 17%] -Step #1 - "Run integration tests": .. [ 18%] -Step #1 - "Run integration tests": tests/mcp_transport/test_v20260618.py .................. [ 19%] -Step #1 - "Run integration tests": tests/test_auth_methods.py .......... [ 20%] -Step #1 - "Run integration tests": tests/test_client.py ........................... [ 22%] -Step #1 - "Run integration tests": tests/test_e2e.py ................................... [ 25%] -Step #1 - "Run integration tests": tests/test_e2e_mcp.py .................................................. [ 30%] -Step #1 - "Run integration tests": ........................................................................ [ 36%] -Step #1 - "Run integration tests": ............. [ 37%] -Step #1 - "Run integration tests": tests/test_protocol.py ......................... [ 39%] -Step #1 - "Run integration tests": tests/test_sync_client.py ................ [ 41%] -Step #1 - "Run integration tests": tests/test_sync_e2e.py .............. [ 42%] -Step #1 - "Run integration tests": tests/test_sync_tool.py .................... [ 44%] -Step #1 - "Run integration tests": tests/test_tool.py .................................... [ 47%] -Step #1 - "Run integration tests": tests/test_utils.py ............................. [ 50%] -Step #1 - "Run integration tests": tests/mcp_transport/test_base.py ................... [ 51%] -Step #1 - "Run integration tests": tests/mcp_transport/test_telemetry.py .................................. [ 54%] -Step #1 - "Run integration tests": ........... [ 55%] -Step #1 - "Run integration tests": tests/mcp_transport/test_v20241105.py .................................. [ 58%] -Step #1 - "Run integration tests": [ 58%] -Step #1 - "Run integration tests": tests/mcp_transport/test_v20250326.py .................................. [ 61%] -Step #1 - "Run integration tests": [ 61%] -Step #1 - "Run integration tests": tests/mcp_transport/test_v20250618.py .................................. [ 64%] -Step #1 - "Run integration tests": .... [ 64%] -Step #1 - "Run integration tests": tests/mcp_transport/test_v20251125.py .................................. [ 67%] -Step #1 - "Run integration tests": .. [ 68%] -Step #1 - "Run integration tests": tests/mcp_transport/test_v20260618.py .................. [ 69%] -Step #1 - "Run integration tests": tests/test_auth_methods.py .......... [ 70%] -Step #1 - "Run integration tests": tests/test_client.py ........................... [ 72%] -Step #1 - "Run integration tests": tests/test_e2e.py ................................... [ 75%] -Step #1 - "Run integration tests": tests/test_e2e_mcp.py ....................F............................. [ 80%] -Step #1 - "Run integration tests": ........................................................................ [ 86%] -Step #1 - "Run integration tests": ............. [ 87%] -Step #1 - "Run integration tests": tests/test_protocol.py ......................... [ 89%] -Step #1 - "Run integration tests": tests/test_sync_client.py ................ [ 91%] -Step #1 - "Run integration tests": tests/test_sync_e2e.py .............. [ 92%] -Step #1 - "Run integration tests": tests/test_sync_tool.py .................... [ 94%] -Step #1 - "Run integration tests": tests/test_tool.py .................................... [ 97%] -Step #1 - "Run integration tests": tests/test_utils.py ............................. [100%] -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": =================================== FAILURES =================================== -Step #1 - "Run integration tests": ________ TestBasicE2E.test_protocol_fallback_e2e[http://localhost:5001] ________ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": async def test_protocol_fallback_e2e(self): -Step #1 - "Run integration tests": """Tests that a client using MCP_DRAFT can fallback to an older protocol against a server that doesn't support the draft version.""" -Step #1 - "Run integration tests": # The E2E server currently does not support DRAFT 2026, so this will trigger a fallback. -Step #1 - "Run integration tests": async with ToolboxClient( -Step #1 - "Run integration tests": "http://localhost:5000", protocol=Protocol.MCP_DRAFT -Step #1 - "Run integration tests": ) as client: -Step #1 - "Run integration tests": tool = await client.load_tool("get-n-rows") -Step #1 - "Run integration tests": response = await tool(num_rows="1") -Step #1 - "Run integration tests": assert "row1" in response -Step #1 - "Run integration tests": # Verify that fallback occurred by checking the transport's final protocol version -Step #1 - "Run integration tests": > assert ( -Step #1 - "Run integration tests": client._ToolboxClient__transport._protocol_version -Step #1 - "Run integration tests": != Protocol.MCP_DRAFT.value -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": E AssertionError: assert 'DRAFT-2026-v1' != 'DRAFT-2026-v1' -Step #1 - "Run integration tests": E + where 'DRAFT-2026-v1' = ._protocol_version -Step #1 - "Run integration tests": E + where = ._ToolboxClient__transport -Step #1 - "Run integration tests": E + and 'DRAFT-2026-v1' = .value -Step #1 - "Run integration tests": E + where = Protocol.MCP_DRAFT -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/test_e2e_mcp.py:113: AssertionError -Step #1 - "Run integration tests": ----------------------------- Captured stdout call ----------------------------- -Step #1 - "Run integration tests": 2026-06-30T16:37:37.047778208Z INFO "POST /mcp/ => HTTP 200 (444.092µs)" "http://localhost:5001/mcp/" "POST" "/mcp/" "127.0.0.1:47888" "localhost:5001" "http" "HTTP/1.1" 312 "Python/3.10 aiohttp/3.14.0" "" 200 "0.000444092s" 2942 -Step #1 - "Run integration tests": 2026-06-30T16:37:37.077414325Z INFO "POST /mcp/ => HTTP 200 (26.651716ms)" "http://localhost:5001/mcp/" "POST" "/mcp/" "127.0.0.1:47888" "localhost:5001" "http" "HTTP/1.1" 366 "Python/3.10 aiohttp/3.14.0" "" 200 "0.026651716s" 177 -Step #1 - "Run integration tests": =============================== warnings summary =============================== -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255 -Step #1 - "Run integration tests": /workspace/venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255: FutureWarning: You are using a Python version (3.10.20) which Google will stop supporting in new releases of google.api_core once it reaches its end of life (2026-10-04). Please upgrade to the latest Python version, or at least Python 3.11, to continue receiving updates for google.api_core past that date. -Step #1 - "Run integration tests": warnings.warn(message, FutureWarning) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255 -Step #1 - "Run integration tests": /workspace/venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255: FutureWarning: You are using a Python version (3.10.20) which Google will stop supporting in new releases of google.cloud.secretmanager_v1 once it reaches its end of life (2026-10-04). Please upgrade to the latest Python version, or at least Python 3.11, to continue receiving updates for google.cloud.secretmanager_v1 past that date. -Step #1 - "Run integration tests": warnings.warn(message, FutureWarning) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/test_tool.py:547 -Step #1 - "Run integration tests": /workspace/packages/toolbox-core/tests/test_tool.py:547: DeprecationWarning: invalid escape sequence '\(' -Step #1 - "Run integration tests": expected_error_message = "Authentication source\(s\) \`unused-auth-service\` unused by tool \`sample_tool\`." -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/test_client.py: 18 warnings -Step #1 - "Run integration tests": tests/test_e2e.py: 12 warnings -Step #1 - "Run integration tests": tests/test_e2e_mcp.py: 48 warnings -Step #1 - "Run integration tests": tests/test_sync_client.py: 8 warnings -Step #1 - "Run integration tests": tests/test_sync_e2e.py: 10 warnings -Step #1 - "Run integration tests": /workspace/packages/toolbox-core/src/toolbox_core/utils.py:56: UserWarning: This connection is using HTTP. To prevent credential exposure, please ensure all communication is sent over HTTPS. -Step #1 - "Run integration tests": warnings.warn( -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/test_sync_client.py::TestSyncClientLifecycle::test_load_tool_raises_if_loop_or_thread_none[http://localhost:5000] -Step #1 - "Run integration tests": tests/test_sync_client.py::TestSyncClientLifecycle::test_load_tool_raises_if_loop_or_thread_none[http://localhost:5001] -Step #1 - "Run integration tests": /workspace/packages/toolbox-core/tests/test_sync_client.py:342: RuntimeWarning: coroutine 'ToolboxClient.load_tool' was never awaited -Step #1 - "Run integration tests": with pytest.raises( -Step #1 - "Run integration tests": Enable tracemalloc to get traceback where the object was allocated. -Step #1 - "Run integration tests": See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/test_sync_client.py::TestSyncClientLifecycle::test_load_tool_raises_if_loop_or_thread_none[http://localhost:5000] -Step #1 - "Run integration tests": tests/test_sync_client.py::TestSyncClientLifecycle::test_load_tool_raises_if_loop_or_thread_none[http://localhost:5001] -Step #1 - "Run integration tests": /workspace/packages/toolbox-core/tests/test_sync_client.py:351: RuntimeWarning: coroutine 'ToolboxClient.load_toolset' was never awaited -Step #1 - "Run integration tests": with pytest.raises( -Step #1 - "Run integration tests": Enable tracemalloc to get traceback where the object was allocated. -Step #1 - "Run integration tests": See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html -Step #1 - "Run integration tests": ================================ tests coverage ================================ -Step #1 - "Run integration tests": _______________ coverage: platform linux, python 3.10.20-final-0 _______________ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": Name Stmts Miss Cover -Step #1 - "Run integration tests": ----------------------------------------------------------------------- -Step #1 - "Run integration tests": src/toolbox_core/__init__.py 4 0 100% -Step #1 - "Run integration tests": src/toolbox_core/auth_methods.py 59 2 97% -Step #1 - "Run integration tests": src/toolbox_core/client.py 123 2 98% -Step #1 - "Run integration tests": src/toolbox_core/exceptions.py 6 0 100% -Step #1 - "Run integration tests": src/toolbox_core/itransport.py 20 5 75% -Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/__init__.py 6 0 100% -Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/telemetry.py 153 14 91% -Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/transport_base.py 106 3 97% -Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20241105/mcp.py 132 15 89% -Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20241105/types.py 95 1 99% -Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20250326/mcp.py 145 19 87% -Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20250326/types.py 95 1 99% -Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20250618/mcp.py 135 12 91% -Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20250618/types.py 95 1 99% -Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20251125/mcp.py 135 15 89% -Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20251125/types.py 95 1 99% -Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20260618/mcp.py 128 23 82% -Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20260618/types.py 81 1 99% -Step #1 - "Run integration tests": src/toolbox_core/protocol.py 76 0 100% -Step #1 - "Run integration tests": src/toolbox_core/sync_client.py 45 0 100% -Step #1 - "Run integration tests": src/toolbox_core/sync_tool.py 67 0 100% -Step #1 - "Run integration tests": src/toolbox_core/tool.py 119 6 95% -Step #1 - "Run integration tests": src/toolbox_core/utils.py 61 0 100% -Step #1 - "Run integration tests": src/toolbox_core/version.py 1 0 100% -Step #1 - "Run integration tests": ----------------------------------------------------------------------- -Step #1 - "Run integration tests": TOTAL 1982 121 94% -Step #1 - "Run integration tests": Required test coverage of 90% reached. Total coverage: 93.90% -Step #1 - "Run integration tests": =========================== short test summary info ============================ -Step #1 - "Run integration tests": FAILED tests/test_e2e_mcp.py::TestBasicE2E::test_protocol_fallback_e2e[http://localhost:5001] -Step #1 - "Run integration tests": ================ 1 failed, 1141 passed, 103 warnings in 37.68s ================= -Finished Step #1 - "Run integration tests" -ERROR -ERROR: build step 1 "python:3.10" failed: step exited with non-zero status: 1 --------------------------------------------------------------------------------- diff --git a/full_log.txt b/full_log.txt deleted file mode 100644 index b11748914..000000000 --- a/full_log.txt +++ /dev/null @@ -1,4520 +0,0 @@ - -To live stream log output for this build, please ensure the grpc module is installed. Run: - pip install grpcio -and set: - export CLOUDSDK_PYTHON_SITEPACKAGES=1 - ------------------------------ REMOTE BUILD OUTPUT ------------------------------ -starting build "0b51f187-be73-4229-80a4-201376e3d2aa" -FETCHSOURCE -From https://github.com/googleapis/mcp-toolbox-sdk-python - * branch 28834dd4fa18f7f16826fe0eb812548ee6e0752c -> FETCH_HEAD -HEAD is now at 28834dd chore: fix integration tests url and lint errors -GitCommit: -28834dd4fa18f7f16826fe0eb812548ee6e0752c -BUILD -Starting Step #0 - "Install requirements" -Step #0 - "Install requirements": Pulling image: python:3.10 -Step #0 - "Install requirements": 3.10: Pulling from library/python -Step #0 - "Install requirements": aa3e9ef32f73: Pulling fs layer -Step #0 - "Install requirements": 3f59c84a7863: Pulling fs layer -Step #0 - "Install requirements": 30d0db852850: Pulling fs layer -Step #0 - "Install requirements": 0252e6abaf0f: Pulling fs layer -Step #0 - "Install requirements": ccf7e73781a2: Pulling fs layer -Step #0 - "Install requirements": de50cca5f6c1: Pulling fs layer -Step #0 - "Install requirements": e2fc6298fd6c: Pulling fs layer -Step #0 - "Install requirements": e2fc6298fd6c: Waiting -Step #0 - "Install requirements": ccf7e73781a2: Verifying Checksum -Step #0 - "Install requirements": ccf7e73781a2: Download complete -Step #0 - "Install requirements": e2fc6298fd6c: Verifying Checksum -Step #0 - "Install requirements": e2fc6298fd6c: Download complete -Step #0 - "Install requirements": de50cca5f6c1: Verifying Checksum -Step #0 - "Install requirements": de50cca5f6c1: Download complete -Step #0 - "Install requirements": 3f59c84a7863: Download complete -Step #0 - "Install requirements": aa3e9ef32f73: Download complete -Step #0 - "Install requirements": 30d0db852850: Verifying Checksum -Step #0 - "Install requirements": 30d0db852850: Download complete -Step #0 - "Install requirements": 0252e6abaf0f: Verifying Checksum -Step #0 - "Install requirements": 0252e6abaf0f: Download complete -Step #0 - "Install requirements": aa3e9ef32f73: Pull complete -Step #0 - "Install requirements": 3f59c84a7863: Pull complete -Step #0 - "Install requirements": 30d0db852850: Pull complete -Step #0 - "Install requirements": 0252e6abaf0f: Pull complete -Step #0 - "Install requirements": ccf7e73781a2: Pull complete -Step #0 - "Install requirements": de50cca5f6c1: Pull complete -Step #0 - "Install requirements": e2fc6298fd6c: Pull complete -Step #0 - "Install requirements": Digest: sha256:a359ba8614a261091f0b96f6d308f0acfe0af7b5007ed945a8d5c62ad7acb241 -Step #0 - "Install requirements": Status: Downloaded newer image for python:3.10 -Step #0 - "Install requirements": docker.io/library/python:3.10 -Step #0 - "Install requirements": Collecting uv -Step #0 - "Install requirements": Downloading uv-0.11.26-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.3 MB) -Step #0 - "Install requirements": ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 26.3/26.3 MB 60.6 MB/s eta 0:00:00 -Step #0 - "Install requirements": Installing collected packages: uv -Step #0 - "Install requirements": Successfully installed uv-0.11.26 -Step #0 - "Install requirements": WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv -Step #0 - "Install requirements": -Step #0 - "Install requirements": [notice] A new release of pip is available: 23.0.1 -> 26.1.2 -Step #0 - "Install requirements": [notice] To update, run: pip install --upgrade pip -Step #0 - "Install requirements": Using CPython 3.10.20 interpreter at: /usr/local/bin/python3 -Step #0 - "Install requirements": Creating virtual environment at: /workspace/venv -Step #0 - "Install requirements": Activate with: source /workspace/venv/bin/activate -Step #0 - "Install requirements": Using Python 3.10.20 environment at: /workspace/venv -Step #0 - "Install requirements": Resolved 1 package in 230ms -Step #0 - "Install requirements": Downloading uv (25.0MiB) -Step #0 - "Install requirements": Downloaded uv -Step #0 - "Install requirements": Prepared 1 package in 388ms -Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. -Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. -Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. -Step #0 - "Install requirements": Installed 1 package in 75ms -Step #0 - "Install requirements": + uv==0.11.26 -Step #0 - "Install requirements": Using Python 3.10.20 environment at: /workspace/venv -Step #0 - "Install requirements": Resolved 127 packages in 1.75s -Step #0 - "Install requirements": Building toolbox-core @ file:///workspace/packages/toolbox-core -Step #0 - "Install requirements": Downloading google-cloud-discoveryengine (3.2MiB) -Step #0 - "Install requirements": Downloading grpcio (6.5MiB) -Step #0 - "Install requirements": Downloading google-api-python-client (14.9MiB) -Step #0 - "Install requirements": Downloading pydantic-core (2.0MiB) -Step #0 - "Install requirements": Downloading pyarrow (46.6MiB) -Step #0 - "Install requirements": Downloading google-cloud-aiplatform (8.9MiB) -Step #0 - "Install requirements": Downloading aiohttp (1.6MiB) -Step #0 - "Install requirements": Downloading sqlalchemy (3.1MiB) -Step #0 - "Install requirements": Downloading google-adk (2.7MiB) -Step #0 - "Install requirements": Downloading cryptography (4.5MiB) -Step #0 - "Install requirements": Built toolbox-core @ file:///workspace/packages/toolbox-core -Step #0 - "Install requirements": Downloaded pydantic-core -Step #0 - "Install requirements": Downloaded aiohttp -Step #0 - "Install requirements": Downloaded sqlalchemy -Step #0 - "Install requirements": Downloaded grpcio -Step #0 - "Install requirements": Downloaded cryptography -Step #0 - "Install requirements": Downloaded google-adk -Step #0 - "Install requirements": Downloaded google-cloud-discoveryengine -Step #0 - "Install requirements": Downloaded google-api-python-client -Step #0 - "Install requirements": Downloaded pyarrow -Step #0 - "Install requirements": Downloaded google-cloud-aiplatform -Step #0 - "Install requirements": Prepared 127 packages in 2.44s -Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. -Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. -Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. -Step #0 - "Install requirements": Installed 127 packages in 2.07s -Step #0 - "Install requirements": + aiohappyeyeballs==2.6.2 -Step #0 - "Install requirements": + aiohttp==3.14.1 -Step #0 - "Install requirements": + aiosignal==1.4.0 -Step #0 - "Install requirements": + aiosqlite==0.22.1 -Step #0 - "Install requirements": + alembic==1.18.5 -Step #0 - "Install requirements": + annotated-doc==0.0.4 -Step #0 - "Install requirements": + annotated-types==0.7.0 -Step #0 - "Install requirements": + anyio==4.14.1 -Step #0 - "Install requirements": + async-timeout==5.0.1 -Step #0 - "Install requirements": + attrs==26.1.0 -Step #0 - "Install requirements": + authlib==1.7.2 -Step #0 - "Install requirements": + certifi==2026.6.17 -Step #0 - "Install requirements": + cffi==2.0.0 -Step #0 - "Install requirements": + charset-normalizer==3.4.7 -Step #0 - "Install requirements": + click==8.4.2 -Step #0 - "Install requirements": + cloudpickle==3.1.2 -Step #0 - "Install requirements": + cryptography==49.0.0 -Step #0 - "Install requirements": + deprecated==1.3.1 -Step #0 - "Install requirements": + distro==1.9.0 -Step #0 - "Install requirements": + docstring-parser==0.18.0 -Step #0 - "Install requirements": + exceptiongroup==1.3.1 -Step #0 - "Install requirements": + fastapi==0.138.2 -Step #0 - "Install requirements": + frozenlist==1.8.0 -Step #0 - "Install requirements": + google-adk==1.34.1 -Step #0 - "Install requirements": + google-api-core==2.31.0 -Step #0 - "Install requirements": + google-api-python-client==2.198.0 -Step #0 - "Install requirements": + google-auth==2.53.0 -Step #0 - "Install requirements": + google-auth-httplib2==0.4.0 -Step #0 - "Install requirements": + google-auth-oauthlib==1.4.0 -Step #0 - "Install requirements": + google-cloud-aiplatform==1.158.0 -Step #0 - "Install requirements": + google-cloud-appengine-logging==1.10.0 -Step #0 - "Install requirements": + google-cloud-audit-log==0.6.0 -Step #0 - "Install requirements": + google-cloud-bigquery==3.42.1 -Step #0 - "Install requirements": + google-cloud-bigquery-storage==2.39.0 -Step #0 - "Install requirements": + google-cloud-bigtable==2.40.0 -Step #0 - "Install requirements": + google-cloud-core==2.6.0 -Step #0 - "Install requirements": + google-cloud-dataplex==2.20.0 -Step #0 - "Install requirements": + google-cloud-discoveryengine==0.13.12 -Step #0 - "Install requirements": + google-cloud-iam==2.24.0 -Step #0 - "Install requirements": + google-cloud-logging==3.16.0 -Step #0 - "Install requirements": + google-cloud-monitoring==2.31.0 -Step #0 - "Install requirements": + google-cloud-pubsub==2.39.0 -Step #0 - "Install requirements": + google-cloud-resource-manager==1.18.0 -Step #0 - "Install requirements": + google-cloud-secret-manager==2.29.0 -Step #0 - "Install requirements": + google-cloud-spanner==3.69.0 -Step #0 - "Install requirements": + google-cloud-speech==2.40.0 -Step #0 - "Install requirements": + google-cloud-storage==3.12.0 -Step #0 - "Install requirements": + google-cloud-trace==1.20.0 -Step #0 - "Install requirements": + google-crc32c==1.8.0 -Step #0 - "Install requirements": + google-genai==1.75.0 -Step #0 - "Install requirements": + google-resumable-media==2.10.0 -Step #0 - "Install requirements": + googleapis-common-protos==1.75.0 -Step #0 - "Install requirements": + graphviz==0.21 -Step #0 - "Install requirements": + greenlet==3.5.3 -Step #0 - "Install requirements": + grpc-google-iam-v1==0.14.4 -Step #0 - "Install requirements": + grpc-interceptor==0.15.4 -Step #0 - "Install requirements": + grpcio==1.81.1 -Step #0 - "Install requirements": + grpcio-status==1.81.1 -Step #0 - "Install requirements": + h11==0.16.0 -Step #0 - "Install requirements": + httpcore==1.0.9 -Step #0 - "Install requirements": + httplib2==0.32.0 -Step #0 - "Install requirements": + httpx==0.28.1 -Step #0 - "Install requirements": + httpx-sse==0.4.3 -Step #0 - "Install requirements": + idna==3.18 -Step #0 - "Install requirements": + importlib-metadata==8.7.1 -Step #0 - "Install requirements": + joserfc==1.7.2 -Step #0 - "Install requirements": + jsonschema==4.26.0 -Step #0 - "Install requirements": + jsonschema-specifications==2025.9.1 -Step #0 - "Install requirements": + mako==1.3.12 -Step #0 - "Install requirements": + markupsafe==3.0.3 -Step #0 - "Install requirements": + mcp==1.28.1 -Step #0 - "Install requirements": + mmh3==5.2.1 -Step #0 - "Install requirements": + multidict==6.7.1 -Step #0 - "Install requirements": + oauthlib==3.3.1 -Step #0 - "Install requirements": + opentelemetry-api==1.41.1 -Step #0 - "Install requirements": + opentelemetry-exporter-gcp-logging==1.12.0a0 -Step #0 - "Install requirements": + opentelemetry-exporter-gcp-monitoring==1.9.0a0 -Step #0 - "Install requirements": + opentelemetry-exporter-gcp-trace==1.12.0 -Step #0 - "Install requirements": + opentelemetry-exporter-otlp-proto-common==1.41.1 -Step #0 - "Install requirements": + opentelemetry-exporter-otlp-proto-http==1.41.1 -Step #0 - "Install requirements": + opentelemetry-proto==1.41.1 -Step #0 - "Install requirements": + opentelemetry-resourcedetector-gcp==1.12.0a0 -Step #0 - "Install requirements": + opentelemetry-sdk==1.41.1 -Step #0 - "Install requirements": + opentelemetry-semantic-conventions==0.62b1 -Step #0 - "Install requirements": + packaging==26.2 -Step #0 - "Install requirements": + propcache==0.5.2 -Step #0 - "Install requirements": + proto-plus==1.28.0 -Step #0 - "Install requirements": + protobuf==6.33.6 -Step #0 - "Install requirements": + pyarrow==24.0.0 -Step #0 - "Install requirements": + pyasn1==0.6.3 -Step #0 - "Install requirements": + pyasn1-modules==0.4.2 -Step #0 - "Install requirements": + pycparser==3.0 -Step #0 - "Install requirements": + pydantic==2.13.4 -Step #0 - "Install requirements": + pydantic-core==2.46.4 -Step #0 - "Install requirements": + pydantic-settings==2.14.2 -Step #0 - "Install requirements": + pyjwt==2.13.0 -Step #0 - "Install requirements": + pyopenssl==26.3.0 -Step #0 - "Install requirements": + pyparsing==3.3.2 -Step #0 - "Install requirements": + python-dateutil==2.9.0.post0 -Step #0 - "Install requirements": + python-dotenv==1.2.2 -Step #0 - "Install requirements": + python-multipart==0.0.32 -Step #0 - "Install requirements": + pyyaml==6.0.3 -Step #0 - "Install requirements": + referencing==0.37.0 -Step #0 - "Install requirements": + requests==2.34.2 -Step #0 - "Install requirements": + requests-oauthlib==2.0.0 -Step #0 - "Install requirements": + rpds-py==0.30.0 -Step #0 - "Install requirements": + six==1.17.0 -Step #0 - "Install requirements": + sniffio==1.3.1 -Step #0 - "Install requirements": + sqlalchemy==2.0.51 -Step #0 - "Install requirements": + sqlalchemy-spanner==1.19.0 -Step #0 - "Install requirements": + sqlparse==0.5.5 -Step #0 - "Install requirements": + sse-starlette==3.4.5 -Step #0 - "Install requirements": + starlette==0.52.1 -Step #0 - "Install requirements": + tenacity==9.1.4 -Step #0 - "Install requirements": + tomli==2.4.1 -Step #0 - "Install requirements": + toolbox-core==1.1.0 (from file:///workspace/packages/toolbox-core) -Step #0 - "Install requirements": + typing-extensions==4.15.0 -Step #0 - "Install requirements": + typing-inspection==0.4.2 -Step #0 - "Install requirements": + tzlocal==5.4.4 -Step #0 - "Install requirements": + uritemplate==4.2.0 -Step #0 - "Install requirements": + urllib3==2.7.0 -Step #0 - "Install requirements": + uvicorn==0.49.0 -Step #0 - "Install requirements": + watchdog==6.0.0 -Step #0 - "Install requirements": + websockets==15.0.1 -Step #0 - "Install requirements": + wrapt==2.2.2 -Step #0 - "Install requirements": + yarl==1.24.2 -Step #0 - "Install requirements": + zipp==4.1.0 -Step #0 - "Install requirements": Using Python 3.10.20 environment at: /workspace/venv -Step #0 - "Install requirements": Resolved 162 packages in 1.19s -Step #0 - "Install requirements": Building toolbox-adk @ file:///workspace/packages/toolbox-adk -Step #0 - "Install requirements": Downloading jedi (4.7MiB) -Step #0 - "Install requirements": Downloading black (1.8MiB) -Step #0 - "Install requirements": Downloading pygments (1.2MiB) -Step #0 - "Install requirements": Downloading ast-serialize (1.2MiB) -Step #0 - "Install requirements": Downloading numpy (15.6MiB) -Step #0 - "Install requirements": Downloading mypy (14.3MiB) -Step #0 - "Install requirements": Downloaded ast-serialize -Step #0 - "Install requirements": Built toolbox-adk @ file:///workspace/packages/toolbox-adk -Step #0 - "Install requirements": Downloaded black -Step #0 - "Install requirements": Downloaded pygments -Step #0 - "Install requirements": Downloaded numpy -Step #0 - "Install requirements": Downloaded mypy -Step #0 - "Install requirements": Downloaded jedi -Step #0 - "Install requirements": Prepared 35 packages in 1.60s -Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. -Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. -Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. -Step #0 - "Install requirements": Installed 35 packages in 1.29s -Step #0 - "Install requirements": + ast-serialize==0.5.0 -Step #0 - "Install requirements": + asttokens==3.0.1 -Step #0 - "Install requirements": + backports-asyncio-runner==1.2.0 -Step #0 - "Install requirements": + black==26.5.1 -Step #0 - "Install requirements": + coverage==7.14.3 -Step #0 - "Install requirements": + decorator==5.3.1 -Step #0 - "Install requirements": + executing==2.2.1 -Step #0 - "Install requirements": + iniconfig==2.3.0 -Step #0 - "Install requirements": + ipython==8.39.0 -Step #0 - "Install requirements": + isort==8.0.1 -Step #0 - "Install requirements": + jedi==0.20.0 -Step #0 - "Install requirements": + librt==0.12.0 -Step #0 - "Install requirements": + matplotlib-inline==0.2.2 -Step #0 - "Install requirements": + mypy==2.1.0 -Step #0 - "Install requirements": + mypy-extensions==1.1.0 -Step #0 - "Install requirements": + numpy==2.1.3 -Step #0 - "Install requirements": + parso==0.8.7 -Step #0 - "Install requirements": + pathspec==1.1.1 -Step #0 - "Install requirements": + pexpect==4.9.0 -Step #0 - "Install requirements": + platformdirs==4.10.0 -Step #0 - "Install requirements": + pluggy==1.6.0 -Step #0 - "Install requirements": + prompt-toolkit==3.0.52 -Step #0 - "Install requirements": + ptyprocess==0.7.0 -Step #0 - "Install requirements": + pure-eval==0.2.3 -Step #0 - "Install requirements": + pygments==2.20.0 -Step #0 - "Install requirements": + pytest==9.0.3 -Step #0 - "Install requirements": + pytest-asyncio==1.4.0 -Step #0 - "Install requirements": + pytest-cov==7.1.0 -Step #0 - "Install requirements": + pytest-mock==3.15.1 -Step #0 - "Install requirements": + pytokens==0.4.1 -Step #0 - "Install requirements": + stack-data==0.6.3 -Step #0 - "Install requirements": + tokenize-rt==6.2.0 -Step #0 - "Install requirements": + toolbox-adk==1.0.1 (from file:///workspace/packages/toolbox-adk) -Step #0 - "Install requirements": + traitlets==5.15.1 -Step #0 - "Install requirements": + wcwidth==0.8.2 -Finished Step #0 - "Install requirements" -Starting Step #1 - "Run integration tests" -Step #1 - "Run integration tests": Already have image (with digest): python:3.10 -Step #1 - "Run integration tests": ============================= test session starts ============================== -Step #1 - "Run integration tests": platform linux -- Python 3.10.20, pytest-9.0.3, pluggy-1.6.0 -Step #1 - "Run integration tests": rootdir: /workspace/packages/toolbox-adk -Step #1 - "Run integration tests": configfile: pyproject.toml -Step #1 - "Run integration tests": plugins: cov-7.1.0, mock-3.15.1, asyncio-1.4.0, anyio-4.14.1 -Step #1 - "Run integration tests": asyncio: mode=strict, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function -Step #1 - "Run integration tests": collected 118 items -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/test_integration.py EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEsEE [ 28%] -Step #1 - "Run integration tests": EEEEEEEEEEEEEEEEEEEEEEEEEEEEEs [ 54%] -Step #1 - "Run integration tests": tests/unit/test_client.py .............. [ 66%] -Step #1 - "Run integration tests": tests/unit/test_credentials.py ................ [ 79%] -Step #1 - "Run integration tests": tests/unit/test_tool.py .............. [ 91%] -Step #1 - "Run integration tests": tests/unit/test_toolset.py .......... [100%] -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ==================================== ERRORS ==================================== -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_and_run[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": ---------------------------- Captured stdout setup ----------------------------- -Step #1 - "Run integration tests": Downloading toolbox binary from gcs bucket... -Step #1 - "Run integration tests": Blob main/linux/amd64/toolbox downloaded to toolbox. -Step #1 - "Run integration tests": Toolbox binary downloaded successfully. -Step #1 - "Run integration tests": Opening toolbox server process... -Step #1 - "Run integration tests": Flag --tools-file has been deprecated, please use --config instead -Step #1 - "Run integration tests": 2026-06-30T16:18:24.996347599Z INFO "Starting MCP Toolbox for Databases version 1.5.0+dev.linux.amd64.d6dc5fe" -Step #1 - "Run integration tests": 2026-06-30T16:18:25.184622215Z INFO "Initialized 1 sources: my-cloud-sql-pg-source" -Step #1 - "Run integration tests": 2026-06-30T16:18:25.184733748Z INFO "Initialized 2 authServices: my-test-auth2, my-test-auth" -Step #1 - "Run integration tests": 2026-06-30T16:18:25.184757239Z INFO "Initialized 0 embeddingModels: " -Step #1 - "Run integration tests": 2026-06-30T16:18:25.184815784Z INFO "Initialized 7 tools: get-n-rows, get-row-by-id, get-row-by-id-auth, get-row-by-email-auth, get-row-by-content-auth, search-rows, process-data" -Step #1 - "Run integration tests": 2026-06-30T16:18:25.184861911Z INFO "Initialized 4 toolsets: my-toolset-3, my-toolset, my-toolset-2, default" -Step #1 - "Run integration tests": 2026-06-30T16:18:25.184875547Z INFO "Initialized 0 prompts: " -Step #1 - "Run integration tests": 2026-06-30T16:18:25.184891891Z INFO "Initialized 1 promptsets: default" -Step #1 - "Run integration tests": 2026-06-30T16:18:25.191184382Z INFO "Server ready to serve!" -Step #1 - "Run integration tests": Checking if both toolbox servers are successfully started... -Step #1 - "Run integration tests": Checking if both toolbox servers are successfully started... -Step #1 - "Run integration tests": Checking if both toolbox servers are successfully started... -Step #1 - "Run integration tests": Checking if both toolbox servers are successfully started... -Step #1 - "Run integration tests": Checking if both toolbox servers are successfully started... -Step #1 - "Run integration tests": ---------------------------- Captured stderr setup ----------------------------- -Step #1 - "Run integration tests": Error: unknown flag: --enable-draft-specs -Step #1 - "Run integration tests": 2026-06-30T16:18:25.184979895Z WARN "wildcard (*) allows any website to access the resources. This creates a security risk regardless of whether you are in a production or local development environment. Recommended to use --allowed-origins with specific local addresses." -Step #1 - "Run integration tests": 2026-06-30T16:18:25.185019702Z WARN "wildcard (*) hosts allow any domain to access this resource, making it vulnerable to DNS rebinding attacks regardless of whether you are in a production or local development environment. For improved security, use the --allowed-hosts flag to specify trusted domains." -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_with_default_protocol[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_with_explicit_protocol[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_partial_loading_by_names[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_bound_params_e2e[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_3lo_flow_simulation[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_manual_token_integration[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_manual_credentials_integration[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_api_key_integration[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_adk_integration_optional_params[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_header_collision[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_specific[http://localhost:5000-my-toolset-1-expected_tools0] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_specific[http://localhost:5000-my-toolset-2-2-expected_tools1] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_default[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _____ ERROR at setup of TestBasicE2E.test_run_tool[http://localhost:5000] ______ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_run_tool_missing_params[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_run_tool_wrong_param_type[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": ___ ERROR at setup of TestBindParams.test_bind_params[http://localhost:5000] ___ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestBindParams.test_bind_params_callable[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_tool_unauth_with_auth[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_multiple_tools_unauth_with_auth[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_multiple_tools_partial_auth_usage[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": ___ ERROR at setup of TestAuth.test_run_tool_no_auth[http://localhost:5000] ____ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": __ ERROR at setup of TestAuth.test_run_tool_wrong_auth[http://localhost:5000] __ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _____ ERROR at setup of TestAuth.test_run_tool_auth[http://localhost:5000] _____ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": __ ERROR at setup of TestAuth.test_run_tool_async_auth[http://localhost:5000] __ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_optional_params_omitted[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_all_valid_params[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_missing_required_param[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestMapParams.test_run_tool_with_map_params[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestMapParams.test_run_tool_with_wrong_map_value_type[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_and_run[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_with_default_protocol[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_load_toolset_with_explicit_protocol[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_partial_loading_by_names[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_bound_params_e2e[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_3lo_flow_simulation[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_manual_token_integration[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_manual_credentials_integration[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_api_key_integration[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_adk_integration_optional_params[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestToolboxAdkIntegration.test_header_collision[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_specific[http://localhost:5001-my-toolset-1-expected_tools0] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_specific[http://localhost:5001-my-toolset-2-2-expected_tools1] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_load_toolset_default[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _____ ERROR at setup of TestBasicE2E.test_run_tool[http://localhost:5001] ______ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_run_tool_missing_params[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestBasicE2E.test_run_tool_wrong_param_type[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": ___ ERROR at setup of TestBindParams.test_bind_params[http://localhost:5001] ___ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestBindParams.test_bind_params_callable[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_tool_unauth_with_auth[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_multiple_tools_unauth_with_auth[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestAuth.test_run_multiple_tools_partial_auth_usage[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": ___ ERROR at setup of TestAuth.test_run_tool_no_auth[http://localhost:5001] ____ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": __ ERROR at setup of TestAuth.test_run_tool_wrong_auth[http://localhost:5001] __ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _____ ERROR at setup of TestAuth.test_run_tool_auth[http://localhost:5001] _____ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": __ ERROR at setup of TestAuth.test_run_tool_async_auth[http://localhost:5001] __ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_optional_params_omitted[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_all_valid_params[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestOptionalParams.test_run_tool_with_missing_required_param[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestMapParams.test_run_tool_with_map_params[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestMapParams.test_run_tool_with_wrong_map_value_type[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpw4pdzrpf' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": if os.environ.get("TEST_MOCK_GCP"): -Step #1 - "Run integration tests": yield -Step #1 - "Run integration tests": return -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(2) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/integration/conftest.py:187: RuntimeError -Step #1 - "Run integration tests": =============================== warnings summary =============================== -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255 -Step #1 - "Run integration tests": /workspace/venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255: FutureWarning: You are using a Python version (3.10.20) which Google will stop supporting in new releases of google.api_core once it reaches its end of life (2026-10-04). Please upgrade to the latest Python version, or at least Python 3.11, to continue receiving updates for google.api_core past that date. -Step #1 - "Run integration tests": warnings.warn(message, FutureWarning) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255 -Step #1 - "Run integration tests": /workspace/venv/lib/python3.10/site-packages/google/api_core/_python_version_support.py:255: FutureWarning: You are using a Python version (3.10.20) which Google will stop supporting in new releases of google.cloud.secretmanager_v1 once it reaches its end of life (2026-10-04). Please upgrade to the latest Python version, or at least Python 3.11, to continue receiving updates for google.cloud.secretmanager_v1 past that date. -Step #1 - "Run integration tests": warnings.warn(message, FutureWarning) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/unit/test_credentials.py::TestCredentialStrategy::test_from_adk_auth_config -Step #1 - "Run integration tests": tests/unit/test_tool.py::TestToolboxTool::test_3lo_request_credential_when_missing -Step #1 - "Run integration tests": tests/unit/test_tool.py::TestToolboxTool::test_3lo_uses_existing_credential -Step #1 - "Run integration tests": tests/unit/test_tool.py::TestToolboxTool::test_3lo_exception_reraise -Step #1 - "Run integration tests": tests/unit/test_tool.py::TestToolboxTool::test_3lo_exception_fallback -Step #1 - "Run integration tests": /workspace/venv/lib/python3.10/site-packages/google/adk/auth/auth_tool.py:94: DeprecationWarning: This method is deprecated. Use credential_key instead. -Step #1 - "Run integration tests": self.credential_key = self.get_credential_key() -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html -Step #1 - "Run integration tests": ================================ tests coverage ================================ -Step #1 - "Run integration tests": _______________ coverage: platform linux, python 3.10.20-final-0 _______________ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": Name Stmts Miss Cover -Step #1 - "Run integration tests": ---------------------------------------------------- -Step #1 - "Run integration tests": src/toolbox_adk/__init__.py 6 0 100% -Step #1 - "Run integration tests": src/toolbox_adk/client.py 79 2 97% -Step #1 - "Run integration tests": src/toolbox_adk/credentials.py 75 3 96% -Step #1 - "Run integration tests": src/toolbox_adk/tool.py 128 9 93% -Step #1 - "Run integration tests": src/toolbox_adk/toolset.py 55 2 96% -Step #1 - "Run integration tests": src/toolbox_adk/version.py 1 0 100% -Step #1 - "Run integration tests": ---------------------------------------------------- -Step #1 - "Run integration tests": TOTAL 344 16 95% -Step #1 - "Run integration tests": Required test coverage of 90% reached. Total coverage: 95.35% -Step #1 - "Run integration tests": =========================== short test summary info ============================ -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_and_run[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_with_default_protocol[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_with_explicit_protocol[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_partial_loading_by_names[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_bound_params_e2e[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_3lo_flow_simulation[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_manual_token_integration[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_manual_credentials_integration[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_api_key_integration[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_adk_integration_optional_params[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_header_collision[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_specific[http://localhost:5000-my-toolset-1-expected_tools0] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_specific[http://localhost:5000-my-toolset-2-2-expected_tools1] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_default[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool_missing_params[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool_wrong_param_type[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBindParams::test_bind_params[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBindParams::test_bind_params_callable[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_unauth_with_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_multiple_tools_unauth_with_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_multiple_tools_partial_auth_usage[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_no_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_wrong_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_async_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_optional_params_omitted[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_all_valid_params[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_missing_required_param[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestMapParams::test_run_tool_with_map_params[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestMapParams::test_run_tool_with_wrong_map_value_type[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_and_run[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_with_default_protocol[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_load_toolset_with_explicit_protocol[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_partial_loading_by_names[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_bound_params_e2e[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_3lo_flow_simulation[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_manual_token_integration[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_manual_credentials_integration[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_api_key_integration[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_adk_integration_optional_params[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestToolboxAdkIntegration::test_header_collision[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_specific[http://localhost:5001-my-toolset-1-expected_tools0] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_specific[http://localhost:5001-my-toolset-2-2-expected_tools1] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_load_toolset_default[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool_missing_params[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBasicE2E::test_run_tool_wrong_param_type[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBindParams::test_bind_params[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestBindParams::test_bind_params_callable[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_unauth_with_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_multiple_tools_unauth_with_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_multiple_tools_partial_auth_usage[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_no_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_wrong_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestAuth::test_run_tool_async_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_optional_params_omitted[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_all_valid_params[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestOptionalParams::test_run_tool_with_missing_required_param[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestMapParams::test_run_tool_with_map_params[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/integration/test_integration.py::TestMapParams::test_run_tool_with_wrong_map_value_type[http://localhost:5001] -Step #1 - "Run integration tests": ============ 54 passed, 2 skipped, 7 warnings, 62 errors in 23.28s ============= -Finished Step #1 - "Run integration tests" -ERROR -ERROR: build step 1 "python:3.10" failed: step exited with non-zero status: 1 --------------------------------------------------------------------------------- diff --git a/log.txt b/log.txt deleted file mode 100644 index 6a2600237..000000000 --- a/log.txt +++ /dev/null @@ -1,3367 +0,0 @@ - -To live stream log output for this build, please ensure the grpc module is installed. Run: - pip install grpcio -and set: - export CLOUDSDK_PYTHON_SITEPACKAGES=1 - ------------------------------ REMOTE BUILD OUTPUT ------------------------------ -starting build "182725fb-f369-4de8-9e28-330f80b853df" -FETCHSOURCE -From https://github.com/googleapis/mcp-toolbox-sdk-python - * branch 28834dd4fa18f7f16826fe0eb812548ee6e0752c -> FETCH_HEAD -HEAD is now at 28834dd chore: fix integration tests url and lint errors -GitCommit: -28834dd4fa18f7f16826fe0eb812548ee6e0752c -BUILD -Starting Step #0 - "Install requirements" -Step #0 - "Install requirements": Pulling image: python:3.13 -Step #0 - "Install requirements": 3.13: Pulling from library/python -Step #0 - "Install requirements": aa3e9ef32f73: Pulling fs layer -Step #0 - "Install requirements": 3f59c84a7863: Pulling fs layer -Step #0 - "Install requirements": 30d0db852850: Pulling fs layer -Step #0 - "Install requirements": 0252e6abaf0f: Pulling fs layer -Step #0 - "Install requirements": c92b9edd050e: Pulling fs layer -Step #0 - "Install requirements": 129ee7ddf18e: Pulling fs layer -Step #0 - "Install requirements": dc020b606b19: Pulling fs layer -Step #0 - "Install requirements": dc020b606b19: Waiting -Step #0 - "Install requirements": c92b9edd050e: Verifying Checksum -Step #0 - "Install requirements": c92b9edd050e: Download complete -Step #0 - "Install requirements": dc020b606b19: Verifying Checksum -Step #0 - "Install requirements": dc020b606b19: Download complete -Step #0 - "Install requirements": 3f59c84a7863: Verifying Checksum -Step #0 - "Install requirements": 3f59c84a7863: Download complete -Step #0 - "Install requirements": 129ee7ddf18e: Verifying Checksum -Step #0 - "Install requirements": 129ee7ddf18e: Download complete -Step #0 - "Install requirements": aa3e9ef32f73: Verifying Checksum -Step #0 - "Install requirements": aa3e9ef32f73: Download complete -Step #0 - "Install requirements": 30d0db852850: Verifying Checksum -Step #0 - "Install requirements": 30d0db852850: Download complete -Step #0 - "Install requirements": 0252e6abaf0f: Verifying Checksum -Step #0 - "Install requirements": 0252e6abaf0f: Download complete -Step #0 - "Install requirements": aa3e9ef32f73: Pull complete -Step #0 - "Install requirements": 3f59c84a7863: Pull complete -Step #0 - "Install requirements": 30d0db852850: Pull complete -Step #0 - "Install requirements": 0252e6abaf0f: Pull complete -Step #0 - "Install requirements": c92b9edd050e: Pull complete -Step #0 - "Install requirements": 129ee7ddf18e: Pull complete -Step #0 - "Install requirements": dc020b606b19: Pull complete -Step #0 - "Install requirements": Digest: sha256:4c822f0fadfeba9ea973d81fb5bbd5c2106f12ae02d0a5cdd48907909395310b -Step #0 - "Install requirements": Status: Downloaded newer image for python:3.13 -Step #0 - "Install requirements": docker.io/library/python:3.13 -Step #0 - "Install requirements": Collecting uv -Step #0 - "Install requirements": Downloading uv-0.11.26-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB) -Step #0 - "Install requirements": Downloading uv-0.11.26-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.3 MB) -Step #0 - "Install requirements": ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 26.3/26.3 MB 119.9 MB/s 0:00:00 -Step #0 - "Install requirements": Installing collected packages: uv -Step #0 - "Install requirements": Successfully installed uv-0.11.26 -Step #0 - "Install requirements": WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning. -Step #0 - "Install requirements": Using CPython 3.13.14 interpreter at: /usr/local/bin/python3 -Step #0 - "Install requirements": Creating virtual environment at: /workspace/venv -Step #0 - "Install requirements": Activate with: source /workspace/venv/bin/activate -Step #0 - "Install requirements": Using Python 3.13.14 environment at: /workspace/venv -Step #0 - "Install requirements": Resolved 1 package in 258ms -Step #0 - "Install requirements": Downloading uv (25.0MiB) -Step #0 - "Install requirements": Downloaded uv -Step #0 - "Install requirements": Prepared 1 package in 353ms -Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. -Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. -Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. -Step #0 - "Install requirements": Installed 1 package in 73ms -Step #0 - "Install requirements": + uv==0.11.26 -Step #0 - "Install requirements": Using Python 3.13.14 environment at: /workspace/venv -Step #0 - "Install requirements": Resolved 67 packages in 1.78s -Step #0 - "Install requirements": Building toolbox-core @ file:///workspace/packages/toolbox-core -Step #0 - "Install requirements": Downloading pydantic-core (2.0MiB) -Step #0 - "Install requirements": Downloading sqlalchemy (3.1MiB) -Step #0 - "Install requirements": Downloading cryptography (4.5MiB) -Step #0 - "Install requirements": Downloading tiktoken (1.1MiB) -Step #0 - "Install requirements": Downloading pillow (6.8MiB) -Step #0 - "Install requirements": Downloading numpy (15.9MiB) -Step #0 - "Install requirements": Downloading networkx (2.0MiB) -Step #0 - "Install requirements": Downloading nltk (1.5MiB) -Step #0 - "Install requirements": Downloading llama-index-core (11.4MiB) -Step #0 - "Install requirements": Downloading aiohttp (1.7MiB) -Step #0 - "Install requirements": Built toolbox-core @ file:///workspace/packages/toolbox-core -Step #0 - "Install requirements": Downloaded tiktoken -Step #0 - "Install requirements": Downloaded aiohttp -Step #0 - "Install requirements": Downloaded pydantic-core -Step #0 - "Install requirements": Downloaded sqlalchemy -Step #0 - "Install requirements": Downloaded nltk -Step #0 - "Install requirements": Downloaded cryptography -Step #0 - "Install requirements": Downloaded pillow -Step #0 - "Install requirements": Downloaded networkx -Step #0 - "Install requirements": Downloaded llama-index-core -Step #0 - "Install requirements": Downloaded numpy -Step #0 - "Install requirements": Prepared 66 packages in 1.18s -Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. -Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. -Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. -Step #0 - "Install requirements": Installed 67 packages in 562ms -Step #0 - "Install requirements": + aiohappyeyeballs==2.6.2 -Step #0 - "Install requirements": + aiohttp==3.14.0 -Step #0 - "Install requirements": + aiosignal==1.4.0 -Step #0 - "Install requirements": + aiosqlite==0.22.1 -Step #0 - "Install requirements": + annotated-types==0.7.0 -Step #0 - "Install requirements": + anyio==4.14.1 -Step #0 - "Install requirements": + attrs==26.1.0 -Step #0 - "Install requirements": + banks==2.4.4 -Step #0 - "Install requirements": + certifi==2026.6.17 -Step #0 - "Install requirements": + cffi==2.0.0 -Step #0 - "Install requirements": + charset-normalizer==3.4.7 -Step #0 - "Install requirements": + click==8.4.2 -Step #0 - "Install requirements": + colorama==0.4.6 -Step #0 - "Install requirements": + cryptography==49.0.0 -Step #0 - "Install requirements": + dataclasses-json==0.6.7 -Step #0 - "Install requirements": + deprecated==1.3.1 -Step #0 - "Install requirements": + dirtyjson==1.0.8 -Step #0 - "Install requirements": + filetype==1.2.0 -Step #0 - "Install requirements": + frozenlist==1.8.0 -Step #0 - "Install requirements": + fsspec==2026.6.0 -Step #0 - "Install requirements": + google-auth==2.55.1 -Step #0 - "Install requirements": + greenlet==3.5.3 -Step #0 - "Install requirements": + griffe==2.1.0 -Step #0 - "Install requirements": + griffecli==2.1.0 -Step #0 - "Install requirements": + griffelib==2.1.0 -Step #0 - "Install requirements": + h11==0.16.0 -Step #0 - "Install requirements": + httpcore==1.0.9 -Step #0 - "Install requirements": + httpx==0.28.1 -Step #0 - "Install requirements": + idna==3.18 -Step #0 - "Install requirements": + jinja2==3.1.6 -Step #0 - "Install requirements": + joblib==1.5.3 -Step #0 - "Install requirements": + llama-index-core==0.14.22 -Step #0 - "Install requirements": + llama-index-instrumentation==0.5.0 -Step #0 - "Install requirements": + llama-index-workflows==2.22.1 -Step #0 - "Install requirements": + markupsafe==3.0.3 -Step #0 - "Install requirements": + marshmallow==3.26.2 -Step #0 - "Install requirements": + multidict==6.7.1 -Step #0 - "Install requirements": + mypy-extensions==1.1.0 -Step #0 - "Install requirements": + nest-asyncio==1.6.0 -Step #0 - "Install requirements": + networkx==3.6.1 -Step #0 - "Install requirements": + nltk==3.9.4 -Step #0 - "Install requirements": + numpy==2.5.0 -Step #0 - "Install requirements": + packaging==26.2 -Step #0 - "Install requirements": + pillow==12.2.0 -Step #0 - "Install requirements": + platformdirs==4.10.0 -Step #0 - "Install requirements": + propcache==0.5.2 -Step #0 - "Install requirements": + pyasn1==0.6.3 -Step #0 - "Install requirements": + pyasn1-modules==0.4.2 -Step #0 - "Install requirements": + pycparser==3.0 -Step #0 - "Install requirements": + pydantic==2.13.4 -Step #0 - "Install requirements": + pydantic-core==2.46.4 -Step #0 - "Install requirements": + pyyaml==6.0.3 -Step #0 - "Install requirements": + regex==2026.6.28 -Step #0 - "Install requirements": + requests==2.34.2 -Step #0 - "Install requirements": + setuptools==82.0.1 -Step #0 - "Install requirements": + sqlalchemy==2.0.51 -Step #0 - "Install requirements": + tenacity==9.1.4 -Step #0 - "Install requirements": + tiktoken==0.13.0 -Step #0 - "Install requirements": + tinytag==2.2.1 -Step #0 - "Install requirements": + toolbox-core==1.1.0 (from file:///workspace/packages/toolbox-core) -Step #0 - "Install requirements": + tqdm==4.68.3 -Step #0 - "Install requirements": + typing-extensions==4.15.0 -Step #0 - "Install requirements": + typing-inspect==0.9.0 -Step #0 - "Install requirements": + typing-inspection==0.4.2 -Step #0 - "Install requirements": + urllib3==2.7.0 -Step #0 - "Install requirements": + wrapt==2.2.2 -Step #0 - "Install requirements": + yarl==1.24.2 -Step #0 - "Install requirements": Using Python 3.13.14 environment at: /workspace/venv -Step #0 - "Install requirements": Resolved 111 packages in 1.22s -Step #0 - "Install requirements": Building toolbox-llamaindex @ file:///workspace/packages/toolbox-llamaindex -Step #0 - "Install requirements": Downloading mypy (14.3MiB) -Step #0 - "Install requirements": Downloading black (1.8MiB) -Step #0 - "Install requirements": Downloading numpy (15.3MiB) -Step #0 - "Install requirements": Downloading grpcio (6.5MiB) -Step #0 - "Install requirements": Downloading ast-serialize (1.2MiB) -Step #0 - "Install requirements": Downloading jedi (4.7MiB) -Step #0 - "Install requirements": Downloading pygments (1.2MiB) -Step #0 - "Install requirements": Downloaded ast-serialize -Step #0 - "Install requirements": Built toolbox-llamaindex @ file:///workspace/packages/toolbox-llamaindex -Step #0 - "Install requirements": Downloaded black -Step #0 - "Install requirements": Downloaded pygments -Step #0 - "Install requirements": Downloaded grpcio -Step #0 - "Install requirements": Downloaded numpy -Step #0 - "Install requirements": Downloaded mypy -Step #0 - "Install requirements": Downloaded jedi -Step #0 - "Install requirements": Prepared 45 packages in 1.76s -Step #0 - "Install requirements": Uninstalled 1 package in 33ms -Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance. -Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported. -Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning. -Step #0 - "Install requirements": Installed 45 packages in 1.29s -Step #0 - "Install requirements": + ast-serialize==0.5.0 -Step #0 - "Install requirements": + asttokens==3.0.1 -Step #0 - "Install requirements": + black==26.5.1 -Step #0 - "Install requirements": + coverage==7.14.3 -Step #0 - "Install requirements": + decorator==5.3.1 -Step #0 - "Install requirements": + executing==2.2.1 -Step #0 - "Install requirements": + google-api-core==2.31.0 -Step #0 - "Install requirements": + google-cloud-core==2.6.0 -Step #0 - "Install requirements": + google-cloud-secret-manager==2.28.0 -Step #0 - "Install requirements": + google-cloud-storage==3.10.1 -Step #0 - "Install requirements": + google-crc32c==1.8.0 -Step #0 - "Install requirements": + google-resumable-media==2.10.0 -Step #0 - "Install requirements": + googleapis-common-protos==1.75.0 -Step #0 - "Install requirements": + grpc-google-iam-v1==0.14.4 -Step #0 - "Install requirements": + grpcio==1.81.1 -Step #0 - "Install requirements": + grpcio-status==1.81.1 -Step #0 - "Install requirements": + iniconfig==2.3.0 -Step #0 - "Install requirements": + ipython==9.15.0 -Step #0 - "Install requirements": + ipython-pygments-lexers==1.1.1 -Step #0 - "Install requirements": + isort==8.0.1 -Step #0 - "Install requirements": + jedi==0.20.0 -Step #0 - "Install requirements": + librt==0.12.0 -Step #0 - "Install requirements": + matplotlib-inline==0.2.2 -Step #0 - "Install requirements": + mypy==2.1.0 -Step #0 - "Install requirements": - numpy==2.5.0 -Step #0 - "Install requirements": + numpy==2.1.3 -Step #0 - "Install requirements": + parso==0.8.7 -Step #0 - "Install requirements": + pathspec==1.1.1 -Step #0 - "Install requirements": + pexpect==4.9.0 -Step #0 - "Install requirements": + pluggy==1.6.0 -Step #0 - "Install requirements": + prompt-toolkit==3.0.52 -Step #0 - "Install requirements": + proto-plus==1.28.0 -Step #0 - "Install requirements": + protobuf==7.35.1 -Step #0 - "Install requirements": + psutil==7.2.2 -Step #0 - "Install requirements": + ptyprocess==0.7.0 -Step #0 - "Install requirements": + pure-eval==0.2.3 -Step #0 - "Install requirements": + pygments==2.20.0 -Step #0 - "Install requirements": + pytest==9.0.3 -Step #0 - "Install requirements": + pytest-asyncio==1.4.0 -Step #0 - "Install requirements": + pytest-cov==7.1.0 -Step #0 - "Install requirements": + pytokens==0.4.1 -Step #0 - "Install requirements": + stack-data==0.6.3 -Step #0 - "Install requirements": + tokenize-rt==6.2.0 -Step #0 - "Install requirements": + toolbox-llamaindex==0.7.0 (from file:///workspace/packages/toolbox-llamaindex) -Step #0 - "Install requirements": + traitlets==5.15.1 -Step #0 - "Install requirements": + wcwidth==0.8.2 -Finished Step #0 - "Install requirements" -Starting Step #1 - "Run integration tests" -Step #1 - "Run integration tests": Already have image (with digest): python:3.13 -Step #1 - "Run integration tests": ============================= test session starts ============================== -Step #1 - "Run integration tests": platform linux -- Python 3.13.14, pytest-9.0.3, pluggy-1.6.0 -Step #1 - "Run integration tests": rootdir: /workspace/packages/toolbox-llamaindex -Step #1 - "Run integration tests": configfile: pyproject.toml -Step #1 - "Run integration tests": plugins: cov-7.1.0, asyncio-1.4.0, anyio-4.14.1 -Step #1 - "Run integration tests": asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function -Step #1 - "Run integration tests": collected 178 items -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/test_async_client.py ................. [ 9%] -Step #1 - "Run integration tests": tests/test_async_tools.py .................. [ 19%] -Step #1 - "Run integration tests": tests/test_client.py ................ [ 28%] -Step #1 - "Run integration tests": tests/test_e2e.py EEEEEEEEEEEEEEEEEEEEEEEEEEEE [ 44%] -Step #1 - "Run integration tests": tests/test_tools.py .......... [ 50%] -Step #1 - "Run integration tests": tests/test_async_client.py ................. [ 59%] -Step #1 - "Run integration tests": tests/test_async_tools.py .................. [ 69%] -Step #1 - "Run integration tests": tests/test_client.py ................ [ 78%] -Step #1 - "Run integration tests": tests/test_e2e.py EEEEEEEEEEEEEEEEEEEEEEEEEEEE [ 94%] -Step #1 - "Run integration tests": tests/test_tools.py .......... [100%] -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ==================================== ERRORS ==================================== -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_aload_toolset_specific[http://localhost:5000-my-toolset-1-expected_tools0] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:924: in pytest_fixture_setup -Step #1 - "Run integration tests": return (yield) -Step #1 - "Run integration tests": ^^^^^ -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": ---------------------------- Captured stdout setup ----------------------------- -Step #1 - "Run integration tests": Downloading toolbox binary from gcs bucket... -Step #1 - "Run integration tests": Blob main/linux/amd64/toolbox downloaded to toolbox. -Step #1 - "Run integration tests": Toolbox binary downloaded successfully. -Step #1 - "Run integration tests": Opening toolbox server process... -Step #1 - "Run integration tests": Flag --tools-file has been deprecated, please use --config instead -Step #1 - "Run integration tests": 2026-06-30T16:18:19.084190671Z INFO "Starting MCP Toolbox for Databases version 1.5.0+dev.linux.amd64.d6dc5fe" -Step #1 - "Run integration tests": 2026-06-30T16:18:19.245794982Z INFO "Initialized 1 sources: my-cloud-sql-pg-source" -Step #1 - "Run integration tests": 2026-06-30T16:18:19.245873488Z INFO "Initialized 2 authServices: my-test-auth, my-test-auth2" -Step #1 - "Run integration tests": 2026-06-30T16:18:19.245887639Z INFO "Initialized 0 embeddingModels: " -Step #1 - "Run integration tests": 2026-06-30T16:18:19.245967166Z INFO "Initialized 7 tools: search-rows, process-data, get-n-rows, get-row-by-id, get-row-by-id-auth, get-row-by-email-auth, get-row-by-content-auth" -Step #1 - "Run integration tests": 2026-06-30T16:18:19.246008489Z INFO "Initialized 4 toolsets: my-toolset-3, default, my-toolset, my-toolset-2" -Step #1 - "Run integration tests": 2026-06-30T16:18:19.24601994Z INFO "Initialized 0 prompts: " -Step #1 - "Run integration tests": 2026-06-30T16:18:19.246035752Z INFO "Initialized 1 promptsets: default" -Step #1 - "Run integration tests": 2026-06-30T16:18:19.250732417Z INFO "Server ready to serve!" -Step #1 - "Run integration tests": Checking if both toolbox servers are successfully started... -Step #1 - "Run integration tests": Checking if both toolbox servers are successfully started... -Step #1 - "Run integration tests": Checking if both toolbox servers are successfully started... -Step #1 - "Run integration tests": Checking if both toolbox servers are successfully started... -Step #1 - "Run integration tests": Checking if both toolbox servers are successfully started... -Step #1 - "Run integration tests": ---------------------------- Captured stderr setup ----------------------------- -Step #1 - "Run integration tests": Error: unknown flag: --enable-draft-specs -Step #1 - "Run integration tests": 2026-06-30T16:18:19.246067874Z WARN "wildcard (*) allows any website to access the resources. This creates a security risk regardless of whether you are in a production or local development environment. Recommended to use --allowed-origins with specific local addresses." -Step #1 - "Run integration tests": 2026-06-30T16:18:19.246095996Z WARN "wildcard (*) hosts allow any domain to access this resource, making it vulnerable to DNS rebinding attacks regardless of whether you are in a production or local development environment. For improved security, use the --allowed-hosts flag to specify trusted domains." -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_aload_toolset_specific[http://localhost:5000-my-toolset-2-2-expected_tools1] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_aload_toolset_all[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_async[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_sync[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_missing_params[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_wrong_param_type[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_unauth_with_auth[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_no_auth[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_wrong_auth[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_auth[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_param_auth_no_auth[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_param_auth[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_param_auth_no_field[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_load_toolset_specific[http://localhost:5000-my-toolset-1-expected_tools0] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_load_toolset_specific[http://localhost:5000-my-toolset-2-2-expected_tools1] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_aload_toolset_all[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_async[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_sync[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_missing_params[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_wrong_param_type[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_unauth_with_auth[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_no_auth[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_wrong_auth[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_auth[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_param_auth_no_auth[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_param_auth[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_param_auth_no_field[http://localhost:5000] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_aload_toolset_specific[http://localhost:5001-my-toolset-1-expected_tools0] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_aload_toolset_specific[http://localhost:5001-my-toolset-2-2-expected_tools1] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_aload_toolset_all[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_async[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_sync[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_missing_params[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_wrong_param_type[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_unauth_with_auth[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_no_auth[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_wrong_auth[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_auth[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_param_auth_no_auth[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_param_auth[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientAsync.test_run_tool_param_auth_no_field[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_load_toolset_specific[http://localhost:5001-my-toolset-1-expected_tools0] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_load_toolset_specific[http://localhost:5001-my-toolset-2-2-expected_tools1] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_aload_toolset_all[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_async[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": self = -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": def setup(self) -> None: -Step #1 - "Run integration tests": runner_fixture_id = f"_{self._loop_scope}_scoped_runner" -Step #1 - "Run integration tests": if runner_fixture_id not in self.fixturenames: -Step #1 - "Run integration tests": self.fixturenames.append(runner_fixture_id) -Step #1 - "Run integration tests": # When loop factories are configured, resolve the loop factory -Step #1 - "Run integration tests": # fixture early so that a factory variant change cascades cache -Step #1 - "Run integration tests": # invalidation before any async fixture checks its cache. -Step #1 - "Run integration tests": hook_caller = self.config.hook.pytest_asyncio_loop_factories -Step #1 - "Run integration tests": if hook_caller.get_hookimpls(): -Step #1 - "Run integration tests": _ = self._request.getfixturevalue(_asyncio_loop_factory.__name__) -Step #1 - "Run integration tests": > return super().setup() -Step #1 - "Run integration tests": ^^^^^^^^^^^^^^^ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": ../../venv/lib/python3.13/site-packages/pytest_asyncio/plugin.py:558: -Step #1 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_sync[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_missing_params[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_wrong_param_type[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_unauth_with_auth[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_no_auth[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_wrong_auth[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_auth[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_param_auth_no_auth[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_param_auth[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": _ ERROR at setup of TestE2EClientSync.test_run_tool_param_auth_no_field[http://localhost:5001] _ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": toolbox_version = 'main', tools_file_path = '/tmp/tmpgcwnktkh' -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": @pytest.fixture(scope="session") -Step #1 - "Run integration tests": def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None]: -Step #1 - "Run integration tests": """Starts the toolbox server as a subprocess.""" -Step #1 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...") -Step #1 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version) -Step #1 - "Run integration tests": bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" -Step #1 - "Run integration tests": download_blob(bucket_name, source_blob_name, "toolbox") -Step #1 - "Run integration tests": print("Toolbox binary downloaded successfully.") -Step #1 - "Run integration tests": try: -Step #1 - "Run integration tests": print("Opening toolbox server process...") -Step #1 - "Run integration tests": # Make toolbox executable -Step #1 - "Run integration tests": os.chmod("toolbox", 0o700) -Step #1 - "Run integration tests": # Run toolbox binary -Step #1 - "Run integration tests": toolbox_server_1 = subprocess.Popen( -Step #1 - "Run integration tests": ["./toolbox", "--port", "5000", "--tools-file", tools_file_path] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": toolbox_server_2 = subprocess.Popen( -Step #1 - "Run integration tests": [ -Step #1 - "Run integration tests": "./toolbox", -Step #1 - "Run integration tests": "--port", -Step #1 - "Run integration tests": "5001", -Step #1 - "Run integration tests": "--tools-file", -Step #1 - "Run integration tests": tools_file_path, -Step #1 - "Run integration tests": "--enable-draft-specs", -Step #1 - "Run integration tests": ] -Step #1 - "Run integration tests": ) -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": # Wait for server to start -Step #1 - "Run integration tests": # Retry logic with a timeout -Step #1 - "Run integration tests": for _ in range(5): # retries -Step #1 - "Run integration tests": time.sleep(4) -Step #1 - "Run integration tests": print("Checking if both toolbox servers are successfully started...") -Step #1 - "Run integration tests": if toolbox_server_1.poll() is None and toolbox_server_2.poll() is None: -Step #1 - "Run integration tests": print("Toolbox servers started successfully.") -Step #1 - "Run integration tests": break -Step #1 - "Run integration tests": else: -Step #1 - "Run integration tests": > raise RuntimeError("Toolbox servers failed to start after 5 retries.") -Step #1 - "Run integration tests": E RuntimeError: Toolbox servers failed to start after 5 retries. -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": tests/conftest.py:171: RuntimeError -Step #1 - "Run integration tests": ================================ tests coverage ================================ -Step #1 - "Run integration tests": _______________ coverage: platform linux, python 3.13.14-final-0 _______________ -Step #1 - "Run integration tests": -Step #1 - "Run integration tests": Name Stmts Miss Cover -Step #1 - "Run integration tests": ------------------------------------------------------------ -Step #1 - "Run integration tests": src/toolbox_llamaindex/__init__.py 3 0 100% -Step #1 - "Run integration tests": src/toolbox_llamaindex/async_client.py 49 3 94% -Step #1 - "Run integration tests": src/toolbox_llamaindex/async_tools.py 36 5 86% -Step #1 - "Run integration tests": src/toolbox_llamaindex/client.py 79 4 95% -Step #1 - "Run integration tests": src/toolbox_llamaindex/tools.py 38 3 92% -Step #1 - "Run integration tests": src/toolbox_llamaindex/version.py 1 0 100% -Step #1 - "Run integration tests": ------------------------------------------------------------ -Step #1 - "Run integration tests": TOTAL 206 15 93% -Step #1 - "Run integration tests": Required test coverage of 90% reached. Total coverage: 92.72% -Step #1 - "Run integration tests": =========================== short test summary info ============================ -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_aload_toolset_specific[http://localhost:5000-my-toolset-1-expected_tools0] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_aload_toolset_specific[http://localhost:5000-my-toolset-2-2-expected_tools1] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_aload_toolset_all[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_async[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_sync[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_missing_params[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_wrong_param_type[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_unauth_with_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_no_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_wrong_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_param_auth_no_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_param_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_param_auth_no_field[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_load_toolset_specific[http://localhost:5000-my-toolset-1-expected_tools0] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_load_toolset_specific[http://localhost:5000-my-toolset-2-2-expected_tools1] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_aload_toolset_all[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_async[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_sync[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_missing_params[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_wrong_param_type[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_unauth_with_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_no_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_wrong_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_param_auth_no_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_param_auth[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_param_auth_no_field[http://localhost:5000] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_aload_toolset_specific[http://localhost:5001-my-toolset-1-expected_tools0] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_aload_toolset_specific[http://localhost:5001-my-toolset-2-2-expected_tools1] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_aload_toolset_all[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_async[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_sync[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_missing_params[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_wrong_param_type[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_unauth_with_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_no_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_wrong_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_param_auth_no_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_param_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientAsync::test_run_tool_param_auth_no_field[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_load_toolset_specific[http://localhost:5001-my-toolset-1-expected_tools0] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_load_toolset_specific[http://localhost:5001-my-toolset-2-2-expected_tools1] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_aload_toolset_all[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_async[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_sync[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_missing_params[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_wrong_param_type[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_unauth_with_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_no_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_wrong_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_param_auth_no_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_param_auth[http://localhost:5001] -Step #1 - "Run integration tests": ERROR tests/test_e2e.py::TestE2EClientSync::test_run_tool_param_auth_no_field[http://localhost:5001] -Step #1 - "Run integration tests": ======================= 122 passed, 56 errors in 30.15s ======================== -Finished Step #1 - "Run integration tests" -ERROR -ERROR: build step 1 "python:3.13" failed: step exited with non-zero status: 1 --------------------------------------------------------------------------------- diff --git a/packages/toolbox-adk/src/toolbox_adk/tool.py b/packages/toolbox-adk/src/toolbox_adk/tool.py index 6062f345f..0d94821b6 100644 --- a/packages/toolbox-adk/src/toolbox_adk/tool.py +++ b/packages/toolbox-adk/src/toolbox_adk/tool.py @@ -17,10 +17,12 @@ from typing import Any, Awaitable, Callable, Dict, Mapping, Optional import toolbox_core -from fastapi.openapi.models import (OAuth2, OAuthFlowAuthorizationCode, - OAuthFlows) -from google.adk.auth.auth_credential import (AuthCredential, - AuthCredentialTypes, OAuth2Auth) +from fastapi.openapi.models import OAuth2, OAuthFlowAuthorizationCode, OAuthFlows +from google.adk.auth.auth_credential import ( + AuthCredential, + AuthCredentialTypes, + OAuth2Auth, +) from google.adk.auth.auth_tool import AuthConfig from google.adk.tools.base_tool import BaseTool from google.adk.tools.tool_context import ToolContext diff --git a/packages/toolbox-adk/src/toolbox_adk/toolset.py b/packages/toolbox-adk/src/toolbox_adk/toolset.py index e4a8eeb99..7689f96d9 100644 --- a/packages/toolbox-adk/src/toolbox_adk/toolset.py +++ b/packages/toolbox-adk/src/toolbox_adk/toolset.py @@ -12,8 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import (Any, Awaitable, Callable, Dict, List, Mapping, Optional, - Union) +from typing import Any, Awaitable, Callable, Dict, List, Mapping, Optional, Union from google.adk.agents.readonly_context import ReadonlyContext from google.adk.tools.base_tool import BaseTool diff --git a/packages/toolbox-adk/tests/integration/conftest.py b/packages/toolbox-adk/tests/integration/conftest.py index 20aea226d..89b4b1ce3 100644 --- a/packages/toolbox-adk/tests/integration/conftest.py +++ b/packages/toolbox-adk/tests/integration/conftest.py @@ -152,11 +152,7 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None print("Downloading toolbox binary from gcs bucket...") source_blob_name = get_toolbox_binary_url(toolbox_version) - bucket_name = ( - "mcp-toolbox-for-databases-dev" - if toolbox_version in ("main", "mcp-v202606") - else "mcp-toolbox-for-databases" - ) + bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" download_blob(bucket_name, source_blob_name, "toolbox") print("Toolbox binary downloaded successfully.") diff --git a/packages/toolbox-adk/tests/integration/test_integration.py b/packages/toolbox-adk/tests/integration/test_integration.py index 2f5566c4e..780b66d38 100644 --- a/packages/toolbox-adk/tests/integration/test_integration.py +++ b/packages/toolbox-adk/tests/integration/test_integration.py @@ -19,17 +19,20 @@ import pytest from google import genai from google.adk import Agent -from google.adk.auth.auth_credential import (AuthCredential, - AuthCredentialTypes, OAuth2Auth) +from google.adk.auth.auth_credential import ( + AuthCredential, + AuthCredentialTypes, + OAuth2Auth, +) from google.adk.runners import Runner -from google.adk.sessions.in_memory_session_service import \ - InMemorySessionService +from google.adk.sessions.in_memory_session_service import InMemorySessionService from google.adk.tools.base_tool import BaseTool from google.genai import types from pydantic import ValidationError -from toolbox_adk import CredentialStrategy, ToolboxTool, ToolboxToolset from toolbox_core.protocol import Protocol +from toolbox_adk import CredentialStrategy, ToolboxTool, ToolboxToolset + # Ensure TOOLBOX_VERSION is set for the fixture if "TOOLBOX_VERSION" not in os.environ: os.environ["TOOLBOX_VERSION"] = "0.0.1" # Use a valid version or mock @@ -309,9 +312,12 @@ async def test_api_key_integration(self): async def test_adk_integration_optional_params(self): """test that we can create credentials from ADK objects without auth_scheme.""" - from google.adk.auth.auth_credential import (AuthCredential, - AuthCredentialTypes, - HttpAuth, HttpCredentials) + from google.adk.auth.auth_credential import ( + AuthCredential, + AuthCredentialTypes, + HttpAuth, + HttpCredentials, + ) # 1. Create ADK credential (HTTP Bearer) adk_creds = AuthCredential( diff --git a/packages/toolbox-adk/tests/unit/test_client.py b/packages/toolbox-adk/tests/unit/test_client.py index f3bc8f25c..7b1b0a25e 100644 --- a/packages/toolbox-adk/tests/unit/test_client.py +++ b/packages/toolbox-adk/tests/unit/test_client.py @@ -16,6 +16,7 @@ from unittest.mock import AsyncMock, MagicMock, patch import pytest + from toolbox_adk import CredentialStrategy, ToolboxClient from toolbox_adk.client import CredentialConfig, CredentialType diff --git a/packages/toolbox-adk/tests/unit/test_credentials.py b/packages/toolbox-adk/tests/unit/test_credentials.py index c3464ee4c..9e94d5638 100644 --- a/packages/toolbox-adk/tests/unit/test_credentials.py +++ b/packages/toolbox-adk/tests/unit/test_credentials.py @@ -65,9 +65,11 @@ def test_api_key(self): def test_from_adk_credentials_oauth2(self): from fastapi.openapi.models import OAuth2, OAuthFlows - from google.adk.auth.auth_credential import (AuthCredential, - AuthCredentialTypes, - OAuth2Auth) + from google.adk.auth.auth_credential import ( + AuthCredential, + AuthCredentialTypes, + OAuth2Auth, + ) auth_credential = AuthCredential( auth_type=AuthCredentialTypes.OAUTH2, @@ -84,9 +86,12 @@ def test_from_adk_credentials_oauth2(self): def test_from_adk_credentials_http_bearer(self): from fastapi.openapi.models import HTTPBearer - from google.adk.auth.auth_credential import (AuthCredential, - AuthCredentialTypes, - HttpAuth, HttpCredentials) + from google.adk.auth.auth_credential import ( + AuthCredential, + AuthCredentialTypes, + HttpAuth, + HttpCredentials, + ) auth_credential = AuthCredential( auth_type=AuthCredentialTypes.HTTP, @@ -104,8 +109,7 @@ def test_from_adk_credentials_http_bearer(self): def test_from_adk_credentials_api_key(self): from fastapi.openapi.models import APIKey, APIKeyIn - from google.adk.auth.auth_credential import (AuthCredential, - AuthCredentialTypes) + from google.adk.auth.auth_credential import AuthCredential, AuthCredentialTypes auth_credential = AuthCredential( auth_type=AuthCredentialTypes.API_KEY, api_key="abc" @@ -122,8 +126,7 @@ def test_from_adk_credentials_api_key(self): def test_from_adk_credentials_api_key_default_location(self): from fastapi.openapi.models import APIKey - from google.adk.auth.auth_credential import (AuthCredential, - AuthCredentialTypes) + from google.adk.auth.auth_credential import AuthCredential, AuthCredentialTypes auth_credential = AuthCredential( auth_type=AuthCredentialTypes.API_KEY, api_key="abc" @@ -148,8 +151,7 @@ class MockScheme: def test_from_adk_credentials_api_key_query_fail(self): import pytest from fastapi.openapi.models import APIKey, APIKeyIn - from google.adk.auth.auth_credential import (AuthCredential, - AuthCredentialTypes) + from google.adk.auth.auth_credential import AuthCredential, AuthCredentialTypes cred = AuthCredential(auth_type=AuthCredentialTypes.API_KEY, api_key="abc") scheme = APIKey(type="apiKey", name="key", **{"in": APIKeyIn.query}) @@ -161,8 +163,7 @@ def test_from_adk_credentials_api_key_query_fail(self): def test_from_adk_credentials_api_key_no_scheme_raises(self): import pytest - from google.adk.auth.auth_credential import (AuthCredential, - AuthCredentialTypes) + from google.adk.auth.auth_credential import AuthCredential, AuthCredentialTypes auth_credential = AuthCredential( auth_type=AuthCredentialTypes.API_KEY, api_key="my-key" @@ -174,8 +175,7 @@ def test_from_adk_credentials_api_key_no_scheme_raises(self): def test_from_adk_credentials_unsupported(self): import pytest - from google.adk.auth.auth_credential import (AuthCredential, - AuthCredentialTypes) + from google.adk.auth.auth_credential import AuthCredential, AuthCredentialTypes auth_credential = AuthCredential( auth_type=AuthCredentialTypes.OAUTH2 @@ -186,9 +186,11 @@ def test_from_adk_credentials_unsupported(self): def test_from_adk_auth_config(self): from fastapi.openapi.models import OAuth2, OAuthFlows - from google.adk.auth.auth_credential import (AuthCredential, - AuthCredentialTypes, - OAuth2Auth) + from google.adk.auth.auth_credential import ( + AuthCredential, + AuthCredentialTypes, + OAuth2Auth, + ) from google.adk.auth.auth_tool import AuthConfig oauth2_auth = OAuth2Auth(client_id="cid2", client_secret="csec2", scopes=["s2"]) diff --git a/packages/toolbox-adk/tests/unit/test_tool.py b/packages/toolbox-adk/tests/unit/test_tool.py index 0dc2e4bfe..3b55290ea 100644 --- a/packages/toolbox-adk/tests/unit/test_tool.py +++ b/packages/toolbox-adk/tests/unit/test_tool.py @@ -16,6 +16,7 @@ import pytest from google.genai.types import Type + from toolbox_adk.credentials import CredentialConfig, CredentialType from toolbox_adk.tool import ToolboxTool diff --git a/packages/toolbox-adk/tests/unit/test_toolset.py b/packages/toolbox-adk/tests/unit/test_toolset.py index 86a121333..ff632e1ea 100644 --- a/packages/toolbox-adk/tests/unit/test_toolset.py +++ b/packages/toolbox-adk/tests/unit/test_toolset.py @@ -16,9 +16,10 @@ from unittest.mock import AsyncMock, MagicMock, patch import pytest +from toolbox_core.protocol import Protocol + from toolbox_adk.tool import ToolboxTool from toolbox_adk.toolset import ToolboxToolset -from toolbox_core.protocol import Protocol class TestToolboxToolset: diff --git a/packages/toolbox-core/src/toolbox_core/client.py b/packages/toolbox-core/src/toolbox_core/client.py index 8efd2ad0d..b2224eedc 100644 --- a/packages/toolbox-core/src/toolbox_core/client.py +++ b/packages/toolbox-core/src/toolbox_core/client.py @@ -20,19 +20,26 @@ from aiohttp import ClientSession from deprecated import deprecated + from toolbox_core.exceptions import ProtocolNegotiationError from . import version from .itransport import ITransport -from .mcp_transport import (McpHttpTransportV20241105, - McpHttpTransportV20250326, - McpHttpTransportV20250618, - McpHttpTransportV20251125, - McpHttpTransportV20260618) +from .mcp_transport import ( + McpHttpTransportV20241105, + McpHttpTransportV20250326, + McpHttpTransportV20250618, + McpHttpTransportV20251125, + McpHttpTransportV20260618, +) from .protocol import Protocol, ToolSchema from .tool import ToolboxTool -from .utils import (identify_auth_requirements, resolve_value, - validate_unused_requirements, warn_if_http_and_headers) +from .utils import ( + identify_auth_requirements, + resolve_value, + validate_unused_requirements, + warn_if_http_and_headers, +) class _McpTransportProxy(ITransport): diff --git a/packages/toolbox-core/src/toolbox_core/mcp_transport/telemetry.py b/packages/toolbox-core/src/toolbox_core/mcp_transport/telemetry.py index 1cca9b9b2..ab9972034 100644 --- a/packages/toolbox-core/src/toolbox_core/mcp_transport/telemetry.py +++ b/packages/toolbox-core/src/toolbox_core/mcp_transport/telemetry.py @@ -33,8 +33,9 @@ from opentelemetry import metrics, trace from opentelemetry.metrics import Histogram, Meter from opentelemetry.trace import Span, SpanKind, Status, StatusCode, Tracer - from opentelemetry.trace.propagation.tracecontext import \ - TraceContextTextMapPropagator + from opentelemetry.trace.propagation.tracecontext import ( + TraceContextTextMapPropagator, + ) TELEMETRY_AVAILABLE = True except ImportError: diff --git a/packages/toolbox-core/src/toolbox_core/mcp_transport/transport_base.py b/packages/toolbox-core/src/toolbox_core/mcp_transport/transport_base.py index b91d957aa..735ae9066 100644 --- a/packages/toolbox-core/src/toolbox_core/mcp_transport/transport_base.py +++ b/packages/toolbox-core/src/toolbox_core/mcp_transport/transport_base.py @@ -21,8 +21,13 @@ from .. import version from ..itransport import ITransport -from ..protocol import (AdditionalPropertiesSchema, ParameterSchema, Protocol, - TelemetryAttributes, ToolSchema) +from ..protocol import ( + AdditionalPropertiesSchema, + ParameterSchema, + Protocol, + TelemetryAttributes, + ToolSchema, +) from . import telemetry diff --git a/packages/toolbox-core/src/toolbox_core/tool.py b/packages/toolbox-core/src/toolbox_core/tool.py index 8ef2c8ef1..89212325e 100644 --- a/packages/toolbox-core/src/toolbox_core/tool.py +++ b/packages/toolbox-core/src/toolbox_core/tool.py @@ -20,9 +20,13 @@ from .itransport import ITransport from .protocol import ParameterSchema, TelemetryAttributes -from .utils import (create_func_docstring, identify_auth_requirements, - params_to_pydantic_model, resolve_value, - warn_if_http_and_headers) +from .utils import ( + create_func_docstring, + identify_auth_requirements, + params_to_pydantic_model, + resolve_value, + warn_if_http_and_headers, +) class ToolboxTool: diff --git a/packages/toolbox-core/src/toolbox_core/utils.py b/packages/toolbox-core/src/toolbox_core/utils.py index 7330625a6..92660c84b 100644 --- a/packages/toolbox-core/src/toolbox_core/utils.py +++ b/packages/toolbox-core/src/toolbox_core/utils.py @@ -15,10 +15,20 @@ import asyncio import warnings -from typing import (Any, Awaitable, Callable, Iterable, Mapping, Sequence, - Type, Union, cast) +from typing import ( + Any, + Awaitable, + Callable, + Iterable, + Mapping, + Sequence, + Type, + Union, + cast, +) from pydantic import BaseModel, Field, create_model + from toolbox_core.protocol import ParameterSchema diff --git a/packages/toolbox-core/tests/conftest.py b/packages/toolbox-core/tests/conftest.py index 2e500752e..1dfe4a3ac 100644 --- a/packages/toolbox-core/tests/conftest.py +++ b/packages/toolbox-core/tests/conftest.py @@ -137,11 +137,7 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None """Starts the toolbox server as a subprocess.""" print("Downloading toolbox binary from gcs bucket...") source_blob_name = get_toolbox_binary_url(toolbox_version) - bucket_name = ( - "mcp-toolbox-for-databases-dev" - if toolbox_version in ("main", "mcp-v202606") - else "mcp-toolbox-for-databases" - ) + bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" download_blob(bucket_name, source_blob_name, "toolbox") print("Toolbox binary downloaded successfully.") try: diff --git a/packages/toolbox-core/tests/mcp_transport/test_base.py b/packages/toolbox-core/tests/mcp_transport/test_base.py index bfd8ed1f2..785065023 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_base.py +++ b/packages/toolbox-core/tests/mcp_transport/test_base.py @@ -19,6 +19,7 @@ import pytest import pytest_asyncio from aiohttp import ClientSession + from toolbox_core.mcp_transport.transport_base import _McpHttpTransportBase from toolbox_core.protocol import TelemetryAttributes, ToolSchema diff --git a/packages/toolbox-core/tests/mcp_transport/test_telemetry.py b/packages/toolbox-core/tests/mcp_transport/test_telemetry.py index 359232aa6..f3a2eaff8 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_telemetry.py +++ b/packages/toolbox-core/tests/mcp_transport/test_telemetry.py @@ -15,16 +15,31 @@ from unittest.mock import ANY, MagicMock, patch import pytest + import toolbox_core.mcp_transport.telemetry as telemetry_module from toolbox_core.mcp_transport.telemetry import ( - ATTR_ERROR_TYPE, ATTR_GEN_AI_OPERATION_NAME, ATTR_GEN_AI_TOOL_NAME, - ATTR_MCP_METHOD_NAME, ATTR_MCP_PROTOCOL_VERSION, - ATTR_NETWORK_PROTOCOL_NAME, ATTR_NETWORK_TRANSPORT, ATTR_SERVER_ADDRESS, - ATTR_SERVER_PORT, create_operation_duration_histogram, - create_session_duration_histogram, create_traceparent_from_context, - create_tracestate_from_context, end_span, extract_server_info, get_meter, - get_tracer, record_error_from_jsonrpc, record_operation_duration, - record_session_duration, start_span) + ATTR_ERROR_TYPE, + ATTR_GEN_AI_OPERATION_NAME, + ATTR_GEN_AI_TOOL_NAME, + ATTR_MCP_METHOD_NAME, + ATTR_MCP_PROTOCOL_VERSION, + ATTR_NETWORK_PROTOCOL_NAME, + ATTR_NETWORK_TRANSPORT, + ATTR_SERVER_ADDRESS, + ATTR_SERVER_PORT, + create_operation_duration_histogram, + create_session_duration_histogram, + create_traceparent_from_context, + create_tracestate_from_context, + end_span, + extract_server_info, + get_meter, + get_tracer, + record_error_from_jsonrpc, + record_operation_duration, + record_session_duration, + start_span, +) class TestGetTracer: diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20241105.py b/packages/toolbox-core/tests/mcp_transport/test_v20241105.py index 89af3827f..eadb0e264 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20241105.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20241105.py @@ -17,6 +17,7 @@ import pytest import pytest_asyncio from aiohttp import ClientSession + from toolbox_core.exceptions import ProtocolNegotiationError from toolbox_core.mcp_transport.v20241105 import types from toolbox_core.mcp_transport.v20241105.mcp import McpHttpTransportV20241105 diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20250326.py b/packages/toolbox-core/tests/mcp_transport/test_v20250326.py index ce4f94139..a9fb3f35b 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20250326.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20250326.py @@ -17,6 +17,7 @@ import pytest import pytest_asyncio from aiohttp import ClientSession + from toolbox_core.mcp_transport.v20250326 import types from toolbox_core.mcp_transport.v20250326.mcp import McpHttpTransportV20250326 from toolbox_core.protocol import ManifestSchema, Protocol diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20250618.py b/packages/toolbox-core/tests/mcp_transport/test_v20250618.py index 0da5f12d9..b5a1a0a94 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20250618.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20250618.py @@ -17,6 +17,7 @@ import pytest import pytest_asyncio from aiohttp import ClientSession + from toolbox_core.exceptions import ProtocolNegotiationError from toolbox_core.mcp_transport.v20250618 import types from toolbox_core.mcp_transport.v20250618.mcp import McpHttpTransportV20250618 diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20251125.py b/packages/toolbox-core/tests/mcp_transport/test_v20251125.py index 190ad6970..f575b81bc 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20251125.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20251125.py @@ -17,6 +17,7 @@ import pytest import pytest_asyncio from aiohttp import ClientSession + from toolbox_core.exceptions import ProtocolNegotiationError from toolbox_core.mcp_transport.v20251125 import types from toolbox_core.mcp_transport.v20251125.mcp import McpHttpTransportV20251125 diff --git a/packages/toolbox-core/tests/mcp_transport/test_v20260618.py b/packages/toolbox-core/tests/mcp_transport/test_v20260618.py index dd927252b..5c751320f 100644 --- a/packages/toolbox-core/tests/mcp_transport/test_v20260618.py +++ b/packages/toolbox-core/tests/mcp_transport/test_v20260618.py @@ -17,6 +17,7 @@ import pytest import pytest_asyncio from aiohttp import ClientSession + from toolbox_core.mcp_transport.v20260618 import types from toolbox_core.mcp_transport.v20260618.mcp import McpHttpTransportV20260618 from toolbox_core.protocol import ManifestSchema, Protocol diff --git a/packages/toolbox-core/tests/test_auth_methods.py b/packages/toolbox-core/tests/test_auth_methods.py index 07ac56c78..cd78073f7 100644 --- a/packages/toolbox-core/tests/test_auth_methods.py +++ b/packages/toolbox-core/tests/test_auth_methods.py @@ -17,6 +17,7 @@ import pytest from google.auth.exceptions import GoogleAuthError + from toolbox_core import auth_methods # Constants for test values diff --git a/packages/toolbox-core/tests/test_client.py b/packages/toolbox-core/tests/test_client.py index 1f0dfeabe..e28bb03a1 100644 --- a/packages/toolbox-core/tests/test_client.py +++ b/packages/toolbox-core/tests/test_client.py @@ -20,10 +20,16 @@ import pytest from aiohttp import web + from toolbox_core.client import ToolboxClient from toolbox_core.itransport import ITransport -from toolbox_core.protocol import (ManifestSchema, ParameterSchema, Protocol, - TelemetryAttributes, ToolSchema) +from toolbox_core.protocol import ( + ManifestSchema, + ParameterSchema, + Protocol, + TelemetryAttributes, + ToolSchema, +) TEST_BASE_URL = "http://toolbox.example.com" diff --git a/packages/toolbox-core/tests/test_e2e.py b/packages/toolbox-core/tests/test_e2e.py index 273ddc085..0b926e178 100644 --- a/packages/toolbox-core/tests/test_e2e.py +++ b/packages/toolbox-core/tests/test_e2e.py @@ -18,6 +18,7 @@ import pytest import pytest_asyncio from pydantic import ValidationError + from toolbox_core.client import ToolboxClient from toolbox_core.protocol import Protocol from toolbox_core.tool import ToolboxTool diff --git a/packages/toolbox-core/tests/test_e2e_mcp.py b/packages/toolbox-core/tests/test_e2e_mcp.py index 8a7fe5c3a..618ae171d 100644 --- a/packages/toolbox-core/tests/test_e2e_mcp.py +++ b/packages/toolbox-core/tests/test_e2e_mcp.py @@ -18,6 +18,7 @@ import pytest import pytest_asyncio from pydantic import ValidationError + from toolbox_core.client import ToolboxClient from toolbox_core.protocol import Protocol from toolbox_core.tool import ToolboxTool diff --git a/packages/toolbox-core/tests/test_protocol.py b/packages/toolbox-core/tests/test_protocol.py index f3ab0cb9a..3c50b3225 100644 --- a/packages/toolbox-core/tests/test_protocol.py +++ b/packages/toolbox-core/tests/test_protocol.py @@ -17,8 +17,13 @@ from typing import Any, Optional import pytest -from toolbox_core.protocol import (AdditionalPropertiesSchema, ParameterSchema, - Protocol, TelemetryAttributes) + +from toolbox_core.protocol import ( + AdditionalPropertiesSchema, + ParameterSchema, + Protocol, + TelemetryAttributes, +) # --------------------------------------------------------------------------- # # TelemetryAttributes — wire format & alias contract # diff --git a/packages/toolbox-core/tests/test_sync_client.py b/packages/toolbox-core/tests/test_sync_client.py index ee5d5da67..6a6649b9f 100644 --- a/packages/toolbox-core/tests/test_sync_client.py +++ b/packages/toolbox-core/tests/test_sync_client.py @@ -18,10 +18,15 @@ from unittest.mock import AsyncMock, Mock, patch import pytest + from toolbox_core.client import ToolboxClient from toolbox_core.itransport import ITransport -from toolbox_core.protocol import (ManifestSchema, ParameterSchema, - TelemetryAttributes, ToolSchema) +from toolbox_core.protocol import ( + ManifestSchema, + ParameterSchema, + TelemetryAttributes, + ToolSchema, +) from toolbox_core.sync_client import ToolboxSyncClient from toolbox_core.sync_tool import ToolboxSyncTool diff --git a/packages/toolbox-core/tests/test_sync_e2e.py b/packages/toolbox-core/tests/test_sync_e2e.py index 3b8a74304..a306cedc2 100644 --- a/packages/toolbox-core/tests/test_sync_e2e.py +++ b/packages/toolbox-core/tests/test_sync_e2e.py @@ -13,6 +13,7 @@ # limitations under the License. import pytest + from toolbox_core.sync_client import ToolboxSyncClient from toolbox_core.sync_tool import ToolboxSyncTool diff --git a/packages/toolbox-core/tests/test_sync_tool.py b/packages/toolbox-core/tests/test_sync_tool.py index 20ac5ae5a..7db4f94e1 100644 --- a/packages/toolbox-core/tests/test_sync_tool.py +++ b/packages/toolbox-core/tests/test_sync_tool.py @@ -20,6 +20,7 @@ from unittest.mock import MagicMock, Mock, create_autospec, patch import pytest + from toolbox_core.protocol import TelemetryAttributes from toolbox_core.sync_tool import ToolboxSyncTool from toolbox_core.tool import ToolboxTool diff --git a/packages/toolbox-core/tests/test_tool.py b/packages/toolbox-core/tests/test_tool.py index 9d8b7ccc4..1b23db3ae 100644 --- a/packages/toolbox-core/tests/test_tool.py +++ b/packages/toolbox-core/tests/test_tool.py @@ -24,6 +24,7 @@ from aiohttp import ClientSession from aioresponses import aioresponses from pydantic import ValidationError + from toolbox_core.itransport import ITransport from toolbox_core.protocol import ParameterSchema, TelemetryAttributes from toolbox_core.tool import ToolboxTool diff --git a/packages/toolbox-core/tests/test_utils.py b/packages/toolbox-core/tests/test_utils.py index 3ec60a5d4..ec6ebb22b 100644 --- a/packages/toolbox-core/tests/test_utils.py +++ b/packages/toolbox-core/tests/test_utils.py @@ -20,11 +20,15 @@ import pytest from pydantic import BaseModel, ValidationError + from toolbox_core.protocol import ParameterSchema -from toolbox_core.utils import (create_func_docstring, - identify_auth_requirements, - params_to_pydantic_model, resolve_value, - warn_if_http_and_headers) +from toolbox_core.utils import ( + create_func_docstring, + identify_auth_requirements, + params_to_pydantic_model, + resolve_value, + warn_if_http_and_headers, +) def create_param_mock(name: str, description: str, annotation: Type) -> Mock: diff --git a/packages/toolbox-langchain/tests/conftest.py b/packages/toolbox-langchain/tests/conftest.py index 7fe322b6d..24db10123 100644 --- a/packages/toolbox-langchain/tests/conftest.py +++ b/packages/toolbox-langchain/tests/conftest.py @@ -137,11 +137,7 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None """Starts the toolbox server as a subprocess.""" print("Downloading toolbox binary from gcs bucket...") source_blob_name = get_toolbox_binary_url(toolbox_version) - bucket_name = ( - "mcp-toolbox-for-databases-dev" - if toolbox_version in ("main", "mcp-v202606") - else "mcp-toolbox-for-databases" - ) + bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" download_blob(bucket_name, source_blob_name, "toolbox") print("Toolbox binary downloaded successfully.") try: diff --git a/packages/toolbox-langchain/tests/test_async_client.py b/packages/toolbox-langchain/tests/test_async_client.py index c93468d48..9da3511df 100644 --- a/packages/toolbox-langchain/tests/test_async_client.py +++ b/packages/toolbox-langchain/tests/test_async_client.py @@ -21,6 +21,7 @@ from toolbox_core.protocol import ParameterSchema as CoreParameterSchema from toolbox_core.protocol import Protocol from toolbox_core.tool import ToolboxTool as ToolboxCoreTool + from toolbox_langchain.async_client import AsyncToolboxClient from toolbox_langchain.async_tools import AsyncToolboxTool diff --git a/packages/toolbox-langchain/tests/test_client.py b/packages/toolbox-langchain/tests/test_client.py index eb7275455..6150d4a17 100644 --- a/packages/toolbox-langchain/tests/test_client.py +++ b/packages/toolbox-langchain/tests/test_client.py @@ -20,6 +20,7 @@ from toolbox_core.protocol import Protocol from toolbox_core.sync_tool import ToolboxSyncTool as ToolboxCoreSyncTool from toolbox_core.utils import params_to_pydantic_model + from toolbox_langchain.client import ToolboxClient from toolbox_langchain.tools import ToolboxTool diff --git a/packages/toolbox-langchain/tests/test_e2e.py b/packages/toolbox-langchain/tests/test_e2e.py index 924f58040..93fbd01ea 100644 --- a/packages/toolbox-langchain/tests/test_e2e.py +++ b/packages/toolbox-langchain/tests/test_e2e.py @@ -37,6 +37,7 @@ import pytest import pytest_asyncio from pydantic import ValidationError + from toolbox_langchain.client import ToolboxClient diff --git a/packages/toolbox-langchain/tests/test_tools.py b/packages/toolbox-langchain/tests/test_tools.py index 0d41a1a3c..9775283a3 100644 --- a/packages/toolbox-langchain/tests/test_tools.py +++ b/packages/toolbox-langchain/tests/test_tools.py @@ -21,6 +21,7 @@ from toolbox_core.sync_tool import ToolboxSyncTool as ToolboxCoreSyncTool from toolbox_core.tool import ToolboxTool as CoreAsyncTool from toolbox_core.utils import params_to_pydantic_model + from toolbox_langchain.tools import ToolboxTool diff --git a/packages/toolbox-llamaindex/tests/conftest.py b/packages/toolbox-llamaindex/tests/conftest.py index e5bd6f771..a053f164d 100644 --- a/packages/toolbox-llamaindex/tests/conftest.py +++ b/packages/toolbox-llamaindex/tests/conftest.py @@ -137,11 +137,7 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None """Starts the toolbox server as a subprocess.""" print("Downloading toolbox binary from gcs bucket...") source_blob_name = get_toolbox_binary_url(toolbox_version) - bucket_name = ( - "mcp-toolbox-for-databases-dev" - if toolbox_version in ("main", "mcp-v202606") - else "mcp-toolbox-for-databases" - ) + bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" download_blob(bucket_name, source_blob_name, "toolbox") print("Toolbox binary downloaded successfully.") try: diff --git a/packages/toolbox-llamaindex/tests/test_async_client.py b/packages/toolbox-llamaindex/tests/test_async_client.py index 26a07cb11..6011a3474 100644 --- a/packages/toolbox-llamaindex/tests/test_async_client.py +++ b/packages/toolbox-llamaindex/tests/test_async_client.py @@ -21,6 +21,7 @@ from toolbox_core.protocol import ParameterSchema as CoreParameterSchema from toolbox_core.protocol import Protocol from toolbox_core.tool import ToolboxTool as ToolboxCoreTool + from toolbox_llamaindex.async_client import AsyncToolboxClient from toolbox_llamaindex.async_tools import AsyncToolboxTool diff --git a/packages/toolbox-llamaindex/tests/test_client.py b/packages/toolbox-llamaindex/tests/test_client.py index bf8379f02..9ae5364d2 100644 --- a/packages/toolbox-llamaindex/tests/test_client.py +++ b/packages/toolbox-llamaindex/tests/test_client.py @@ -20,6 +20,7 @@ from toolbox_core.protocol import Protocol from toolbox_core.sync_tool import ToolboxSyncTool as ToolboxCoreSyncTool from toolbox_core.utils import params_to_pydantic_model + from toolbox_llamaindex.client import ToolboxClient from toolbox_llamaindex.tools import ToolboxTool diff --git a/packages/toolbox-llamaindex/tests/test_e2e.py b/packages/toolbox-llamaindex/tests/test_e2e.py index f4006862d..e0cdba4cb 100644 --- a/packages/toolbox-llamaindex/tests/test_e2e.py +++ b/packages/toolbox-llamaindex/tests/test_e2e.py @@ -37,6 +37,7 @@ import pytest import pytest_asyncio from pydantic import ValidationError + from toolbox_llamaindex.client import ToolboxClient diff --git a/packages/toolbox-llamaindex/tests/test_tools.py b/packages/toolbox-llamaindex/tests/test_tools.py index 77843b9fc..980926acb 100644 --- a/packages/toolbox-llamaindex/tests/test_tools.py +++ b/packages/toolbox-llamaindex/tests/test_tools.py @@ -22,6 +22,7 @@ from toolbox_core.sync_tool import ToolboxSyncTool as ToolboxCoreSyncTool from toolbox_core.tool import ToolboxTool as CoreAsyncTool from toolbox_core.utils import params_to_pydantic_model + from toolbox_llamaindex.async_tools import AsyncToolboxTool from toolbox_llamaindex.tools import ToolboxTool From adc0d07a96bec6b60fad5c087f3dd2ea64fe2092 Mon Sep 17 00:00:00 2001 From: Anubhav Dhawan Date: Tue, 30 Jun 2026 22:19:39 +0530 Subject: [PATCH 17/19] chore(test): fix line length in bucket name selection --- packages/toolbox-adk/tests/integration/conftest.py | 6 +++++- packages/toolbox-core/tests/conftest.py | 6 +++++- packages/toolbox-langchain/tests/conftest.py | 6 +++++- packages/toolbox-llamaindex/tests/conftest.py | 6 +++++- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/packages/toolbox-adk/tests/integration/conftest.py b/packages/toolbox-adk/tests/integration/conftest.py index 89b4b1ce3..20aea226d 100644 --- a/packages/toolbox-adk/tests/integration/conftest.py +++ b/packages/toolbox-adk/tests/integration/conftest.py @@ -152,7 +152,11 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None print("Downloading toolbox binary from gcs bucket...") source_blob_name = get_toolbox_binary_url(toolbox_version) - bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" + bucket_name = ( + "mcp-toolbox-for-databases-dev" + if toolbox_version in ("main", "mcp-v202606") + else "mcp-toolbox-for-databases" + ) download_blob(bucket_name, source_blob_name, "toolbox") print("Toolbox binary downloaded successfully.") diff --git a/packages/toolbox-core/tests/conftest.py b/packages/toolbox-core/tests/conftest.py index 1dfe4a3ac..2e500752e 100644 --- a/packages/toolbox-core/tests/conftest.py +++ b/packages/toolbox-core/tests/conftest.py @@ -137,7 +137,11 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None """Starts the toolbox server as a subprocess.""" print("Downloading toolbox binary from gcs bucket...") source_blob_name = get_toolbox_binary_url(toolbox_version) - bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" + bucket_name = ( + "mcp-toolbox-for-databases-dev" + if toolbox_version in ("main", "mcp-v202606") + else "mcp-toolbox-for-databases" + ) download_blob(bucket_name, source_blob_name, "toolbox") print("Toolbox binary downloaded successfully.") try: diff --git a/packages/toolbox-langchain/tests/conftest.py b/packages/toolbox-langchain/tests/conftest.py index 24db10123..7fe322b6d 100644 --- a/packages/toolbox-langchain/tests/conftest.py +++ b/packages/toolbox-langchain/tests/conftest.py @@ -137,7 +137,11 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None """Starts the toolbox server as a subprocess.""" print("Downloading toolbox binary from gcs bucket...") source_blob_name = get_toolbox_binary_url(toolbox_version) - bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" + bucket_name = ( + "mcp-toolbox-for-databases-dev" + if toolbox_version in ("main", "mcp-v202606") + else "mcp-toolbox-for-databases" + ) download_blob(bucket_name, source_blob_name, "toolbox") print("Toolbox binary downloaded successfully.") try: diff --git a/packages/toolbox-llamaindex/tests/conftest.py b/packages/toolbox-llamaindex/tests/conftest.py index a053f164d..e5bd6f771 100644 --- a/packages/toolbox-llamaindex/tests/conftest.py +++ b/packages/toolbox-llamaindex/tests/conftest.py @@ -137,7 +137,11 @@ def toolbox_server(toolbox_version: str, tools_file_path: str) -> Generator[None """Starts the toolbox server as a subprocess.""" print("Downloading toolbox binary from gcs bucket...") source_blob_name = get_toolbox_binary_url(toolbox_version) - bucket_name = "mcp-toolbox-for-databases-dev" if toolbox_version in ("main", "mcp-v202606") else "mcp-toolbox-for-databases" + bucket_name = ( + "mcp-toolbox-for-databases-dev" + if toolbox_version in ("main", "mcp-v202606") + else "mcp-toolbox-for-databases" + ) download_blob(bucket_name, source_blob_name, "toolbox") print("Toolbox binary downloaded successfully.") try: From bb72dfb5d18d51c15c5023a87ef207817d60621f Mon Sep 17 00:00:00 2001 From: Anubhav Dhawan Date: Wed, 1 Jul 2026 10:11:15 +0530 Subject: [PATCH 18/19] chore: bump TOOLBOX_VERSION to v1.6.0 --- fix_versions.py | 26 +++++++++++++++++++ .../toolbox-adk/integration.cloudbuild.yaml | 2 +- .../toolbox-core/integration.cloudbuild.yaml | 2 +- .../integration.cloudbuild.yaml | 2 +- .../integration.cloudbuild.yaml | 2 +- 5 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 fix_versions.py diff --git a/fix_versions.py b/fix_versions.py new file mode 100644 index 000000000..b6fbfdfc5 --- /dev/null +++ b/fix_versions.py @@ -0,0 +1,26 @@ +import os +import glob + +def replace_in_file(filepath, old_text, new_text): + if not os.path.exists(filepath): + return + with open(filepath, 'r') as f: + content = f.read() + new_content = content.replace(old_text, new_text) + if content != new_content: + with open(filepath, 'w') as f: + f.write(new_content) + print(f"Updated {filepath}") + +# Python SDK +for path in glob.glob('/Users/anubhavdhawan/Documents/mcp-toolbox-sdk-python/**/integration.cloudbuild.yaml', recursive=True): + replace_in_file(path, "_TOOLBOX_VERSION: 'mcp-v202606'", "_TOOLBOX_VERSION: 'v1.6.0'") + +# JS SDK +replace_in_file('/Users/anubhavdhawan/Documents/mcp-toolbox-sdk-js/.ci/integration.cloudbuild.yaml', "mcp-v202606", "v1.6.0") + +# Go SDK +replace_in_file('/Users/anubhavdhawan/Documents/mcp-toolbox-sdk-go/.ci/integration.cloudbuild.yaml', "mcp-v202606", "v1.6.0") +replace_in_file('/Users/anubhavdhawan/Documents/mcp-toolbox-sdk-go/tests/e2e/e2e_test.go', "mcp-v202606", "v1.6.0") + +print("Done") diff --git a/packages/toolbox-adk/integration.cloudbuild.yaml b/packages/toolbox-adk/integration.cloudbuild.yaml index 5834b827a..3bdf3fa4a 100644 --- a/packages/toolbox-adk/integration.cloudbuild.yaml +++ b/packages/toolbox-adk/integration.cloudbuild.yaml @@ -50,5 +50,5 @@ options: substitutions: _VERSION: '3.13' # Default values (can be overridden by triggers) - _TOOLBOX_VERSION: 'mcp-v202606' + _TOOLBOX_VERSION: 'v1.6.0' _TOOLBOX_MANIFEST_VERSION: '34' diff --git a/packages/toolbox-core/integration.cloudbuild.yaml b/packages/toolbox-core/integration.cloudbuild.yaml index 2b994816e..a384d4de7 100644 --- a/packages/toolbox-core/integration.cloudbuild.yaml +++ b/packages/toolbox-core/integration.cloudbuild.yaml @@ -45,5 +45,5 @@ options: logging: CLOUD_LOGGING_ONLY substitutions: _VERSION: '3.13' - _TOOLBOX_VERSION: 'mcp-v202606' + _TOOLBOX_VERSION: 'v1.6.0' _TOOLBOX_MANIFEST_VERSION: '34' diff --git a/packages/toolbox-langchain/integration.cloudbuild.yaml b/packages/toolbox-langchain/integration.cloudbuild.yaml index 8eee5ae29..ccadbb557 100644 --- a/packages/toolbox-langchain/integration.cloudbuild.yaml +++ b/packages/toolbox-langchain/integration.cloudbuild.yaml @@ -49,5 +49,5 @@ options: logging: CLOUD_LOGGING_ONLY substitutions: _VERSION: '3.13' - _TOOLBOX_VERSION: 'mcp-v202606' + _TOOLBOX_VERSION: 'v1.6.0' _TOOLBOX_MANIFEST_VERSION: '34' diff --git a/packages/toolbox-llamaindex/integration.cloudbuild.yaml b/packages/toolbox-llamaindex/integration.cloudbuild.yaml index 6f2513b8b..2054900fa 100644 --- a/packages/toolbox-llamaindex/integration.cloudbuild.yaml +++ b/packages/toolbox-llamaindex/integration.cloudbuild.yaml @@ -49,5 +49,5 @@ options: logging: CLOUD_LOGGING_ONLY substitutions: _VERSION: '3.13' - _TOOLBOX_VERSION: 'mcp-v202606' + _TOOLBOX_VERSION: 'v1.6.0' _TOOLBOX_MANIFEST_VERSION: '34' From caf7b85471876bc72c0f04cfe505e841cf3fbb92 Mon Sep 17 00:00:00 2001 From: Anubhav Dhawan Date: Wed, 1 Jul 2026 18:31:59 +0530 Subject: [PATCH 19/19] test: parameterize integration tests to run comprehensively for both stable and draft MCP versions --- fix_versions.py | 26 --------------------- packages/toolbox-core/tests/test_e2e_mcp.py | 6 ++--- 2 files changed, 2 insertions(+), 30 deletions(-) delete mode 100644 fix_versions.py diff --git a/fix_versions.py b/fix_versions.py deleted file mode 100644 index b6fbfdfc5..000000000 --- a/fix_versions.py +++ /dev/null @@ -1,26 +0,0 @@ -import os -import glob - -def replace_in_file(filepath, old_text, new_text): - if not os.path.exists(filepath): - return - with open(filepath, 'r') as f: - content = f.read() - new_content = content.replace(old_text, new_text) - if content != new_content: - with open(filepath, 'w') as f: - f.write(new_content) - print(f"Updated {filepath}") - -# Python SDK -for path in glob.glob('/Users/anubhavdhawan/Documents/mcp-toolbox-sdk-python/**/integration.cloudbuild.yaml', recursive=True): - replace_in_file(path, "_TOOLBOX_VERSION: 'mcp-v202606'", "_TOOLBOX_VERSION: 'v1.6.0'") - -# JS SDK -replace_in_file('/Users/anubhavdhawan/Documents/mcp-toolbox-sdk-js/.ci/integration.cloudbuild.yaml', "mcp-v202606", "v1.6.0") - -# Go SDK -replace_in_file('/Users/anubhavdhawan/Documents/mcp-toolbox-sdk-go/.ci/integration.cloudbuild.yaml', "mcp-v202606", "v1.6.0") -replace_in_file('/Users/anubhavdhawan/Documents/mcp-toolbox-sdk-go/tests/e2e/e2e_test.go', "mcp-v202606", "v1.6.0") - -print("Done") diff --git a/packages/toolbox-core/tests/test_e2e_mcp.py b/packages/toolbox-core/tests/test_e2e_mcp.py index 618ae171d..7ffb3ddfa 100644 --- a/packages/toolbox-core/tests/test_e2e_mcp.py +++ b/packages/toolbox-core/tests/test_e2e_mcp.py @@ -24,11 +24,9 @@ from toolbox_core.tool import ToolboxTool -# TODO: Include draft versions in E2E integration tests once the server -# supports SEP-2575 (stateless MCP / Request-Metadata). @pytest_asyncio.fixture( scope="function", - params=[v for v in Protocol.get_supported_mcp_versions() if "DRAFT" not in v], + params=[v for v in Protocol.get_supported_mcp_versions()], ) async def toolbox(request): """Creates a ToolboxClient instance shared by all tests in this module.""" @@ -105,7 +103,7 @@ async def test_protocol_fallback_e2e(self, toolbox_server_url: str): # The E2E server currently does not support DRAFT 2026 on port 5000, so this will trigger a fallback. # However, port 5001 does support DRAFT 2026. async with ToolboxClient( - "http://localhost:5000", protocol=Protocol.MCP_DRAFT + toolbox_server_url, protocol=Protocol.MCP_DRAFT ) as client: tool = await client.load_tool("get-n-rows") response = await tool(num_rows="1")