Expect(fakeBBS.DesireLRPArgsForCall(0)).To(Equal(newlyDesiredLRP))

			Expect(buildpackBuilder.BuildArgsForCall(0)).To(Equal(&desireAppRequest))
		})

		It("responds with 202 Accepted", func() {
			Expect(responseRecorder.Code).To(Equal(http.StatusAccepted))
		})

		It("increments the desired LRPs counter", func() {
			Expect(metricSender.GetCounter("LRPsDesired")).To(Equal(uint64(1)))
		})

		Context("when the bbs fails", func() {
			BeforeEach(func() {
				fakeBBS.DesireLRPReturns(errors.New("oh no"))
			})

			It("responds with a ServiceUnavailabe error", func() {
				Expect(responseRecorder.Code).To(Equal(http.StatusServiceUnavailable))
			})
		})

		Context("when the bbs fails with a Conflict error", func() {
			BeforeEach(func() {
				fakeBBS.DesireLRPStub = func(_ *models.DesiredLRP) error {
					fakeBBS.DesiredLRPByProcessGuidReturns(&models.DesiredLRP{
						ProcessGuid: "some-guid",
					}, nil)
					return models.ErrResourceExists
				}
Example #2
0
						Consistently(bbsClient.RemoveDesiredLRPCallCount).Should(Equal(1))
						Expect(bbsClient.RemoveDesiredLRPArgsForCall(0)).To(Equal("excess-process-guid"))

						Eventually(bbsClient.UpdateDesiredLRPCallCount).Should(Equal(2))
						Consistently(bbsClient.UpdateDesiredLRPCallCount).Should(Equal(2))

						updatedGuid1, _ := bbsClient.UpdateDesiredLRPArgsForCall(0)
						updatedGuid2, _ := bbsClient.UpdateDesiredLRPArgsForCall(1)
						Expect([]string{updatedGuid1, updatedGuid2}).To(ConsistOf("stale-process-guid", "docker-process-guid"))
					})
				})
			})

			Context("when creating the missing desired LRP fails", func() {
				BeforeEach(func() {
					bbsClient.DesireLRPReturns(errors.New("nope"))
				})

				It("keeps calm and carries on", func() {
					Consistently(process.Wait()).ShouldNot(Receive())
				})

				It("does not update the domain", func() {
					Consistently(bbsClient.UpsertDomainCallCount).Should(Equal(0))
				})

				Context("and the differ provides creates, updates, and deletes", func() {
					It("continues to send the deletes and updates", func() {
						Eventually(bbsClient.RemoveDesiredLRPCallCount).Should(Equal(1))
						Consistently(bbsClient.RemoveDesiredLRPCallCount).Should(Equal(1))
						Expect(bbsClient.RemoveDesiredLRPArgsForCall(0)).To(Equal("excess-process-guid"))