Skip to content

Commit dc51be3

Browse files
fix a flaky test in purger (#2841)
Signed-off-by: Sandeep Sukhani <[email protected]>
1 parent 4ac5ce8 commit dc51be3

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

pkg/chunk/purger/purger_test.go

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,6 @@ func setupTestDeleteStore(t *testing.T) *DeleteStore {
5252
}
5353

5454
func setupStoresAndPurger(t *testing.T) (*DeleteStore, chunk.Store, chunk.ObjectClient, *Purger, *prometheus.Registry) {
55-
registry := prometheus.NewRegistry()
56-
5755
deleteStore := setupTestDeleteStore(t)
5856

5957
chunkStore, err := testutils.SetupTestChunkStore()
@@ -62,13 +60,21 @@ func setupStoresAndPurger(t *testing.T) (*DeleteStore, chunk.Store, chunk.Object
6260
storageClient, err := testutils.SetupTestObjectStore()
6361
require.NoError(t, err)
6462

63+
purger, registry := setupPurger(t, deleteStore, chunkStore, storageClient)
64+
65+
return deleteStore, chunkStore, storageClient, purger, registry
66+
}
67+
68+
func setupPurger(t *testing.T, deleteStore *DeleteStore, chunkStore chunk.Store, storageClient chunk.ObjectClient) (*Purger, *prometheus.Registry) {
69+
registry := prometheus.NewRegistry()
70+
6571
var cfg Config
6672
flagext.DefaultValues(&cfg)
6773

6874
purger, err := NewPurger(cfg, deleteStore, chunkStore, storageClient, registry)
6975
require.NoError(t, err)
7076

71-
return deleteStore, chunkStore, storageClient, purger, registry
77+
return purger, registry
7278
}
7379

7480
func buildChunks(from, through model.Time, batchSize int) ([]chunk.Chunk, error) {
@@ -347,10 +353,7 @@ func TestPurger_Restarts(t *testing.T) {
347353
require.NoError(t, services.StopAndAwaitTerminated(context.Background(), purger))
348354

349355
// create a new purger to check whether it picks up in process delete requests
350-
var cfg Config
351-
flagext.DefaultValues(&cfg)
352-
newPurger, err := NewPurger(cfg, deleteStore, chunkStore, storageClient, prometheus.NewPedanticRegistry())
353-
require.NoError(t, err)
356+
newPurger, _ := setupPurger(t, deleteStore, chunkStore, storageClient)
354357

355358
// load in process delete requests by calling Run
356359
require.NoError(t, services.StartAndAwaitRunning(context.Background(), newPurger))
@@ -385,7 +388,7 @@ func TestPurger_Restarts(t *testing.T) {
385388
}
386389

387390
func TestPurger_Metrics(t *testing.T) {
388-
deleteStore, chunkStore, _, purger, registry := setupStoresAndPurger(t)
391+
deleteStore, chunkStore, storageClient, purger, registry := setupStoresAndPurger(t)
389392
defer func() {
390393
purger.StopAsync()
391394
chunkStore.Stop()
@@ -414,9 +417,17 @@ func TestPurger_Metrics(t *testing.T) {
414417
require.InDelta(t, float64(2*86400), testutil.ToFloat64(purger.metrics.oldestPendingDeleteRequestAgeSeconds), 1)
415418
require.Equal(t, float64(2), testutil.ToFloat64(purger.metrics.pendingDeleteRequestsCount))
416419

417-
// start loop to process requests
420+
// stop the existing purger
421+
require.NoError(t, services.StopAndAwaitTerminated(context.Background(), purger))
422+
423+
// create a new purger
424+
purger, registry = setupPurger(t, deleteStore, chunkStore, storageClient)
425+
426+
// load in process delete requests by starting the service
418427
require.NoError(t, services.StartAndAwaitRunning(context.Background(), purger))
419428

429+
defer purger.StopAsync()
430+
420431
// wait until purger_delete_requests_processed_total starts to show up.
421432
test.Poll(t, 2*time.Second, 1, func() interface{} {
422433
count, err := testutil.GatherAndCount(registry, "cortex_purger_delete_requests_processed_total")

0 commit comments

Comments
 (0)