diff --git a/repo/blob/b2/b2_storage_test.go b/repo/blob/b2/b2_storage_test.go index 8caac32fe..13d89732b 100644 --- a/repo/blob/b2/b2_storage_test.go +++ b/repo/blob/b2/b2_storage_test.go @@ -9,6 +9,7 @@ "time" "github.com/kopia/kopia/internal/blobtesting" + "github.com/kopia/kopia/internal/testutil" "github.com/kopia/kopia/repo/blob" "github.com/kopia/kopia/repo/blob/b2" ) @@ -33,41 +34,43 @@ func TestB2Storage(t *testing.T) { bucket := getEnvOrSkip(t, testBucketEnv) keyID := getEnvOrSkip(t, testKeyIDEnv) key := getEnvOrSkip(t, testKeyEnv) + testutil.Retry(t, func(t *testutil.RetriableT) { - data := make([]byte, 8) - rand.Read(data) //nolint:errcheck + data := make([]byte, 8) + rand.Read(data) //nolint:errcheck - ctx := context.Background() - st, err := b2.New(ctx, &b2.Options{ - BucketName: bucket, - KeyID: keyID, - Key: key, - Prefix: fmt.Sprintf("test-%v-%x-", time.Now().Unix(), data), + ctx := context.Background() + st, err := b2.New(ctx, &b2.Options{ + BucketName: bucket, + KeyID: keyID, + Key: key, + Prefix: fmt.Sprintf("test-%v-%x-", time.Now().Unix(), data), + }) + + if err != nil { + t.Fatalf("unable to build b2 storage: %v", err) + } + + if err := st.ListBlobs(ctx, "", func(bm blob.Metadata) error { + return st.DeleteBlob(ctx, bm.BlobID) + }); err != nil { + t.Fatalf("unable to clear b2 bucket: %v", err) + } + + blobtesting.VerifyStorage(ctx, t, st) + blobtesting.AssertConnectionInfoRoundTrips(ctx, t, st) + + // delete everything again + if err := st.ListBlobs(ctx, "", func(bm blob.Metadata) error { + return st.DeleteBlob(ctx, bm.BlobID) + }); err != nil { + t.Fatalf("unable to clear b2 bucket: %v", err) + } + + if err := st.Close(ctx); err != nil { + t.Fatalf("err: %v", err) + } }) - - if err != nil { - t.Fatalf("unable to build b2 storage: %v", err) - } - - if err := st.ListBlobs(ctx, "", func(bm blob.Metadata) error { - return st.DeleteBlob(ctx, bm.BlobID) - }); err != nil { - t.Fatalf("unable to clear b2 bucket: %v", err) - } - - blobtesting.VerifyStorage(ctx, t, st) - blobtesting.AssertConnectionInfoRoundTrips(ctx, t, st) - - // delete everything again - if err := st.ListBlobs(ctx, "", func(bm blob.Metadata) error { - return st.DeleteBlob(ctx, bm.BlobID) - }); err != nil { - t.Fatalf("unable to clear b2 bucket: %v", err) - } - - if err := st.Close(ctx); err != nil { - t.Fatalf("err: %v", err) - } } func TestB2StorageInvalidBlob(t *testing.T) {