AfterEach(func() { close(stopChan) Eventually(runDone).Should(BeClosed()) }) var perform = func() { go func() { runtimeStats.Run(stopChan) close(runDone) }() } var getMetricNames = func() []string { var names []string for _, event := range fakeEventEmitter.GetEvents() { names = append(names, event.(*events.ValueMetric).GetName()) } return names } It("periodically emits events", func() { perform() Eventually(func() int { return len(fakeEventEmitter.GetMessages()) }).Should(BeNumerically(">=", 2)) }) It("emits a NumCpu metric", func() { perform() Eventually(fakeEventEmitter.GetEvents).Should(ContainElement(&events.ValueMetric{
}) It("counts number of log messages read per app", func() { sender.SendAppErrorLog("app-id1", "custom-log-message", "App", "0") sender.SendAppErrorLog("app-id1", "custom-log-message", "App", "0") sender.SendAppErrorLog("app-id2", "custom-log-message", "App", "0") Eventually(emitter.GetEvents).Should(ContainElement(&events.ValueMetric{Name: proto.String("logSenderTotalMessagesRead.app-id1"), Value: proto.Float64(2), Unit: proto.String("count")})) Eventually(emitter.GetEvents).Should(ContainElement(&events.ValueMetric{Name: proto.String("logSenderTotalMessagesRead.app-id2"), Value: proto.Float64(1), Unit: proto.String("count")})) }) }) Describe("counter emission", func() { It("emits on a timer", func() { Eventually(emitter.GetEvents).Should(ContainElement(&events.ValueMetric{Name: proto.String("logSenderTotalMessagesRead"), Value: proto.Float64(0), Unit: proto.String("count")})) Eventually(func() int { return len(emitter.GetEvents()) }).Should(BeNumerically(">", 3)) sender.SendAppLog("app-id", "custom-log-message", "App", "0") Eventually(emitter.GetEvents).Should(ContainElement(&events.ValueMetric{Name: proto.String("logSenderTotalMessagesRead"), Value: proto.Float64(1), Unit: proto.String("count")})) sender.SendAppLog("app-id", "custom-log-message", "App", "0") Eventually(emitter.GetEvents).Should(ContainElement(&events.ValueMetric{Name: proto.String("logSenderTotalMessagesRead"), Value: proto.Float64(2), Unit: proto.String("count")})) }) }) Context("when messages cannot be emitted", func() { BeforeEach(func() { emitter.ReturnError = errors.New("expected error") })