From bd0dd85f44eeefdfcfe905720842769cbe6de9e8 Mon Sep 17 00:00:00 2001 From: chengyongru Date: Thu, 9 Jul 2026 16:25:04 +0800 Subject: [PATCH] test: isolate MCP reconnect DNS transport Maintainer edit: the real MCP reconnect regression test can bind the class-level PinnedDNSAsyncTransport lock to its pytest event loop. Patch the MCP module to use a test-local transport subclass so later async tests do not inherit that loop-bound lock. --- tests/agent/test_mcp_reconnect_crash.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/agent/test_mcp_reconnect_crash.py b/tests/agent/test_mcp_reconnect_crash.py index 5273fb55..ef545283 100644 --- a/tests/agent/test_mcp_reconnect_crash.py +++ b/tests/agent/test_mcp_reconnect_crash.py @@ -128,6 +128,10 @@ def _make_loop(tmp_path, *, mcp_servers: dict) -> AgentLoop: @pytest.fixture(autouse=True) def allow_loopback_mcp_urls(monkeypatch: pytest.MonkeyPatch): """The repro server runs on 127.0.0.1; allow nanobot to talk to it.""" + class TestPinnedDNSAsyncTransport(security_network.PinnedDNSAsyncTransport): + _resolver_lock = asyncio.Lock() + + monkeypatch.setattr(mcp_module, "PinnedDNSAsyncTransport", TestPinnedDNSAsyncTransport) monkeypatch.setattr( mcp_module, "validate_url_target",