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"))
Example #2
0
					}))
				})

				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")