Skip to content

Commit b9b1e86

Browse files
Copilotstephentoub
andcommitted
Change StdioServerTransportTests to use Debug instead of Trace logging level
Address feedback from PR #1191: The class-level LoggerFactory override was removed from the constructor (now uses base class default of Debug). The trace-level logging tests now create their own local MockLoggerProvider and trace-level LoggerFactory to properly test Trace-level logging without affecting other tests. Co-authored-by: stephentoub <[email protected]>
1 parent 09bd7d7 commit b9b1e86

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

tests/ModelContextProtocol.Tests/Transport/StdioServerTransportTests.cs

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,6 @@ public StdioServerTransportTests(ITestOutputHelper testOutputHelper)
2222
InitializationTimeout = TimeSpan.FromSeconds(10),
2323
ServerInstructions = "Test Instructions"
2424
};
25-
26-
// Override the LoggerFactory to use Trace level for testing Trace-level logging
27-
LoggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(builder =>
28-
{
29-
builder.AddProvider(XunitLoggerProvider);
30-
builder.AddProvider(MockLoggerProvider);
31-
builder.SetMinimumLevel(LogLevel.Trace);
32-
});
3325
}
3426

3527
[Fact(Skip="https://github.com/modelcontextprotocol/csharp-sdk/issues/143")]
@@ -207,19 +199,27 @@ public async Task SendMessageAsync_Should_Preserve_Unicode_Characters()
207199
public async Task SendMessageAsync_Should_Log_At_Trace_Level()
208200
{
209201
// Arrange
202+
var mockLoggerProvider = new MockLoggerProvider();
203+
using var traceLoggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(builder =>
204+
{
205+
builder.AddProvider(XunitLoggerProvider);
206+
builder.AddProvider(mockLoggerProvider);
207+
builder.SetMinimumLevel(LogLevel.Trace);
208+
});
209+
210210
using var output = new MemoryStream();
211211

212212
await using var transport = new StreamServerTransport(
213213
new Pipe().Reader.AsStream(),
214214
output,
215-
loggerFactory: LoggerFactory);
215+
loggerFactory: traceLoggerFactory);
216216

217217
// Act
218218
var message = new JsonRpcRequest { Method = "test", Id = new RequestId(44) };
219219
await transport.SendMessageAsync(message, TestContext.Current.CancellationToken);
220220

221221
// Assert
222-
var traceLogMessages = MockLoggerProvider.LogMessages
222+
var traceLogMessages = mockLoggerProvider.LogMessages
223223
.Where(x => x.LogLevel == LogLevel.Trace && x.Message.Contains("transport sending message"))
224224
.ToList();
225225

@@ -231,6 +231,14 @@ public async Task SendMessageAsync_Should_Log_At_Trace_Level()
231231
public async Task ReadMessagesAsync_Should_Log_Received_At_Trace_Level()
232232
{
233233
// Arrange
234+
var mockLoggerProvider = new MockLoggerProvider();
235+
using var traceLoggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(builder =>
236+
{
237+
builder.AddProvider(XunitLoggerProvider);
238+
builder.AddProvider(mockLoggerProvider);
239+
builder.SetMinimumLevel(LogLevel.Trace);
240+
});
241+
234242
var message = new JsonRpcRequest { Method = "test", Id = new RequestId(99) };
235243
var json = JsonSerializer.Serialize(message, McpJsonUtilities.DefaultOptions);
236244

@@ -240,7 +248,7 @@ public async Task ReadMessagesAsync_Should_Log_Received_At_Trace_Level()
240248
await using var transport = new StreamServerTransport(
241249
input,
242250
Stream.Null,
243-
loggerFactory: LoggerFactory);
251+
loggerFactory: traceLoggerFactory);
244252

245253
// Act
246254
await pipe.Writer.WriteAsync(Encoding.UTF8.GetBytes($"{json}\n"), TestContext.Current.CancellationToken);
@@ -250,7 +258,7 @@ public async Task ReadMessagesAsync_Should_Log_Received_At_Trace_Level()
250258
Assert.True(canRead, "Nothing to read here from transport message reader");
251259

252260
// Assert
253-
var traceLogMessages = MockLoggerProvider.LogMessages
261+
var traceLogMessages = mockLoggerProvider.LogMessages
254262
.Where(x => x.LogLevel == LogLevel.Trace && x.Message.Contains("transport received message"))
255263
.ToList();
256264

0 commit comments

Comments
 (0)