From 839f59899cc6e4b9a9f33c05c10767b8b34471da Mon Sep 17 00:00:00 2001 From: Peter Bourgon Date: Thu, 9 Feb 2017 22:05:17 -0500 Subject: [PATCH] metrics/generic: With should track Name Closes #455 --- metrics/generic/generic.go | 7 +++++-- metrics/generic/generic_test.go | 18 +++++++++++++++--- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/metrics/generic/generic.go b/metrics/generic/generic.go index 295b016d2..ebde9c873 100644 --- a/metrics/generic/generic.go +++ b/metrics/generic/generic.go @@ -33,6 +33,7 @@ func NewCounter(name string) *Counter { // With implements Counter. func (c *Counter) With(labelValues ...string) metrics.Counter { return &Counter{ + Name: c.Name, bits: atomic.LoadUint64(&c.bits), lvs: c.lvs.With(labelValues...), } @@ -95,6 +96,7 @@ func NewGauge(name string) *Gauge { // With implements Gauge. func (g *Gauge) With(labelValues ...string) metrics.Gauge { return &Gauge{ + Name: g.Name, bits: atomic.LoadUint64(&g.bits), lvs: g.lvs.With(labelValues...), } @@ -150,8 +152,9 @@ func NewHistogram(name string, buckets int) *Histogram { // With implements Histogram. func (h *Histogram) With(labelValues ...string) metrics.Histogram { return &Histogram{ - lvs: h.lvs.With(labelValues...), - h: h.h, + Name: h.Name, + lvs: h.lvs.With(labelValues...), + h: h.h, } } diff --git a/metrics/generic/generic_test.go b/metrics/generic/generic_test.go index a2eb91be5..56e6a5caf 100644 --- a/metrics/generic/generic_test.go +++ b/metrics/generic/generic_test.go @@ -15,7 +15,11 @@ import ( ) func TestCounter(t *testing.T) { - counter := generic.NewCounter("my_counter").With("label", "counter").(*generic.Counter) + name := "my_counter" + counter := generic.NewCounter(name).With("label", "counter").(*generic.Counter) + if want, have := name, counter.Name; want != have { + t.Errorf("Name: want %q, have %q", want, have) + } value := func() float64 { return counter.Value() } if err := teststat.TestCounter(counter, value); err != nil { t.Fatal(err) @@ -36,7 +40,11 @@ func TestValueReset(t *testing.T) { } func TestGauge(t *testing.T) { - gauge := generic.NewGauge("my_gauge").With("label", "gauge").(*generic.Gauge) + name := "my_gauge" + gauge := generic.NewGauge(name).With("label", "gauge").(*generic.Gauge) + if want, have := name, gauge.Name; want != have { + t.Errorf("Name: want %q, have %q", want, have) + } value := func() float64 { return gauge.Value() } if err := teststat.TestGauge(gauge, value); err != nil { t.Fatal(err) @@ -44,7 +52,11 @@ func TestGauge(t *testing.T) { } func TestHistogram(t *testing.T) { - histogram := generic.NewHistogram("my_histogram", 50).With("label", "histogram").(*generic.Histogram) + name := "my_histogram" + histogram := generic.NewHistogram(name, 50).With("label", "histogram").(*generic.Histogram) + if want, have := name, histogram.Name; want != have { + t.Errorf("Name: want %q, have %q", want, have) + } quantiles := func() (float64, float64, float64, float64) { return histogram.Quantile(0.50), histogram.Quantile(0.90), histogram.Quantile(0.95), histogram.Quantile(0.99) }