return models.ErrResourceExists } }) It("retries", func() { Expect(fakeBBS.DesireLRPCallCount()).To(Equal(1)) Expect(fakeBBS.UpdateDesiredLRPCallCount()).To(Equal(1)) }) It("suceeds if the second try is sucessful", func() { Expect(responseRecorder.Code).To(Equal(http.StatusAccepted)) }) Context("when updating the desired LRP fails with a conflict error", func() { BeforeEach(func() { fakeBBS.UpdateDesiredLRPReturns(models.ErrResourceConflict) }) It("fails with a 409 Conflict if the second try is unsuccessful", func() { Expect(responseRecorder.Code).To(Equal(http.StatusConflict)) }) }) }) Context("when building the recipe fails to build", func() { BeforeEach(func() { buildpackBuilder.BuildReturns(nil, recipebuilder.ErrDropletSourceMissing) }) It("logs an error", func() { Eventually(logger.TestSink.Buffer).Should(gbytes.Say("failed-to-build-recipe"))
})) }) It("logs an error for the incorrect docker port", func() { Eventually(logger.TestSink.Buffer).Should(gbytes.Say(`"data":{"error":"our-specific-test-error","execution-metadata":"","process-guid":"docker-process-guid"`)) }) It("propagates the error", func() { Eventually(logger.TestSink.Buffer).Should(gbytes.Say(`sync.not-bumping-freshness-because-of","log_level":2,"data":{"error":"our-specific-test-error"`)) }) }) }) Context("when updating the desired lrp fails", func() { BeforeEach(func() { bbsClient.UpdateDesiredLRPReturns(errors.New("boom")) }) Context("because the desired lrp is invalid", func() { BeforeEach(func() { validationError := models.NewError(models.Error_InvalidRequest, "some-validation-error") bbsClient.UpdateDesiredLRPReturns(validationError.ToError()) }) It("updates the domain", func() { Eventually(bbsClient.UpsertDomainCallCount).Should(Equal(1)) }) It("correctly emits the total number of invalid LRPs found while bulking", func() { Eventually(func() fake.Metric { return metricSender.GetValue("NsyncInvalidDesiredLRPsFound")