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"))
			})
示例#2
0
				Expect(bbsClient.RemoveDesiredLRPArgsForCall(0)).To(Equal("excess-process-guid"))
			})
		})

		Context("and the differ discovers missing apps", func() {
			It("uses the recipe builder to construct the create LRP request", func() {
				Eventually(buildpackRecipeBuilder.BuildCallCount).Should(Equal(1))
				Consistently(buildpackRecipeBuilder.BuildCallCount).Should(Equal(1))

				expectedRoutingInfo, err := cc_messages.CCHTTPRoutes{
					{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() {