} fakeBBS.DesiredLRPByProcessGuidReturns(&models.DesiredLRP{}, models.ErrResourceNotFound) buildpackBuilder.BuildReturns(newlyDesiredLRP, nil) }) It("logs the incoming and outgoing request", func() { Eventually(logger.TestSink.Buffer).Should(gbytes.Say("request-from-cc")) Eventually(logger.TestSink.Buffer).Should(gbytes.Say("creating-desired-lrp")) }) It("creates the desired LRP", func() { Expect(fakeBBS.DesireLRPCallCount()).To(Equal(1)) Expect(fakeBBS.DesiredLRPByProcessGuidCallCount()).To(Equal(1)) 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"))
} fakeBBS.DesiredLRPByProcessGuidReturns(&models.DesiredLRP{}, models.ErrResourceNotFound) buildpackBuilder.BuildReturns(newlyDesiredLRP, nil) }) It("logs the incoming and outgoing request", func() { Eventually(logger.TestSink.Buffer).Should(gbytes.Say("request-from-cc")) Eventually(logger.TestSink.Buffer).Should(gbytes.Say("creating-desired-lrp")) }) It("creates the desired LRP", func() { Expect(fakeBBS.DesireLRPCallCount()).To(Equal(1)) Expect(fakeBBS.DesiredLRPByProcessGuidCallCount()).To(Equal(1)) _, desiredLRP := fakeBBS.DesireLRPArgsForCall(0) Expect(desiredLRP).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() {
{Hostname: "host-new-process-guid"}, }.CCRouteInfo() Expect(err).NotTo(HaveOccurred()) Eventually(buildpackRecipeBuilder.BuildArgsForCall(0)).Should(Equal( &cc_messages.DesireAppRequestFromCC{ ProcessGuid: "new-process-guid", ETag: "new-etag", RoutingInfo: expectedRoutingInfo, })) }) It("creates a desired LRP for the missing app", func() { Eventually(bbsClient.DesireLRPCallCount).Should(Equal(1)) Consistently(bbsClient.DesireLRPCallCount).Should(Equal(1)) Expect(bbsClient.DesireLRPArgsForCall(0).ProcessGuid).To(Equal("new-process-guid")) }) Context("when fetching desire app requests from the CC fails", func() { BeforeEach(func() { fetcher.FetchDesiredAppsStub = func( logger lager.Logger, cancel <-chan struct{}, httpClient *http.Client, fingerprints <-chan []cc_messages.CCDesiredAppFingerprint, ) (<-chan []cc_messages.DesireAppRequestFromCC, <-chan error) { desireAppRequests := make(chan []cc_messages.DesireAppRequestFromCC) close(desireAppRequests) <-fingerprints
{Hostname: "host-new-process-guid"}, }.CCRouteInfo() Expect(err).NotTo(HaveOccurred()) Eventually(buildpackRecipeBuilder.BuildArgsForCall(0)).Should(Equal( &cc_messages.DesireAppRequestFromCC{ ProcessGuid: "new-process-guid", ETag: "new-etag", RoutingInfo: expectedRoutingInfo, })) }) It("creates a desired LRP for the missing app", func() { Eventually(bbsClient.DesireLRPCallCount).Should(Equal(1)) Consistently(bbsClient.DesireLRPCallCount).Should(Equal(1)) _, desiredLRP := bbsClient.DesireLRPArgsForCall(0) Expect(desiredLRP.ProcessGuid).To(Equal("new-process-guid")) }) Context("when fetching desire app requests from the CC fails", func() { BeforeEach(func() { fetcher.FetchDesiredAppsStub = func( logger lager.Logger, cancel <-chan struct{}, httpClient *http.Client, fingerprints <-chan []cc_messages.CCDesiredAppFingerprint, ) (<-chan []cc_messages.DesireAppRequestFromCC, <-chan error) { desireAppRequests := make(chan []cc_messages.DesireAppRequestFromCC) close(desireAppRequests) <-fingerprints