From e097e8be8450da5fc0ac99c0d73e7bb1c4c5c23e Mon Sep 17 00:00:00 2001 From: Jarek Kowalski Date: Sun, 25 Aug 2019 17:01:52 -0700 Subject: [PATCH] added test with parallel writes --- repo/content/content_manager_test.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/repo/content/content_manager_test.go b/repo/content/content_manager_test.go index a8b55b1ba..b09b1c783 100644 --- a/repo/content/content_manager_test.go +++ b/repo/content/content_manager_test.go @@ -404,6 +404,32 @@ func TestDeleteContent(t *testing.T) { verifyContentNotFound(ctx, t, bm, content2) } +func TestParallelWrites(t *testing.T) { + t.Parallel() + ctx := context.Background() + data := blobtesting.DataMap{} + keyTime := map[blob.ID]time.Time{} + bm := newTestContentManager(data, keyTime, nil) + + workers := 8 + writesPerWorker := 1000 + var wg sync.WaitGroup + for workerID := 0; workerID < workers; workerID++ { + workerID := workerID + wg.Add(1) + go func() { + defer wg.Done() + for i := 0; i < writesPerWorker; i++ { + writeContentAndVerify(ctx, t, bm, seededRandomData(writesPerWorker*workerID+i, 100)) + } + }() + } + wg.Wait() + if err := bm.Flush(ctx); err != nil { + t.Fatalf("flush error: %v", err) + } +} + func TestRewriteNonDeleted(t *testing.T) { const stepBehaviors = 3