Fix StdioServerTransportTests to use Debug logging level instead of Trace (#1209)

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
This commit is contained in:
Copilot 2026-01-29 17:20:52 -05:00 • committed by GitHub
commit 482e311a70
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -22,14 +22,6 @@ public class StdioServerTransportTests : LoggedTest
InitializationTimeout = TimeSpan.FromSeconds(10), InitializationTimeout = TimeSpan.FromSeconds(10),
ServerInstructions = "Test Instructions" ServerInstructions = "Test Instructions"
}; };
// Override the LoggerFactory to use Trace level for testing Trace-level logging
LoggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(builder =>
{
builder.AddProvider(XunitLoggerProvider);
builder.AddProvider(MockLoggerProvider);
builder.SetMinimumLevel(LogLevel.Trace);
});
} }
[Fact(Skip="https://github.com/modelcontextprotocol/csharp-sdk/issues/143")] [Fact(Skip="https://github.com/modelcontextprotocol/csharp-sdk/issues/143")]
@ -207,19 +199,27 @@ public class StdioServerTransportTests : LoggedTest
public async Task SendMessageAsync_Should_Log_At_Trace_Level() public async Task SendMessageAsync_Should_Log_At_Trace_Level()
{ {
// Arrange // Arrange
var mockLoggerProvider = new MockLoggerProvider();
using var traceLoggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(builder =>
{
builder.AddProvider(XunitLoggerProvider);
builder.AddProvider(mockLoggerProvider);
builder.SetMinimumLevel(LogLevel.Trace);
});
using var output = new MemoryStream(); using var output = new MemoryStream();
await using var transport = new StreamServerTransport( await using var transport = new StreamServerTransport(
new Pipe().Reader.AsStream(), new Pipe().Reader.AsStream(),
output, output,
loggerFactory: LoggerFactory); loggerFactory: traceLoggerFactory);
// Act // Act
var message = new JsonRpcRequest { Method = "test", Id = new RequestId(44) }; var message = new JsonRpcRequest { Method = "test", Id = new RequestId(44) };
await transport.SendMessageAsync(message, TestContext.Current.CancellationToken); await transport.SendMessageAsync(message, TestContext.Current.CancellationToken);
// Assert // Assert
var traceLogMessages = MockLoggerProvider.LogMessages var traceLogMessages = mockLoggerProvider.LogMessages
.Where(x => x.LogLevel == LogLevel.Trace && x.Message.Contains("transport sending message")) .Where(x => x.LogLevel == LogLevel.Trace && x.Message.Contains("transport sending message"))
.ToList(); .ToList();
@ -231,6 +231,14 @@ public class StdioServerTransportTests : LoggedTest
public async Task ReadMessagesAsync_Should_Log_Received_At_Trace_Level() public async Task ReadMessagesAsync_Should_Log_Received_At_Trace_Level()
{ {
// Arrange // Arrange
var mockLoggerProvider = new MockLoggerProvider();
using var traceLoggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(builder =>
{
builder.AddProvider(XunitLoggerProvider);
builder.AddProvider(mockLoggerProvider);
builder.SetMinimumLevel(LogLevel.Trace);
});
var message = new JsonRpcRequest { Method = "test", Id = new RequestId(99) }; var message = new JsonRpcRequest { Method = "test", Id = new RequestId(99) };
var json = JsonSerializer.Serialize(message, McpJsonUtilities.DefaultOptions); var json = JsonSerializer.Serialize(message, McpJsonUtilities.DefaultOptions);
@ -240,7 +248,7 @@ public class StdioServerTransportTests : LoggedTest
await using var transport = new StreamServerTransport( await using var transport = new StreamServerTransport(
input, input,
Stream.Null, Stream.Null,
loggerFactory: LoggerFactory); loggerFactory: traceLoggerFactory);
// Act // Act
await pipe.Writer.WriteAsync(Encoding.UTF8.GetBytes($"{json}\n"), TestContext.Current.CancellationToken); await pipe.Writer.WriteAsync(Encoding.UTF8.GetBytes($"{json}\n"), TestContext.Current.CancellationToken);
@ -250,7 +258,7 @@ public class StdioServerTransportTests : LoggedTest
Assert.True(canRead, "Nothing to read here from transport message reader"); Assert.True(canRead, "Nothing to read here from transport message reader");
// Assert // Assert
var traceLogMessages = MockLoggerProvider.LogMessages var traceLogMessages = mockLoggerProvider.LogMessages
.Where(x => x.LogLevel == LogLevel.Trace && x.Message.Contains("transport received message")) .Where(x => x.LogLevel == LogLevel.Trace && x.Message.Contains("transport received message"))
.ToList(); .ToList();