It("sends a 'routes unregistered' metric", func() {
				Eventually(func() uint64 {
					return fakeMetricSender.GetCounter("RoutesUnRegistered")
				}).Should(BeEquivalentTo(0))
			})

			It("should emit whatever the table tells it to emit", func() {
				Eventually(emitter.EmitCallCount).Should(Equal(2))
				messagesToEmit := emitter.EmitArgsForCall(1)
				Expect(messagesToEmit).To(Equal(dummyMessagesToEmit))
			})

			Context("when there are multiple CF routes", func() {
				BeforeEach(func() {
					routes := cfroutes.CFRoutes{expectedCFRoute, expectedAdditionalCFRoute}.RoutingInfo()
					desiredLRP.Routes = &routes
				})

				It("registers all of the routes on the table", func() {
					Eventually(table.SetRoutesCallCount).Should(Equal(2))

					key, routes := table.SetRoutesArgsForCall(0)
					Expect(key).To(Equal(expectedRoutingKey))
					Expect(routes).To(Equal(routing_table.Routes{Hostnames: expectedRoutes, LogGuid: logGuid, RouteServiceUrl: expectedRouteServiceUrl}))

					key, routes = table.SetRoutesArgsForCall(1)
					Expect(key).To(Equal(expectedAdditionalRoutingKey))
					Expect(routes).To(Equal(routing_table.Routes{Hostnames: expectedAdditionalRoutes, LogGuid: logGuid}))
				})

				It("emits whatever the table tells it to emit", func() {
		})

		Context("when the container port cannot be found", func() {
			BeforeEach(func() {
				actualLRPGroup.Instance.Ports = []*models.PortMapping{}
				bbsClient.ActualLRPGroupByProcessGuidAndIndexReturns(actualLRPGroup, nil)
			})

			It("returns an empty permission reference", func() {
				Expect(permissions).To(Equal(&ssh.Permissions{}))
			})
		})

		Context("when the desired LRP does not include routes", func() {
			BeforeEach(func() {
				desiredLRP.Routes = nil
				bbsClient.DesiredLRPByProcessGuidReturns(desiredLRP, nil)
			})

			It("fails the authentication", func() {
				Expect(buildErr).To(Equal(authenticators.RouteNotFoundErr))
			})
		})

		Context("when the desired LRP does not include an SSH route", func() {
			BeforeEach(func() {
				r := *desiredLRP.Routes
				delete(r, routes.DIEGO_SSH)
				bbsClient.DesiredLRPByProcessGuidReturns(desiredLRP, nil)
			})
Esempio n. 3
0
			protoSerialization, err := proto.Marshal(&desiredLRP)
			Expect(err).NotTo(HaveOccurred())

			var protoDeserialization models.DesiredLRP
			err = proto.Unmarshal(protoSerialization, &protoDeserialization)
			Expect(err).NotTo(HaveOccurred())

			desiredRoutes := *desiredLRP.Routes
			deserializedRoutes := *protoDeserialization.Routes

			Expect(deserializedRoutes).To(HaveLen(len(desiredRoutes)))
			for k := range desiredRoutes {
				Expect(string(*deserializedRoutes[k])).To(MatchJSON(string(*desiredRoutes[k])))
			}

			desiredLRP.Routes = nil
			protoDeserialization.Routes = nil
			Expect(protoDeserialization).To(Equal(desiredLRP))
		})
	})

	Describe("ApplyUpdate", func() {
		It("updates instances", func() {
			instances := int32(100)
			update := &models.DesiredLRPUpdate{Instances: &instances}
			schedulingInfo := desiredLRP.DesiredLRPSchedulingInfo()

			expectedSchedulingInfo := schedulingInfo
			expectedSchedulingInfo.Instances = instances
			expectedSchedulingInfo.ModificationTag.Increment()