@@ -76,7 +76,7 @@ public async Task Initialize_WhenFailWriteMessage_ThrowWriterExceptionOnWriteAsy
7676 { ProducerId = "producerId" } ) . Build ( ) ;
7777
7878 var writerException = await Assert . ThrowsAsync < WriterException > ( ( ) => writer . WriteAsync ( "abacaba" ) ) ;
79- Assert . Equal ( "Transport error on creating write session " , writerException . Message ) ;
79+ Assert . Equal ( "Transport error on creating WriterSession " , writerException . Message ) ;
8080 Assert . Equal ( StatusCode . Cancelled , writerException . Status . StatusCode ) ;
8181
8282 await taskNextComplete . Task ;
@@ -104,7 +104,7 @@ public async Task Initialize_WhenFailMoveNextAsync_ThrowWriterExceptionOnWriteAs
104104 { ProducerId = "producerId" } ) . Build ( ) ;
105105
106106 var writerException = await Assert . ThrowsAsync < WriterException > ( ( ) => writer . WriteAsync ( "abacaba" ) ) ;
107- Assert . Equal ( "Transport error on creating write session " , writerException . Message ) ;
107+ Assert . Equal ( "Transport error on creating WriterSession " , writerException . Message ) ;
108108 Assert . Equal ( StatusCode . ClientTransportTimeout , writerException . Status . StatusCode ) ;
109109
110110 await taskNextComplete . Task ;
@@ -279,6 +279,24 @@ public async Task WriteAsyncStress_WhenBufferIsOverflow_ThrowWriterExceptionOnBu
279279 }
280280 }
281281
282+ /*
283+ * Performed invocations:
284+
285+ Mock<IBidirectionalStream<StreamWriteMessage.Types.FromClient, StreamWriteMessage.Types.FromServer>:1> (stream):
286+
287+ IBidirectionalStream<StreamWriteMessage.Types.FromClient, StreamWriteMessage.Types.FromServer>.Write({ "initRequest": { "path": "/topic", "producerId": "producerId" } })
288+ IBidirectionalStream<StreamWriteMessage.Types.FromClient, StreamWriteMessage.Types.FromServer>.MoveNextAsync()
289+ IBidirectionalStream<StreamWriteMessage.Types.FromClient, StreamWriteMessage.Types.FromServer>.Current
290+ IBidirectionalStream<StreamWriteMessage.Types.FromClient, StreamWriteMessage.Types.FromServer>.MoveNextAsync()
291+ IBidirectionalStream<StreamWriteMessage.Types.FromClient, StreamWriteMessage.Types.FromServer>.Write({ "writeRequest": { "messages": [ { "seqNo": "1", "createdAt": "2024-11-22T10:08:58.732882Z", "data": "AAAAAAAAAGQ=", "uncompressedSize": "8" } ], "codec": 1 } })
292+ IBidirectionalStream<StreamWriteMessage.Types.FromClient, StreamWriteMessage.Types.FromServer>.Write({ "initRequest": { "path": "/topic", "producerId": "producerId" } })
293+ IBidirectionalStream<StreamWriteMessage.Types.FromClient, StreamWriteMessage.Types.FromServer>.MoveNextAsync()
294+ IBidirectionalStream<StreamWriteMessage.Types.FromClient, StreamWriteMessage.Types.FromServer>.Current
295+ IBidirectionalStream<StreamWriteMessage.Types.FromClient, StreamWriteMessage.Types.FromServer>.MoveNextAsync()
296+ IBidirectionalStream<StreamWriteMessage.Types.FromClient, StreamWriteMessage.Types.FromServer>.Write({ "writeRequest": { "messages": [ { "seqNo": "1", "createdAt": "2024-11-22T10:08:58.732882Z", "data": "AAAAAAAAAGQ=", "uncompressedSize": "8" } ], "codec": 1 } })
297+ IBidirectionalStream<StreamWriteMessage.Types.FromClient, StreamWriteMessage.Types.FromServer>.Current
298+ IBidirectionalStream<StreamWriteMessage.Types.FromClient, StreamWriteMessage.Types.FromServer>.MoveNextAsync()
299+ */
282300 [ Fact ]
283301 public async Task WriteAsync_WhenTransportExceptionOnWriteInWriterSessionThenReconnectSession_ReturnWriteResult ( )
284302 {
@@ -288,14 +306,10 @@ public async Task WriteAsync_WhenTransportExceptionOnWriteInWriterSessionThenRec
288306 var nextCompleted = new TaskCompletionSource ( ) ;
289307 _mockStream . SetupSequence ( stream => stream . Write ( It . IsAny < FromClient > ( ) ) )
290308 . Returns ( Task . CompletedTask )
291- . Throws ( ( ) =>
292- {
293- moveFirstNextSource . SetResult ( false ) ;
294- return new Driver . TransportException ( new RpcException ( Grpc . Core . Status . DefaultCancelled ) ) ;
295- } )
309+ . ThrowsAsync ( new Driver . TransportException ( new RpcException ( Grpc . Core . Status . DefaultCancelled ) ) )
296310 . Returns ( ( ) =>
297311 {
298- moveSecondNextSource . SetResult ( true ) ;
312+ moveFirstNextSource . SetResult ( false ) ;
299313 return Task . CompletedTask ;
300314 } )
301315 . Returns ( ( ) =>
@@ -307,7 +321,8 @@ public async Task WriteAsync_WhenTransportExceptionOnWriteInWriterSessionThenRec
307321 . Returns ( new ValueTask < bool > ( true ) )
308322 . Returns ( new ValueTask < bool > ( moveFirstNextSource . Task ) )
309323 . Returns ( new ValueTask < bool > ( moveSecondNextSource . Task ) )
310- . Returns ( new ValueTask < bool > ( moveThirdNextSource . Task ) ) ;
324+ . Returns ( new ValueTask < bool > ( moveThirdNextSource . Task ) )
325+ . Returns ( new ValueTask < bool > ( new TaskCompletionSource < bool > ( ) . Task ) ) ;
311326 _mockStream . SetupSequence ( stream => stream . Current )
312327 . Returns ( new StreamWriteMessage . Types . FromServer
313328 {
@@ -342,9 +357,19 @@ public async Task WriteAsync_WhenTransportExceptionOnWriteInWriterSessionThenRec
342357 { ProducerId = "producerId" } ) . Build ( ) ;
343358
344359 var runTask = writer . WriteAsync ( 100L ) ;
360+
361+ var writerExceptionAfterResetSession = await Assert . ThrowsAsync < WriterException > ( ( ) => writer . WriteAsync ( 100 ) ) ;
362+ Assert . Equal ( "Transport error in the WriterSession on write messages" ,
363+ writerExceptionAfterResetSession . Message ) ;
364+ Assert . Equal ( StatusCode . Cancelled , writerExceptionAfterResetSession . Status . StatusCode ) ;
365+
366+ moveSecondNextSource . SetResult ( true ) ;
345367 await nextCompleted . Task ;
346368 moveThirdNextSource . SetResult ( true ) ;
347369
348370 Assert . Equal ( PersistenceStatus . Written , ( await runTask ) . Status ) ;
371+ _mockStream . Verify ( stream => stream . Write ( It . IsAny < FromClient > ( ) ) , Times . Exactly ( 4 ) ) ;
372+ _mockStream . Verify ( stream => stream . MoveNextAsync ( ) , Times . Exactly ( 5 ) ) ;
373+ _mockStream . Verify ( stream => stream . Current , Times . Exactly ( 3 ) ) ;
349374 }
350375}
0 commit comments