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)) }) })
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{
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)) })
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(