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  })