forked from mirror/client_golang
Exposes bug #498 - unexpected results for Histograms in testutil
Signed-off-by: PhilipGough <philip.p.gough@gmail.com>
This commit is contained in:
parent
ca9acd2391
commit
30503fe98e
|
@ -165,6 +165,82 @@ func TestCollectAndCompareNoLabel(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestCollectAndCompareHistogram(t *testing.T) {
|
||||
inputs := []struct {
|
||||
name string
|
||||
c prometheus.Collector
|
||||
metadata string
|
||||
expect string
|
||||
labels []string
|
||||
observation float64
|
||||
}{
|
||||
{
|
||||
name: "Testing Histogram Collector",
|
||||
c: prometheus.NewHistogram(prometheus.HistogramOpts{
|
||||
Name: "some_histogram",
|
||||
Help: "An example of a histogram",
|
||||
Buckets: []float64{1, 2, 3},
|
||||
}),
|
||||
metadata: `
|
||||
# HELP some_histogram An example of a histogram
|
||||
# TYPE some_histogram histogram
|
||||
`,
|
||||
expect: `
|
||||
some_histogram{le="1"} 0
|
||||
some_histogram{le="2"} 0
|
||||
some_histogram{le="3"} 1
|
||||
some_histogram_bucket{le="+Inf"} 1
|
||||
some_histogram_sum 2.5
|
||||
some_histogram_count 1
|
||||
|
||||
`,
|
||||
observation: 2.5,
|
||||
},
|
||||
{
|
||||
name: "Testing HistogramVec Collector",
|
||||
c: prometheus.NewHistogramVec(prometheus.HistogramOpts{
|
||||
Name: "some_histogram",
|
||||
Help: "An example of a histogram",
|
||||
Buckets: []float64{1, 2, 3},
|
||||
}, []string{"test"}),
|
||||
|
||||
metadata: `
|
||||
# HELP some_histogram An example of a histogram
|
||||
# TYPE some_histogram histogram
|
||||
`,
|
||||
expect: `
|
||||
some_histogram_bucket{test="test",le="1"} 0
|
||||
some_histogram_bucket{test="test",le="2"} 0
|
||||
some_histogram_bucket{test="test",le="3"} 1
|
||||
some_histogram_bucket{test="test",le="+Inf"} 1
|
||||
some_histogram_sum{test="test"} 2.5
|
||||
some_histogram_count{test="test"} 1
|
||||
|
||||
`,
|
||||
observation: 2.5,
|
||||
},
|
||||
}
|
||||
|
||||
for _, input := range inputs {
|
||||
switch collector := input.c.(type) {
|
||||
case prometheus.Histogram:
|
||||
collector.Observe(input.observation)
|
||||
case *prometheus.HistogramVec:
|
||||
collector.WithLabelValues("test").Observe(input.observation)
|
||||
default:
|
||||
t.Fatalf("unsuported collector tested")
|
||||
|
||||
}
|
||||
|
||||
t.Run(input.name, func(t *testing.T) {
|
||||
if err := CollectAndCompare(input.c, strings.NewReader(input.metadata+input.expect)); err != nil {
|
||||
t.Errorf("unexpected collecting result:\n%s", err)
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
func TestNoMetricFilter(t *testing.T) {
|
||||
const metadata = `
|
||||
# HELP some_total A value that represents a counter.
|
||||
|
|
Loading…
Reference in New Issue