}, 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("updating-desired-lrp")) }) It("checks to see if LRP already exists", func() { Eventually(fakeBBS.DesiredLRPByProcessGuidCallCount).Should(Equal(1)) }) opaqueRoutingDataCheck := func(expectedRoutes cfroutes.CFRoutes) { Eventually(fakeBBS.UpdateDesiredLRPCallCount).Should(Equal(1)) processGuid, updateRequest := fakeBBS.UpdateDesiredLRPArgsForCall(0) Expect(processGuid).To(Equal("some-guid")) Expect(*updateRequest.Instances).To(BeEquivalentTo(2)) Expect(*updateRequest.Annotation).To(Equal("last-modified-etag")) cfJson := (*updateRequest.Routes)[cfroutes.CF_ROUTER] otherJson := (*updateRequest.Routes)["some-other-routing-data"] var cfRoutes cfroutes.CFRoutes err := json.Unmarshal(*cfJson, &cfRoutes) Expect(err).NotTo(HaveOccurred()) Expect(cfRoutes).To(ConsistOf(expectedRoutes)) Expect(cfRoutes).To(HaveLen(len(expectedRoutes))) Expect(otherJson).To(Equal(&opaqueRoutingMessage)) }
}) 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")) 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()) })