var err error
		request, err = http.NewRequest("DELETE", "", nil)
		Expect(err).NotTo(HaveOccurred())
		request.Form = url.Values{
			":process_guid": []string{"process-guid"},
		}
	})

	JustBeforeEach(func() {
		stopAppHandler := handlers.NewStopAppHandler(logger, fakeBBS)
		stopAppHandler.StopApp(responseRecorder, request)
	})

	It("invokes the bbs to delete the app", func() {
		Expect(fakeBBS.RemoveDesiredLRPCallCount()).To(Equal(1))
		Expect(fakeBBS.RemoveDesiredLRPArgsForCall(0)).To(Equal("process-guid"))
	})

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

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

		It("responds with a ServiceUnavailabe error", func() {
			Expect(responseRecorder.Code).To(Equal(http.StatusServiceUnavailable))
		})
	})
Example #2
0
	Context("when fetching fingerprints succeeds", func() {
		It("emits the total time taken to talk to CC and then update desired state", func() {
			Eventually(bbsClient.UpsertDomainCallCount, 5).Should(Equal(1))

			Eventually(func() fake.Metric { return metricSender.GetValue("DesiredLRPSyncDuration") }).Should(Equal(fake.Metric{
				Value: float64(syncDuration),
				Unit:  "nanos",
			}))
		})

		Context("and the differ discovers desired LRPs to delete", func() {
			It("the processor deletes them", func() {
				Eventually(bbsClient.RemoveDesiredLRPCallCount).Should(Equal(1))
				Consistently(bbsClient.RemoveDesiredLRPCallCount).Should(Equal(1))

				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{
Example #3
0
		var err error
		request, err = http.NewRequest("DELETE", "", nil)
		Expect(err).NotTo(HaveOccurred())
		request.Form = url.Values{
			":process_guid": []string{"process-guid"},
		}
	})

	JustBeforeEach(func() {
		stopAppHandler := handlers.NewStopAppHandler(logger, fakeBBS)
		stopAppHandler.StopApp(responseRecorder, request)
	})

	It("invokes the bbs to delete the app", func() {
		Expect(fakeBBS.RemoveDesiredLRPCallCount()).To(Equal(1))
		_, desiredLRP := fakeBBS.RemoveDesiredLRPArgsForCall(0)
		Expect(desiredLRP).To(Equal("process-guid"))
	})

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

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

		It("responds with a ServiceUnavailabe error", func() {
			Expect(responseRecorder.Code).To(Equal(http.StatusServiceUnavailable))
		})
Example #4
0
		It("emits the total time taken to talk to CC and then update desired state", func() {
			Eventually(bbsClient.UpsertDomainCallCount, 5).Should(Equal(1))

			Eventually(func() fake.Metric { return metricSender.GetValue("DesiredLRPSyncDuration") }).Should(Equal(fake.Metric{
				Value: float64(syncDuration),
				Unit:  "nanos",
			}))
		})

		Context("desired lrps", func() {
			Context("and the differ discovers desired LRPs to delete", func() {
				It("the processor deletes them", func() {
					Eventually(bbsClient.RemoveDesiredLRPCallCount).Should(Equal(1))
					Consistently(bbsClient.RemoveDesiredLRPCallCount).Should(Equal(1))

					_, desiredLRP := bbsClient.RemoveDesiredLRPArgsForCall(0)
					Expect(desiredLRP).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(