Ejemplo n.º 1
0
			Expect(sinkManager.RegisterFirehoseSink(sink)).To(BeTrue())

			Expect(sinkManager.RegisterFirehoseSink(sink)).To(BeFalse())
			Expect(fakeMetricSender.GetValue("messageRouter.numberOfFirehoseSinks").Value).To(Equal(float64(1)))
		})

		It("calls UnregisterFirehoseSink called once Run() returns", func() {
			sink := &channelSink{done: make(chan struct{}), appId: "firehose-a", stop: make(chan struct{})}
			Expect(sinkManager.RegisterFirehoseSink(sink)).To(BeTrue())
			Expect(sinkManager.RegisterFirehoseSink(sink)).To(BeFalse())
			Eventually(sink.RunCalled).Should(BeTrue())

			close(sink.stop)

			Eventually(func() bool { return sinkManager.IsFirehoseRegistered(sink) }).Should(BeFalse())

		})
	})

	Describe("UnregisterFirehoseSink", func() {

		It("stops the sink and updates metrics", func() {
			sink := &channelSink{done: make(chan struct{}), appId: "firehose-a"}

			Expect(sinkManager.RegisterFirehoseSink(sink)).To(BeTrue())

			sinkManager.UnregisterFirehoseSink(sink)
			Eventually(sink.RunFinished).Should(BeTrue())
			Expect(fakeMetricSender.GetValue("messageRouter.numberOfFirehoseSinks").Value).To(Equal(float64(0)))
		})