"StartMissing": 0, "StartEvacuating": 0, "StopExtra": 0, "StopDuplicate": 0, "StopEvacuationComplete": 0, "DesiredStateSyncTimeInMilliseconds": 0, "ActualStateListenerStoreUsagePercentage": 0, "ReceivedHeartbeats": 0, "SavedHeartbeats": 0, })) }) }) Context("when the store errors for some other reason", func() { BeforeEach(func() { fakeStoreAdapter.GetErrInjector = fakestoreadapter.NewFakeStoreAdapterErrorInjector("metrics", errors.New("oops")) }) It("should return an error and an empty map", func() { metrics, err := accountant.GetMetrics() Ω(err).Should(Equal(errors.New("oops"))) Ω(metrics).Should(BeEmpty()) }) }) }) Describe("TrackReceivedHeartbeats", func() { It("should record the number of received heartbeats appropriately", func() { err := accountant.TrackReceivedHeartbeats(127) Ω(err).ShouldNot(HaveOccurred()) metrics, err := accountant.GetMetrics()
It("should respond with an empty hash", func() { response := makeRequest(`{"droplet":"elephant","version":"pink-flamingo"}`) Ω(response).Should(Equal("{}")) }) }) Context("when the app query parameters correspond to an existing app", func() { It("should return the actual instances and crashes of the app", func() { response := makeRequest(validRequestPayload) Ω(response).Should(Equal(string(expectedApp.ToJSON()))) }) }) Context("when something else goes wrong with the store", func() { BeforeEach(func() { storeAdapter.GetErrInjector = fakestoreadapter.NewFakeStoreAdapterErrorInjector("desired", fmt.Errorf("No desired state for you!")) }) It("should return an empty hash", func() { response := makeRequest(validRequestPayload) Ω(response).Should(Equal("{}")) }) }) }) Context("when the store is not fresh", func() { It("should return an empty hash", func() { response := makeRequest(validRequestPayload) Ω(response).Should(Equal("{}")) }) })