Context("when inner blobstore succeeds before maximum number of get tries (first time)", func() { It("returns path without an error", func() { innerBlobstore.GetFileName = "fake-path" path, err := retryableBlobstore.Get("fake-blob-id", "fake-fingerprint") Expect(err).ToNot(HaveOccurred()) Expect(path).To(Equal("fake-path")) Expect(innerBlobstore.GetBlobIDs).To(Equal([]string{"fake-blob-id"})) Expect(innerBlobstore.GetFingerprints).To(Equal([]string{"fake-fingerprint"})) }) }) Context("when inner blobstore succeed exactly at maximum number of get tries", func() { It("returns path without an error", func() { innerBlobstore.GetFileNames = []string{"", "", "fake-last-path"} innerBlobstore.GetErrs = []error{ errors.New("fake-get-err-1"), errors.New("fake-get-err-2"), nil, } path, err := retryableBlobstore.Get("fake-blob-id", "fake-fingerprint") Expect(err).ToNot(HaveOccurred()) Expect(path).To(Equal("fake-last-path")) Expect(innerBlobstore.GetBlobIDs).To(Equal( []string{"fake-blob-id", "fake-blob-id", "fake-blob-id"}, )) Expect(innerBlobstore.GetFingerprints).To(Equal(