"log" "github.com/cloudfoundry-incubator/notifications/metrics" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("Metric", func() { var packageLogger *log.Logger var buffer *bytes.Buffer BeforeEach(func() { buffer = bytes.NewBuffer([]byte{}) packageLogger = metrics.DefaultLogger metrics.DefaultLogger = metrics.NewLogger(buffer) }) AfterEach(func() { metrics.DefaultLogger = packageLogger }) It("can log itself", func() { metric := metrics.NewMetric("counter", map[string]interface{}{ "name": "test", }) metric.Log() message, err := buffer.ReadString('\n') if err != nil { panic(err)
. "github.com/onsi/gomega" ) var _ = Describe("QueueGauge", func() { var ( gauge metrics.QueueGauge timer chan time.Time queue *mocks.Queue buffer *bytes.Buffer ) BeforeEach(func() { buffer = bytes.NewBuffer([]byte{}) queue = mocks.NewQueue() timer = make(chan time.Time, 10) gauge = metrics.NewQueueGauge(queue, metrics.NewLogger(buffer), timer) }) It("reports the number of items on the queue as a metric", func() { go gauge.Run() Expect(buffer.String()).To(BeEmpty()) timer <- time.Now() Eventually(func() []string { return strings.Split(buffer.String(), "\n") }).Should(Equal([]string{ `[METRIC] {"kind":"gauge","payload":{"name":"notifications.queue.length","value":0}}`, `[METRIC] {"kind":"gauge","payload":{"name":"notifications.queue.retry","tags":{"count":"0"},"value":0}}`, `[METRIC] {"kind":"gauge","payload":{"name":"notifications.queue.retry","tags":{"count":"1"},"value":0}}`,