@@ -79,7 +79,7 @@ public async Task CanSearchDefaultFields()
7979 sqlActual = db . Employees . Where ( parser . ParsingConfig , sql ) . ToQueryString ( ) ;
8080 Assert . Equal ( sqlExpected , sqlActual ) ;
8181
82- await WaitForFullTextIndexAsync ( db , "ftCatalog" ) ;
82+ await SqlWaiter . WaitForFullTextIndexAsync ( db , "ftCatalog" ) ;
8383
8484 var results = await db . Employees . Where ( parser . ParsingConfig , sql ) . ToListAsync ( ) ;
8585 Assert . Single ( results ) ;
@@ -114,7 +114,7 @@ public async Task CanSearchWithTokenizer()
114114 _logger . LogInformation ( sql ) ;
115115 Assert . Equal ( sqlExpected , sqlActual ) ;
116116
117- await WaitForFullTextIndexAsync ( db , "ftCatalog" ) ;
117+ await SqlWaiter . WaitForFullTextIndexAsync ( db , "ftCatalog" ) ;
118118
119119 sqlActual = db . Employees . Where ( parser . ParsingConfig , sql ) . ToQueryString ( ) ;
120120 var results = await db . Employees . Where ( parser . ParsingConfig , sql ) . ToListAsync ( ) ;
@@ -540,58 +540,6 @@ ON ftCatalog
540540 return db ;
541541 }
542542
543- private static bool _checked ;
544- private static readonly object _lock = new ( ) ;
545-
546- private static void WaitForSql (
547- string connectionString ,
548- int maxRetries = 90 ,
549- int delayMs = 1000 )
550- {
551- for ( int i = 0 ; i < maxRetries ; i ++ )
552- {
553- try
554- {
555- using var conn = new SqlConnection ( connectionString ) ;
556- conn . Open ( ) ;
557-
558- using var cmd = conn . CreateCommand ( ) ;
559- cmd . CommandText = "SELECT 1" ;
560- cmd . ExecuteScalar ( ) ;
561-
562- return ;
563- }
564- catch
565- {
566- if ( i == maxRetries - 1 )
567- throw ;
568-
569- Thread . Sleep ( delayMs ) ;
570- }
571- }
572- }
573-
574- private async Task WaitForFullTextIndexAsync ( DbContext db , string catalogName , int timeoutSeconds = 30 )
575- {
576- var end = DateTime . UtcNow . AddSeconds ( timeoutSeconds ) ;
577-
578- while ( DateTime . UtcNow < end )
579- {
580- string sql = "SELECT FULLTEXTCATALOGPROPERTY(@catalogName, 'PopulateStatus') AS Value" ;
581-
582- int status = await db . Database
583- . SqlQueryRaw < int > ( sql , new SqlParameter ( "@catalogName" , catalogName ) )
584- . SingleAsync ( ) ;
585-
586- if ( status == 0 )
587- return ;
588-
589- await Task . Delay ( 500 ) ;
590- }
591-
592- throw new TimeoutException ( $ "Full-text catalog '{ catalogName } ' didn't finish populating in time.") ;
593- }
594-
595543 private async Task ParseAndValidateQuery ( string query , string expected , bool isValid )
596544 {
597545#if ENABLE_TRACING
0 commit comments