Skip to content

AutomaticInputRequiredStatusTests.TaskStatus_TransitionsToInputRequired_DuringElicitAsync intermittently fails (timing/race) #1222

@ericstj

Description

@ericstj

https://github.com/modelcontextprotocol/csharp-sdk/actions/runs/21503213903/job/61953813945?pr=1070

  Failed ModelContextProtocol.Tests.Server.AutomaticInputRequiredStatusTests.TaskStatus_TransitionsToInputRequired_DuringElicitAsync [550 ms]
  Error Message:
   Assert.Equal() Failure: Values differ
Expected: Completed
Actual:   InputRequired
  Stack Trace:
     at ModelContextProtocol.Tests.Server.AutomaticInputRequiredStatusTests.TaskStatus_TransitionsToInputRequired_DuringElicitAsync() in /_/tests/ModelContextProtocol.Tests/Server/AutomaticInputRequiredStatusTests.cs:line 228
   at ModelContextProtocol.Tests.Server.AutomaticInputRequiredStatusTests.TaskStatus_TransitionsToInputRequired_DuringElicitAsync() in /_/tests/ModelContextProtocol.Tests/Server/AutomaticInputRequiredStatusTests.cs:line 228
--- End of stack trace from previous location ---

do
{
await Task.Delay(100, TestContext.Current.CancellationToken);
finalStatus = await taskStore.GetTaskAsync(mcpTask.TaskId, cancellationToken: TestContext.Current.CancellationToken);
maxAttempts--;
}
while (finalStatus?.Status == McpTaskStatus.Working && maxAttempts > 0);
// Assert - Status should have been InputRequired during elicitation
Assert.Contains(McpTaskStatus.InputRequired, statusesDuringElicitation);
// Final status should be Completed
Assert.NotNull(finalStatus);
Assert.Equal(McpTaskStatus.Completed, finalStatus.Status);

It looks to me like the task briefly transitioned status from Working to InputRequired and this caused the test to stop polling. The test then failed when it expected the test to transition to Completed.

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions