|
|
|
@ -8,7 +8,6 @@ |
|
|
|
package tests |
|
|
|
package tests |
|
|
|
|
|
|
|
|
|
|
|
import ( |
|
|
|
import ( |
|
|
|
"context" |
|
|
|
|
|
|
|
"fmt" |
|
|
|
"fmt" |
|
|
|
"slices" |
|
|
|
"slices" |
|
|
|
"testing" |
|
|
|
"testing" |
|
|
|
@ -40,7 +39,7 @@ func TestIndexer(t *testing.T, indexer internal.Indexer) { |
|
|
|
data[v.ID] = v |
|
|
|
data[v.ID] = v |
|
|
|
} |
|
|
|
} |
|
|
|
require.NoError(t, indexer.Index(t.Context(), d...)) |
|
|
|
require.NoError(t, indexer.Index(t.Context(), d...)) |
|
|
|
require.NoError(t, waitData(indexer, int64(len(data)))) |
|
|
|
waitData(t, indexer, int64(len(data))) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
defer func() { |
|
|
|
defer func() { |
|
|
|
@ -54,13 +53,13 @@ func TestIndexer(t *testing.T, indexer internal.Indexer) { |
|
|
|
for _, v := range c.ExtraData { |
|
|
|
for _, v := range c.ExtraData { |
|
|
|
data[v.ID] = v |
|
|
|
data[v.ID] = v |
|
|
|
} |
|
|
|
} |
|
|
|
require.NoError(t, waitData(indexer, int64(len(data)))) |
|
|
|
waitData(t, indexer, int64(len(data))) |
|
|
|
defer func() { |
|
|
|
defer func() { |
|
|
|
for _, v := range c.ExtraData { |
|
|
|
for _, v := range c.ExtraData { |
|
|
|
require.NoError(t, indexer.Delete(t.Context(), v.ID)) |
|
|
|
require.NoError(t, indexer.Delete(t.Context(), v.ID)) |
|
|
|
delete(data, v.ID) |
|
|
|
delete(data, v.ID) |
|
|
|
} |
|
|
|
} |
|
|
|
require.NoError(t, waitData(indexer, int64(len(data)))) |
|
|
|
waitData(t, indexer, int64(len(data))) |
|
|
|
}() |
|
|
|
}() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -751,22 +750,10 @@ func countIndexerData(data map[int64]*internal.IndexerData, f func(v *internal.I |
|
|
|
|
|
|
|
|
|
|
|
// waitData waits for the indexer to index all data.
|
|
|
|
// waitData waits for the indexer to index all data.
|
|
|
|
// Some engines like Elasticsearch index data asynchronously, so we need to wait for a while.
|
|
|
|
// Some engines like Elasticsearch index data asynchronously, so we need to wait for a while.
|
|
|
|
func waitData(indexer internal.Indexer, total int64) error { |
|
|
|
func waitData(t *testing.T, indexer internal.Indexer, total int64) { |
|
|
|
var actual int64 |
|
|
|
assert.Eventually(t, func() bool { |
|
|
|
for i := 0; i < 100; i++ { |
|
|
|
result, err := indexer.Search(t.Context(), &internal.SearchOptions{Paginator: &db.ListOptions{}}) |
|
|
|
result, err := indexer.Search(context.Background(), &internal.SearchOptions{ |
|
|
|
require.NoError(t, err) |
|
|
|
Paginator: &db.ListOptions{ |
|
|
|
return result.Total == total |
|
|
|
PageSize: 0, |
|
|
|
}, 10*time.Second, 100*time.Millisecond, "expected total=%d", total) |
|
|
|
}, |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
return err |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
actual = result.Total |
|
|
|
|
|
|
|
if actual == total { |
|
|
|
|
|
|
|
return nil |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
time.Sleep(100 * time.Millisecond) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return fmt.Errorf("waitData: expected %d, actual %d", total, actual) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|