Ω(messageBus.Subscriptions).Should(HaveKey("dea.heartbeat")) Ω(messageBus.Subscriptions["dea.heartbeat"]).Should(HaveLen(1)) }) It("should subscribe to the dea.advertise subject", func() { Ω(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)) }) })
It("To subscribe to the dea.advertise subject", func() { Expect(messageBus.Subscriptions("dea.advertise")).NotTo(BeNil()) Expect(messageBus.Subscriptions("dea.advertise")).To(HaveLen(1)) }) It("To start tracking store usage", func() { Expect(usageTracker.StartTrackingUsageCallCount()).To(Equal(1)) Expect(usageTracker.MeasureUsageCallCount()).To(Equal(1)) Expect(metricsAccountant.TrackActualStateListenerStoreUsageFractionCallCount()).To(Equal(1)) Expect(metricsAccountant.TrackActualStateListenerStoreUsageFractionArgsForCall(0)).To(Equal(0.7)) }) It("To save heartbeats on a timer", func() { beat() clock.Increment(conf.ListenerHeartbeatSyncInterval()) Eventually(store.SyncHeartbeatsCallCount).Should(Equal(1)) beat() Consistently(store.SyncHeartbeatsCallCount).Should(Equal(1)) clock.Increment(conf.ListenerHeartbeatSyncInterval()) Eventually(store.SyncHeartbeatsCallCount).Should(Equal(2)) }) Context("When it receives a dea advertisement over the message bus", func() { advertise := func() { messageBus.SubjectCallbacks("dea.advertise")[0](&nats.Msg{ Data: []byte("doesn't matter"), }) }