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))) }) It("does not update metrics when a sink is not registered", func() { sink := &channelSink{done: make(chan struct{})} sinkManager.UnregisterFirehoseSink(sink) Expect(fakeMetricSender.GetValue("messageRouter.numberOfFirehoseSinks").Value).To(Equal(float64(0))) }) }) Describe("IsFirehoseSinkRegistered", func() { It("returns true if sink is registered", func() { sink := &channelSink{done: make(chan struct{}), appId: "firehose-a"}