innerBlobstore.CreateBlobID = "fake-blob-id"
				innerBlobstore.CreateFingerprint = "fake-fingerprint"

				blobID, fingerprint, err := retryableBlobstore.Create("fake-file-name")
				Expect(err).ToNot(HaveOccurred())
				Expect(blobID).To(Equal("fake-blob-id"))
				Expect(fingerprint).To(Equal("fake-fingerprint"))

				Expect(innerBlobstore.CreateFileNames).To(Equal([]string{"fake-file-name"}))
			})
		})

		Context("when inner blobstore succeed exactly at maximum number of create tries", func() {
			It("returns blobID and fingerprint without an error", func() {
				innerBlobstore.CreateBlobIDs = []string{"", "", "fake-last-blob-id"}
				innerBlobstore.CreateFingerprints = []string{"", "", "fake-last-fingerprint"}
				innerBlobstore.CreateErrs = []error{
					errors.New("fake-create-err-1"),
					errors.New("fake-create-err-2"),
					nil,
				}

				blobID, fingerprint, err := retryableBlobstore.Create("fake-file-name")
				Expect(err).ToNot(HaveOccurred())
				Expect(blobID).To(Equal("fake-last-blob-id"))
				Expect(fingerprint).To(Equal("fake-last-fingerprint"))

				Expect(innerBlobstore.CreateFileNames).To(Equal(
					[]string{"fake-file-name", "fake-file-name", "fake-file-name"},
				))
			})
Esempio n. 2
0
		jobProperties := biproperty.Map{
			"fake-installation-property": "fake-installation-property-value",
		}
		globalProperties := biproperty.Map{}
		deploymentName := "fake-installation-name"
		address := ""

		renderedJobList = bitemplate.NewRenderedJobList()
		renderedJobList.Add(bitemplate.NewRenderedJob(releaseJob, "/fake-rendered-job-cpi", fakeFS, logger))

		mockJobListRenderer.EXPECT().Render(releaseJobs, releaseJobProperties, jobProperties, globalProperties, deploymentName, address).Return(renderedJobList, nil).AnyTimes()

		fakeCompressor.CompressFilesInDirTarballPath = "/fake-rendered-job-tarball-cpi.tgz"

		fakeBlobstore.CreateBlobIDs = []string{"fake-rendered-job-tarball-blobstore-id-cpi"}
		fakeBlobstore.CreateFingerprints = []string{"fake-rendered-job-tarball-sha1-cpi"}
	})

	Describe("RenderAndUploadFrom", func() {
		It("logs compile & render stages", func() {
			_, err := renderer.RenderAndUploadFrom(manifest, releaseJobs, fakeStage)
			Expect(err).ToNot(HaveOccurred())

			Expect(fakeStage.PerformCalls).To(Equal([]*fakebiui.PerformCall{
				// compile stages not produced by mockDependencyCompiler
				{Name: "Rendering job templates"},
			}))
		})

		It("compresses and uploads the rendered cpi job, deleting the local tarball afterward", func() {
			_, err := renderer.RenderAndUploadFrom(manifest, releaseJobs, fakeStage)