@@ -110,48 +110,44 @@ public async Task ConnectAsync_Throws_If_Already_Connected()
110
110
using var mockHttpHandler = new MockHttpHandler ( ) ;
111
111
using var httpClient = new HttpClient ( mockHttpHandler ) ;
112
112
await using var transport = new SseClientTransport ( _transportOptions , _serverConfig , httpClient , NullLoggerFactory . Instance ) ;
113
- using var mreConnected = new ManualResetEventSlim ( false ) ;
114
- using var mreDone = new ManualResetEventSlim ( false ) ;
113
+ var tcsConnected = new TaskCompletionSource ( ) ;
114
+ var tcsDone = new TaskCompletionSource ( TaskCreationOptions . RunContinuationsAsynchronously ) ;
115
115
var callIndex = 0 ;
116
116
117
- mockHttpHandler . RequestHandler = ( request ) =>
117
+ mockHttpHandler . RequestHandler = async ( request ) =>
118
118
{
119
119
switch ( callIndex ++ )
120
120
{
121
121
case 0 :
122
- return Task . FromResult ( new HttpResponseMessage
122
+ return new HttpResponseMessage
123
123
{
124
124
StatusCode = HttpStatusCode . OK ,
125
125
Content = new StringContent ( "event: endpoint\r \n data: http://localhost\r \n \r \n " )
126
- } ) ;
126
+ } ;
127
127
case 1 :
128
- mreConnected . Set ( ) ;
129
- mreDone . Wait ( ) ;
130
- return Task . FromResult ( new HttpResponseMessage
128
+ tcsConnected . SetResult ( ) ;
129
+ await tcsDone . Task ;
130
+ return new HttpResponseMessage
131
131
{
132
132
StatusCode = HttpStatusCode . OK ,
133
133
Content = new StringContent ( "" )
134
- } ) ;
134
+ } ;
135
135
default :
136
- return Task . FromResult ( new HttpResponseMessage
136
+ return new HttpResponseMessage
137
137
{
138
138
StatusCode = HttpStatusCode . OK ,
139
139
Content = new StringContent ( "" )
140
- } ) ;
140
+ } ;
141
141
}
142
142
} ;
143
143
144
- var task = Task . Run ( async ( ) =>
145
- {
146
- await transport . ConnectAsync ( TestContext . Current . CancellationToken ) ;
147
- } , TestContext . Current . CancellationToken ) ;
148
-
149
- mreConnected . Wait ( TestContext . Current . CancellationToken ) ;
144
+ var task = transport . ConnectAsync ( TestContext . Current . CancellationToken ) ;
145
+ await tcsConnected . Task ;
150
146
Assert . True ( transport . IsConnected ) ;
151
147
var action = async ( ) => await transport . ConnectAsync ( ) ;
152
148
var exception = await Assert . ThrowsAsync < McpTransportException > ( action ) ;
153
149
Assert . Equal ( "Transport is already connected" , exception . Message ) ;
154
- mreDone . Set ( ) ;
150
+ tcsDone . SetResult ( ) ;
155
151
await transport . CloseAsync ( ) ;
156
152
await task ;
157
153
}
0 commit comments