}, 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))
		}
Example #2
0
				})

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