Skip to content

Commit 843ccca

Browse files
Copilothalter73
andcommitted
Use LoggedTest.LoggerFactory and MockLoggerProvider in trace logging tests
Simplified the tests by using the base class's LoggerFactory and MockLoggerProvider instead of creating local instances. The LoggerFactory is overridden in the constructor to use LogLevel.Trace for the trace logging tests. Co-authored-by: halter73 <54385+halter73@users.noreply.github.com>
1 parent 5fd721f commit 843ccca

1 file changed

Lines changed: 12 additions & 17 deletions

File tree

tests/ModelContextProtocol.Tests/Transport/StdioServerTransportTests.cs

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ 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+
});
2533
}
2634

2735
[Fact(Skip="https://github.com/modelcontextprotocol/csharp-sdk/issues/143")]
@@ -199,25 +207,19 @@ public async Task SendMessageAsync_Should_Preserve_Unicode_Characters()
199207
public async Task SendMessageAsync_Should_Log_At_Trace_Level()
200208
{
201209
// Arrange
202-
var mockLoggerProvider = new MockLoggerProvider();
203-
using var traceLoggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(builder =>
204-
{
205-
builder.AddProvider(mockLoggerProvider);
206-
builder.SetMinimumLevel(LogLevel.Trace);
207-
});
208210
using var output = new MemoryStream();
209211

210212
await using var transport = new StreamServerTransport(
211213
new Pipe().Reader.AsStream(),
212214
output,
213-
loggerFactory: traceLoggerFactory);
215+
loggerFactory: LoggerFactory);
214216

215217
// Act
216218
var message = new JsonRpcRequest { Method = "test", Id = new RequestId(44) };
217219
await transport.SendMessageAsync(message, TestContext.Current.CancellationToken);
218220

219221
// Assert
220-
var traceLogMessages = mockLoggerProvider.LogMessages
222+
var traceLogMessages = MockLoggerProvider.LogMessages
221223
.Where(x => x.LogLevel == LogLevel.Trace && x.Message.Contains("transport sending message"))
222224
.ToList();
223225

@@ -229,13 +231,6 @@ public async Task SendMessageAsync_Should_Log_At_Trace_Level()
229231
public async Task ReadMessagesAsync_Should_Log_Received_At_Trace_Level()
230232
{
231233
// Arrange
232-
var mockLoggerProvider = new MockLoggerProvider();
233-
using var traceLoggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(builder =>
234-
{
235-
builder.AddProvider(mockLoggerProvider);
236-
builder.SetMinimumLevel(LogLevel.Trace);
237-
});
238-
239234
var message = new JsonRpcRequest { Method = "test", Id = new RequestId(99) };
240235
var json = JsonSerializer.Serialize(message, McpJsonUtilities.DefaultOptions);
241236

@@ -245,7 +240,7 @@ public async Task ReadMessagesAsync_Should_Log_Received_At_Trace_Level()
245240
await using var transport = new StreamServerTransport(
246241
input,
247242
Stream.Null,
248-
loggerFactory: traceLoggerFactory);
243+
loggerFactory: LoggerFactory);
249244

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

257252
// Assert
258-
var traceLogMessages = mockLoggerProvider.LogMessages
253+
var traceLogMessages = MockLoggerProvider.LogMessages
259254
.Where(x => x.LogLevel == LogLevel.Trace && x.Message.Contains("transport received message"))
260255
.ToList();
261256

0 commit comments

Comments
 (0)