11using System . Data ;
22using Xunit ;
3+ using Ydb . Sdk . Ado . Session ;
34using Ydb . Sdk . Ado . Tests . Utils ;
45using Ydb . Sdk . Ado . YdbType ;
56
@@ -487,9 +488,7 @@ public async Task EnableImplicitSession_WhenTrue_AndNoTransaction_UsesImplicitSe
487488 var result = Convert . ToInt64 ( await cmd . ExecuteScalarAsync ( ) ) ;
488489 Assert . Equal ( 1L , result ) ;
489490
490- var implicitSession = conn . GetExecutionSession ( useImplicit : true ) ;
491- var pooledSession = conn . GetExecutionSession ( useImplicit : false ) ;
492- Assert . NotEqual ( implicitSession , pooledSession ) ;
491+ Assert . IsType < ImplicitSession > ( conn . Session ) ;
493492 }
494493
495494 [ Fact ]
@@ -507,11 +506,7 @@ public async Task EnableImplicitSession_WhenTrue_ButInsideTransaction_UsesPooled
507506 var result = Convert . ToInt64 ( await cmd . ExecuteScalarAsync ( ) ) ;
508507 Assert . Equal ( 1L , result ) ;
509508
510- var pooledSession = conn . GetExecutionSession ( useImplicit : false ) ;
511- var implicitSession = conn . GetExecutionSession ( useImplicit : true ) ;
512-
513- Assert . Equal ( pooledSession , conn . Session ) ;
514- Assert . NotEqual ( pooledSession , implicitSession ) ;
509+ Assert . IsNotType < ImplicitSession > ( conn . Session ) ;
515510 }
516511
517512 [ Fact ]
@@ -527,8 +522,7 @@ public async Task EnableImplicitSession_WhenFalse_AlwaysUsesPooledSession()
527522 var result = ( long ) ( await cmd . ExecuteScalarAsync ( ) ) ! ;
528523 Assert . Equal ( 1L , result ) ;
529524
530- var pooledSession = conn . GetExecutionSession ( useImplicit : false ) ;
531- Assert . Equal ( pooledSession , conn . Session ) ;
525+ Assert . IsNotType < ImplicitSession > ( conn . Session ) ;
532526 }
533527
534528 [ Fact ]
@@ -539,28 +533,38 @@ public async Task EnableImplicitSession_DifferentConnectionStrings_HaveDifferent
539533
540534 await using var conn1 = new YdbConnection ( cs1 ) ;
541535 await conn1 . OpenAsync ( ) ;
542- var session1 = conn1 . GetExecutionSession ( useImplicit : true ) ;
536+ var s1 = conn1 . Session ;
543537
544538 await using var conn2 = new YdbConnection ( cs2 ) ;
545539 await conn2 . OpenAsync ( ) ;
546- var session2 = conn2 . GetExecutionSession ( useImplicit : true ) ;
540+ var s2 = conn2 . Session ;
547541
548- Assert . NotEqual ( session1 , session2 ) ;
542+ Assert . NotEqual ( s1 , s2 ) ;
549543 }
550-
544+
551545 [ Fact ]
552- public async Task EnableImplicitSession_TwoSequentialCommands_GetDifferentImplicitSessions ( )
546+ public async Task EnableImplicitSession_TwoSequentialCommands_ReusesSameSession ( )
553547 {
554548 var cs = ConnectionString + ";EnableImplicitSession=true" ;
555549 await using var conn = new YdbConnection ( cs ) ;
556550 await conn . OpenAsync ( ) ;
557551
558- var s1 = conn . GetExecutionSession ( useImplicit : true ) ;
559- var s2 = conn . GetExecutionSession ( useImplicit : true ) ;
552+ var cmd1 = conn . CreateCommand ( ) ;
553+ cmd1 . CommandText = "SELECT 1;" ;
554+ var result1 = await cmd1 . ExecuteScalarAsync ( ) ;
560555
561- Assert . NotEqual ( s1 , s2 ) ;
556+ var s1 = conn . Session ;
557+
558+ var cmd2 = conn . CreateCommand ( ) ;
559+ cmd2 . CommandText = "SELECT 2;" ;
560+ var result2 = await cmd2 . ExecuteScalarAsync ( ) ;
561+
562+ var s2 = conn . Session ;
563+
564+ Assert . Equal ( s1 , s2 ) ;
565+
562566 }
563-
567+
564568 [ Fact ]
565569 public async Task ClearPool_FireAndForget_DoesNotBlock_And_PoolsRecreate ( )
566570 {
@@ -572,10 +576,9 @@ public async Task ClearPool_FireAndForget_DoesNotBlock_And_PoolsRecreate()
572576 ";ConnectTimeout=3" +
573577 ";KeepAlivePingDelay=0;KeepAlivePingTimeout=0" ;
574578
575- var csPooled = csBase ; // pooled-пул (без флага)
576- var csImplicit = csBase + ";EnableImplicitSession=true" ; // implicit-пул (с флагом)
579+ var csPooled = csBase ;
580+ var csImplicit = csBase + ";EnableImplicitSession=true" ;
577581
578- // 1) Прогреваем оба пула (pooled и implicit), чтобы они точно были созданы.
579582 await using ( var warmPooled = new YdbConnection ( csPooled ) )
580583 {
581584 await warmPooled . OpenAsync ( ) ;
@@ -592,34 +595,29 @@ public async Task ClearPool_FireAndForget_DoesNotBlock_And_PoolsRecreate()
592595 Assert . Equal ( 1L , Convert . ToInt64 ( await cmd . ExecuteScalarAsync ( ) ) ) ;
593596 }
594597
595- // 2) Вызываем ClearPool для ОБОИХ ключей (по вашей реализации ключи разные).
596598 var clearPooledTask = YdbConnection . ClearPool ( new YdbConnection ( csPooled ) ) ;
597599 var clearImplicitTask = YdbConnection . ClearPool ( new YdbConnection ( csImplicit ) ) ;
598600
599- // 3) Убеждаемся, что ClearPool не блокирует — завершается быстро (fail-fast).
600- // (Если вдруг среда перегружена, можно поднять таймаут до 3–5 секунд.)
601601 var done = await Task . WhenAny ( Task . WhenAll ( clearPooledTask , clearImplicitTask ) , Task . Delay ( TimeSpan . FromSeconds ( 2 ) ) ) ;
602602 Assert . True ( done is not null && done != Task . Delay ( TimeSpan . FromSeconds ( 2 ) ) , "ClearPool() must not block." ) ;
603603
604- // 4) Проверяем, что пулы корректно пересоздаются после очистки:
605- // pooled — без флага, implicit — с флагом.
606604 await using ( var checkPooled = new YdbConnection ( csPooled ) )
607605 {
608606 await checkPooled . OpenAsync ( ) ;
609- using var cmd = checkPooled . CreateCommand ( ) ;
607+ await using var cmd = checkPooled . CreateCommand ( ) ;
610608 cmd . CommandText = "SELECT 1" ;
611609 Assert . Equal ( 1L , Convert . ToInt64 ( await cmd . ExecuteScalarAsync ( ) ) ) ;
612610 }
613611
614612 await using ( var checkImplicit = new YdbConnection ( csImplicit ) )
615613 {
616614 await checkImplicit . OpenAsync ( ) ;
617- using var cmd = checkImplicit . CreateCommand ( ) ;
615+ await using var cmd = checkImplicit . CreateCommand ( ) ;
618616 cmd . CommandText = "SELECT 1" ;
619617 Assert . Equal ( 1L , Convert . ToInt64 ( await cmd . ExecuteScalarAsync ( ) ) ) ;
620618 }
621619 }
622-
620+
623621 [ Fact ]
624622 public async Task EnableImplicitSession_ParallelQueries_WorkFine ( )
625623 {
@@ -636,7 +634,7 @@ public async Task EnableImplicitSession_ParallelQueries_WorkFine()
636634 } ) ;
637635 await Task . WhenAll ( tasks ) ;
638636 }
639-
637+
640638 [ Fact ]
641639 public async Task EnableImplicitSession_WithDisableDiscovery_Works ( )
642640 {
0 commit comments