github.com/brycereitano/goa@v0.0.0-20170315073847-8ffa6c85e265/metrics_test.go (about) 1 package goa_test 2 3 import ( 4 "time" 5 6 "github.com/goadesign/goa" 7 8 . "github.com/onsi/ginkgo" 9 . "github.com/onsi/gomega" 10 11 "github.com/armon/go-metrics" 12 ) 13 14 // mock metrics 15 type mockSink struct{} 16 17 func (m *mockSink) SetGauge(key []string, val float32) {} 18 func (m *mockSink) EmitKey(key []string, val float32) {} 19 func (m *mockSink) IncrCounter(key []string, val float32) {} 20 func (m *mockSink) AddSample(key []string, val float32) {} 21 func (m *mockSink) MeasureSince(key []string, start time.Time) {} 22 23 var _ = Describe("Metrics", func() { 24 var keys = [6]string{} 25 var metriks *metrics.Metrics 26 var sink *mockSink 27 28 BeforeEach(func() { 29 sink = &mockSink{} 30 31 var err error 32 metriks, err = metrics.New(metrics.DefaultConfig("UnitTest Service"), sink) 33 34 if err != nil { 35 panic("Unable to create test instance of metrics") 36 } 37 38 keys = [6]string{ 39 "foo_bar_*/*", 40 "foo_*_baz", 41 "foo/baz", 42 "foo/bar/baz", 43 "foo/bar*_*/*", 44 "//foo/bar*", 45 } 46 }) 47 48 Describe("Add sample", func() { 49 Context("With invalid characters in key", func() { 50 It("should replace invalid characters with normalized characters", func() { 51 goa.SetMetrics(metriks) 52 goa.AddSample(keys[:], 3.14) 53 Ω(keys).Should(ConsistOf([]string{ 54 "foo_bar_all", 55 "foo___baz", 56 "foo_baz", 57 "foo_bar_baz", 58 "foo_bar__all", 59 "__foo_bar_", 60 })) 61 }) 62 }) 63 }) 64 65 Describe("Emit key", func() { 66 Context("With invalid characters in key", func() { 67 It("should replace invalid characters with normalized characters", func() { 68 goa.SetMetrics(metriks) 69 goa.EmitKey(keys[:], 3.14) 70 Ω(keys).Should(ConsistOf([]string{ 71 "foo_bar_all", 72 "foo___baz", 73 "foo_baz", 74 "foo_bar_baz", 75 "foo_bar__all", 76 "__foo_bar_", 77 })) 78 }) 79 }) 80 }) 81 82 Describe("Increment Counter", func() { 83 Context("With invalid characters in key", func() { 84 It("should replace invalid characters with normalized characters", func() { 85 goa.SetMetrics(metriks) 86 goa.IncrCounter(keys[:], 3.14) 87 Ω(keys).Should(ConsistOf([]string{ 88 "foo_bar_all", 89 "foo___baz", 90 "foo_baz", 91 "foo_bar_baz", 92 "foo_bar__all", 93 "__foo_bar_", 94 })) 95 }) 96 }) 97 }) 98 99 Describe("Measure since", func() { 100 Context("With invalid characters in key", func() { 101 It("should replace invalid characters with normalized characters", func() { 102 goa.SetMetrics(metriks) 103 goa.MeasureSince(keys[:], time.Time{}) 104 Ω(keys).Should(ConsistOf([]string{ 105 "foo_bar_all", 106 "foo___baz", 107 "foo_baz", 108 "foo_bar_baz", 109 "foo_bar__all", 110 "__foo_bar_", 111 })) 112 }) 113 }) 114 }) 115 116 Describe("Set gauge", func() { 117 Context("With invalid characters in key", func() { 118 It("should replace invalid characters with normalized characters", func() { 119 goa.SetMetrics(metriks) 120 goa.SetGauge(keys[:], 3.14) 121 Ω(keys).Should(ConsistOf([]string{ 122 "foo_bar_all", 123 "foo___baz", 124 "foo_baz", 125 "foo_bar_baz", 126 "foo_bar__all", 127 "__foo_bar_", 128 })) 129 }) 130 }) 131 }) 132 })