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