Ω(messageBus.Subscriptions).Should(HaveKey("dea.advertise")) Ω(messageBus.Subscriptions["dea.advertise"]).Should(HaveLen(1)) }) It("should start tracking store usage", func() { Ω(usageTracker.DidStart).Should(BeTrue()) Ω(metricsAccountant.TrackedActualStateListenerStoreUsageFraction).Should(Equal(0.7)) }) It("should save heartbeats on a timer", func() { Ω(timeProvider.TickerDurationFor(HeartbeatSyncTimer)).Should(Equal(conf.ListenerHeartbeatSyncInterval())) }) Context("when the usage tracker is nil", func() { It("should not track metrics (or blow up!)", func() { metricsAccountant.TrackedActualStateListenerStoreUsageFraction = -1.0 listener = New(conf, messageBus, store, nil, metricsAccountant, timeProvider, logger) Ω(func() { listener.Start() }).ShouldNot(Panic()) Ω(metricsAccountant.TrackedActualStateListenerStoreUsageFraction).Should(Equal(-1.0)) }) }) Context("When it receives a dea advertisement over the message bus", func() { Context("and no heartbeat has been received recently", func() { BeforeEach(func() { messageBus.Subscriptions["dea.heartbeat"][0].Callback(&yagnats.Message{ Payload: app.Heartbeat(1).ToJSON(),