Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,6 @@ public StdioServerTransportTests(ITestOutputHelper testOutputHelper)
InitializationTimeout = TimeSpan.FromSeconds(10),
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")]
Expand Down Expand Up @@ -207,19 +199,27 @@ public async Task SendMessageAsync_Should_Preserve_Unicode_Characters()
public async Task SendMessageAsync_Should_Log_At_Trace_Level()
{
// 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();

await using var transport = new StreamServerTransport(
new Pipe().Reader.AsStream(),
output,
loggerFactory: LoggerFactory);
loggerFactory: traceLoggerFactory);

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

// Assert
var traceLogMessages = MockLoggerProvider.LogMessages
var traceLogMessages = mockLoggerProvider.LogMessages
.Where(x => x.LogLevel == LogLevel.Trace && x.Message.Contains("transport sending message"))
.ToList();

Expand All @@ -231,6 +231,14 @@ public async Task SendMessageAsync_Should_Log_At_Trace_Level()
public async Task ReadMessagesAsync_Should_Log_Received_At_Trace_Level()
{
// 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 json = JsonSerializer.Serialize(message, McpJsonUtilities.DefaultOptions);

Expand All @@ -240,7 +248,7 @@ public async Task ReadMessagesAsync_Should_Log_Received_At_Trace_Level()
await using var transport = new StreamServerTransport(
input,
Stream.Null,
loggerFactory: LoggerFactory);
loggerFactory: traceLoggerFactory);

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

// Assert
var traceLogMessages = MockLoggerProvider.LogMessages
var traceLogMessages = mockLoggerProvider.LogMessages
.Where(x => x.LogLevel == LogLevel.Trace && x.Message.Contains("transport received message"))
.ToList();

Expand Down
Loading