88package  tests
99
1010import  (
11- 	"context" 
1211	"fmt" 
1312	"slices" 
1413	"testing" 
@@ -40,7 +39,7 @@ func TestIndexer(t *testing.T, indexer internal.Indexer) {
4039			data [v .ID ] =  v 
4140		}
4241		require .NoError (t , indexer .Index (t .Context (), d ... ))
43- 		require . NoError (t , waitData ( indexer , int64 (len (data ) )))
42+ 		waitData (t , indexer , int64 (len (data )))
4443	}
4544
4645	defer  func () {
@@ -54,13 +53,13 @@ func TestIndexer(t *testing.T, indexer internal.Indexer) {
5453				for  _ , v  :=  range  c .ExtraData  {
5554					data [v .ID ] =  v 
5655				}
57- 				require . NoError (t , waitData ( indexer , int64 (len (data ) )))
56+ 				waitData (t , indexer , int64 (len (data )))
5857				defer  func () {
5958					for  _ , v  :=  range  c .ExtraData  {
6059						require .NoError (t , indexer .Delete (t .Context (), v .ID ))
6160						delete (data , v .ID )
6261					}
63- 					require . NoError (t , waitData ( indexer , int64 (len (data ) )))
62+ 					waitData (t , indexer , int64 (len (data )))
6463				}()
6564			}
6665
@@ -751,22 +750,10 @@ func countIndexerData(data map[int64]*internal.IndexerData, f func(v *internal.I
751750
752751// waitData waits for the indexer to index all data. 
753752// Some engines like Elasticsearch index data asynchronously, so we need to wait for a while. 
754- func  waitData (indexer  internal.Indexer , total  int64 ) error  {
755- 	var  actual  int64 
756- 	for  i  :=  0 ; i  <  100 ; i ++  {
757- 		result , err  :=  indexer .Search (context .Background (), & internal.SearchOptions {
758- 			Paginator : & db.ListOptions {
759- 				PageSize : 0 ,
760- 			},
761- 		})
762- 		if  err  !=  nil  {
763- 			return  err 
764- 		}
765- 		actual  =  result .Total 
766- 		if  actual  ==  total  {
767- 			return  nil 
768- 		}
769- 		time .Sleep (100  *  time .Millisecond )
770- 	}
771- 	return  fmt .Errorf ("waitData: expected %d, actual %d" , total , actual )
753+ func  waitData (t  * testing.T , indexer  internal.Indexer , total  int64 ) {
754+ 	assert .Eventually (t , func () bool  {
755+ 		result , err  :=  indexer .Search (t .Context (), & internal.SearchOptions {Paginator : & db.ListOptions {}})
756+ 		require .NoError (t , err )
757+ 		return  result .Total  ==  total 
758+ 	}, 10 * time .Second , 100 * time .Millisecond , "expected total=%d" , total )
772759}
0 commit comments