From 7a4577dcaa9bf9d993393c4dbe8dc4dbf8539c2a Mon Sep 17 00:00:00 2001 From: Tarek Mahmoud Sayed Date: Tue, 20 Oct 2026 14:55:31 -0700 Subject: [PATCH] Fix flaky CI tests with test-only discovery timeout configuration Disable the short discovery probe timeout for default clients connecting to the known modern stdio test server and for authorization tests. Retain the overall initialization deadline, explicit client options, and legacy fallback coverage. This is a test-only stabilization change. SDK behavior and dependency versions are unchanged. --- .../AuthorizeAttributeTests.cs | 7 ++++++- .../ClientIntegrationTestFixture.cs | 17 +++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/tests/ModelContextProtocol.AspNetCore.Tests/AuthorizeAttributeTests.cs b/tests/ModelContextProtocol.AspNetCore.Tests/AuthorizeAttributeTests.cs index 6ad643ef5..369bd7eb0 100644 --- a/tests/ModelContextProtocol.AspNetCore.Tests/AuthorizeAttributeTests.cs +++ b/tests/ModelContextProtocol.AspNetCore.Tests/AuthorizeAttributeTests.cs @@ -25,7 +25,12 @@ private async Task ConnectAsync() Endpoint = new("http://localhost:5000"), }, HttpClient, LoggerFactory); - return await McpClient.CreateAsync(transport, cancellationToken: TestContext.Current.CancellationToken, loggerFactory: LoggerFactory); + // This server supports discovery; slow startup must not trigger legacy fallback. + return await McpClient.CreateAsync(transport, new() + { + DiscoverProbeTimeout = Timeout.InfiniteTimeSpan, + InitializationTimeout = TestConstants.DefaultTimeout, + }, cancellationToken: TestContext.Current.CancellationToken, loggerFactory: LoggerFactory); } [Fact] diff --git a/tests/ModelContextProtocol.Tests/ClientIntegrationTestFixture.cs b/tests/ModelContextProtocol.Tests/ClientIntegrationTestFixture.cs index 726a3fb1a..87c4ca397 100644 --- a/tests/ModelContextProtocol.Tests/ClientIntegrationTestFixture.cs +++ b/tests/ModelContextProtocol.Tests/ClientIntegrationTestFixture.cs @@ -1,5 +1,6 @@ using Microsoft.Extensions.Logging; using ModelContextProtocol.Client; +using ModelContextProtocol.Tests.Utils; using System.Runtime.InteropServices; namespace ModelContextProtocol.Tests; @@ -45,11 +46,23 @@ public void Initialize(ILoggerFactory loggerFactory) _loggerFactory = loggerFactory; } - public Task CreateClientAsync(string clientId, McpClientOptions? clientOptions = null) => - McpClient.CreateAsync(new StdioClientTransport(clientId switch + public Task CreateClientAsync(string clientId, McpClientOptions? clientOptions = null) + { + if (clientId == "test_server" && clientOptions is null) + { + // This server supports discovery; slow startup must not trigger legacy fallback. + clientOptions = new() + { + DiscoverProbeTimeout = Timeout.InfiniteTimeSpan, + InitializationTimeout = TestConstants.DefaultTimeout, + }; + } + + return McpClient.CreateAsync(new StdioClientTransport(clientId switch { "everything" => EverythingServerTransportOptions, "test_server" => TestServerTransportOptions, _ => throw new ArgumentException($"Unknown client ID: {clientId}") }), clientOptions, loggerFactory: _loggerFactory); + } } \ No newline at end of file