@@ -222,10 +222,11 @@ public async Task OpenAsync_WhenCancelTokenIsCanceled_ThrowYdbException()
222222 Assert . Equal ( "The connection pool has been exhausted, either raise 'MaxSessionPool' (currently 10) " +
223223 "or 'CreateSessionTimeout' (currently 5 seconds) in your connection string." ,
224224 ( await Assert . ThrowsAsync < YdbException > ( async ( ) => await connection . OpenAsync ( cts . Token ) ) ) . Message ) ;
225+ Assert . Equal ( ConnectionState . Closed , connection . State ) ;
225226 }
226227
227228 [ Fact ]
228- public async Task YdbCommand_WhenCancelTokenIsCanceled_ThrowYdbException ( )
229+ public async Task YdbDataReader_WhenCancelTokenIsCanceled_ThrowYdbException ( )
229230 {
230231 await using var connection = await CreateOpenConnectionAsync ( ) ;
231232 var command = new YdbCommand ( connection ) { CommandText = "SELECT 1; SELECT 1; SELECT 1;" } ;
@@ -236,16 +237,13 @@ public async Task YdbCommand_WhenCancelTokenIsCanceled_ThrowYdbException()
236237 await ydbDataReader . ReadAsync ( cts . Token ) ; // first part in memory
237238 Assert . False ( ydbDataReader . IsClosed ) ;
238239 Assert . Equal ( 1 , ydbDataReader . GetValue ( 0 ) ) ;
239-
240+ Assert . Equal ( ConnectionState . Open , connection . State ) ;
240241 Assert . Equal ( StatusCode . Cancelled , ( await Assert . ThrowsAsync < YdbException > (
241242 async ( ) => await ydbDataReader . NextResultAsync ( cts . Token ) ) ) . Code ) ;
242243 Assert . True ( ydbDataReader . IsClosed ) ;
243- Assert . Equal ( StatusCode . Cancelled , ( await Assert . ThrowsAsync < YdbException > (
244- async ( ) => await command . ExecuteReaderAsync ( cts . Token ) ) ) . Code ) ;
245- Assert . Equal ( StatusCode . Cancelled , ( await Assert . ThrowsAsync < YdbException > (
246- async ( ) => await command . ExecuteScalarAsync ( cts . Token ) ) ) . Code ) ;
247- Assert . Equal ( StatusCode . Cancelled , ( await Assert . ThrowsAsync < YdbException > (
248- async ( ) => await command . ExecuteNonQueryAsync ( cts . Token ) ) ) . Code ) ;
244+ Assert . Equal ( ConnectionState . Broken , connection . State ) ;
245+ // ReSharper disable once MethodSupportsCancellation
246+ await connection . OpenAsync ( ) ;
249247
250248 // ReSharper disable once MethodSupportsCancellation
251249 ydbDataReader = await command . ExecuteReaderAsync ( ) ;
@@ -259,16 +257,40 @@ public async Task YdbCommand_WhenCancelTokenIsCanceled_ThrowYdbException()
259257 Assert . Equal ( StatusCode . Cancelled , ( await Assert . ThrowsAsync < YdbException > (
260258 async ( ) => await ydbDataReader . NextResultAsync ( cts . Token ) ) ) . Code ) ;
261259 Assert . True ( ydbDataReader . IsClosed ) ;
260+ Assert . Equal ( ConnectionState . Broken , connection . State ) ;
262261 }
263262
264263 [ Fact ]
265- public async Task ExecuteMethods_WhenExecutedYdbDataReaderThenCancelTokenIsCanceled_ReturnValues ( )
264+ public async Task ExecuteMethods_WhenCancelTokenIsCanceled_ConnectionIsBroken ( )
266265 {
267266 await using var connection = await CreateOpenConnectionAsync ( ) ;
268- var ydbCommand = new YdbCommand ( connection ) { CommandText = "SELECT 1; SELECT 1; " } ;
267+ var command = new YdbCommand ( connection ) { CommandText = "SELECT 1; SELECT 1; SELECT 1;" } ;
268+ using var cts = new CancellationTokenSource ( ) ;
269+ cts . Cancel ( ) ;
270+
271+ Assert . Equal ( StatusCode . Cancelled , ( await Assert . ThrowsAsync < YdbException > (
272+ async ( ) => await command . ExecuteReaderAsync ( cts . Token ) ) ) . Code ) ;
273+ Assert . Equal ( ConnectionState . Broken , connection . State ) ;
274+ // ReSharper disable once MethodSupportsCancellation
275+ await connection . OpenAsync ( ) ;
276+ Assert . Equal ( StatusCode . Cancelled , ( await Assert . ThrowsAsync < YdbException > (
277+ async ( ) => await command . ExecuteScalarAsync ( cts . Token ) ) ) . Code ) ;
278+ Assert . Equal ( ConnectionState . Broken , connection . State ) ;
279+ // ReSharper disable once MethodSupportsCancellation
280+ await connection . OpenAsync ( ) ;
281+ Assert . Equal ( StatusCode . Cancelled , ( await Assert . ThrowsAsync < YdbException > (
282+ async ( ) => await command . ExecuteNonQueryAsync ( cts . Token ) ) ) . Code ) ;
283+ Assert . Equal ( ConnectionState . Broken , connection . State ) ;
284+ }
285+
286+ [ Fact ]
287+ public async Task ExecuteReaderAsync_WhenExecutedYdbDataReaderThenCancelTokenIsCanceled_ReturnValues ( )
288+ {
289+ await using var connection = await CreateOpenConnectionAsync ( ) ;
290+ var ydbCommand = new YdbCommand ( connection ) { CommandText = "SELECT 1; SELECT 1; " } ;
269291 var cts = new CancellationTokenSource ( ) ;
270292 var ydbDataReader = await ydbCommand . ExecuteReaderAsync ( cts . Token ) ;
271-
293+
272294 await ydbDataReader . ReadAsync ( cts . Token ) ;
273295 Assert . Equal ( 1 , ydbDataReader . GetValue ( 0 ) ) ;
274296 Assert . True ( await ydbDataReader . NextResultAsync ( cts . Token ) ) ;
0 commit comments