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