mirror of
https://github.com/prometheus/prometheus.git
synced 2025-02-02 08:31:11 -08:00
Add tests according to code review
Signed-off-by: Jeanette Tan <jeanette.tan@grafana.com>
This commit is contained in:
parent
2ad39baa72
commit
dfabc69303
|
@ -1742,18 +1742,24 @@ func TestScrapeLoop_HistogramBucketLimit(t *testing.T) {
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
beforeMetricValue := metric.GetCounter().GetValue()
|
beforeMetricValue := metric.GetCounter().GetValue()
|
||||||
|
|
||||||
nativeHistogram := prometheus.NewHistogram(prometheus.HistogramOpts{
|
nativeHistogram := prometheus.NewHistogramVec(
|
||||||
|
prometheus.HistogramOpts{
|
||||||
Namespace: "testing",
|
Namespace: "testing",
|
||||||
Name: "example_native_histogram",
|
Name: "example_native_histogram",
|
||||||
Help: "This is used for testing",
|
Help: "This is used for testing",
|
||||||
ConstLabels: map[string]string{"some": "value"},
|
ConstLabels: map[string]string{"some": "value"},
|
||||||
NativeHistogramBucketFactor: 1.1, // 10% increase from bucket to bucket
|
NativeHistogramBucketFactor: 1.1, // 10% increase from bucket to bucket
|
||||||
NativeHistogramMaxBucketNumber: 100, // intentionally higher than the limit we'll use in the scraper
|
NativeHistogramMaxBucketNumber: 100, // intentionally higher than the limit we'll use in the scraper
|
||||||
})
|
},
|
||||||
|
[]string{"size"},
|
||||||
|
)
|
||||||
registry := prometheus.NewRegistry()
|
registry := prometheus.NewRegistry()
|
||||||
registry.Register(nativeHistogram)
|
registry.Register(nativeHistogram)
|
||||||
nativeHistogram.Observe(1.0)
|
nativeHistogram.WithLabelValues("S").Observe(1.0)
|
||||||
nativeHistogram.Observe(10.0) // in different bucket since > 1*1.1
|
nativeHistogram.WithLabelValues("M").Observe(1.0)
|
||||||
|
nativeHistogram.WithLabelValues("L").Observe(1.0)
|
||||||
|
nativeHistogram.WithLabelValues("M").Observe(10.0)
|
||||||
|
nativeHistogram.WithLabelValues("L").Observe(10.0) // in different bucket since > 1*1.1
|
||||||
|
|
||||||
gathered, err := registry.Gather()
|
gathered, err := registry.Gather()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
@ -1766,9 +1772,9 @@ func TestScrapeLoop_HistogramBucketLimit(t *testing.T) {
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
total, added, seriesAdded, err := sl.append(app, msg, "application/vnd.google.protobuf", now)
|
total, added, seriesAdded, err := sl.append(app, msg, "application/vnd.google.protobuf", now)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, 1, total)
|
require.Equal(t, 3, total)
|
||||||
require.Equal(t, 1, added)
|
require.Equal(t, 3, added)
|
||||||
require.Equal(t, 1, seriesAdded)
|
require.Equal(t, 3, seriesAdded)
|
||||||
|
|
||||||
err = targetScrapeNativeHistogramBucketLimit.Write(&metric)
|
err = targetScrapeNativeHistogramBucketLimit.Write(&metric)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
@ -1776,7 +1782,7 @@ func TestScrapeLoop_HistogramBucketLimit(t *testing.T) {
|
||||||
require.Equal(t, beforeMetricValue, metricValue)
|
require.Equal(t, beforeMetricValue, metricValue)
|
||||||
beforeMetricValue = metricValue
|
beforeMetricValue = metricValue
|
||||||
|
|
||||||
nativeHistogram.Observe(100.0) // in different bucket since > 10*1.1
|
nativeHistogram.WithLabelValues("L").Observe(100.0) // in different bucket since > 10*1.1
|
||||||
|
|
||||||
gathered, err = registry.Gather()
|
gathered, err = registry.Gather()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
@ -1792,8 +1798,8 @@ func TestScrapeLoop_HistogramBucketLimit(t *testing.T) {
|
||||||
t.Fatalf("Did not see expected histogram bucket limit error: %s", err)
|
t.Fatalf("Did not see expected histogram bucket limit error: %s", err)
|
||||||
}
|
}
|
||||||
require.NoError(t, app.Rollback())
|
require.NoError(t, app.Rollback())
|
||||||
require.Equal(t, 1, total)
|
require.Equal(t, 3, total)
|
||||||
require.Equal(t, 1, added)
|
require.Equal(t, 3, added)
|
||||||
require.Equal(t, 0, seriesAdded)
|
require.Equal(t, 0, seriesAdded)
|
||||||
|
|
||||||
err = targetScrapeNativeHistogramBucketLimit.Write(&metric)
|
err = targetScrapeNativeHistogramBucketLimit.Write(&metric)
|
||||||
|
|
|
@ -31,6 +31,7 @@ import (
|
||||||
|
|
||||||
"github.com/prometheus/prometheus/config"
|
"github.com/prometheus/prometheus/config"
|
||||||
"github.com/prometheus/prometheus/discovery/targetgroup"
|
"github.com/prometheus/prometheus/discovery/targetgroup"
|
||||||
|
"github.com/prometheus/prometheus/model/histogram"
|
||||||
"github.com/prometheus/prometheus/model/labels"
|
"github.com/prometheus/prometheus/model/labels"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -488,3 +489,63 @@ scrape_configs:
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestBucketLimitAppender(t *testing.T) {
|
||||||
|
example := histogram.Histogram{
|
||||||
|
Schema: 0,
|
||||||
|
Count: 21,
|
||||||
|
Sum: 33,
|
||||||
|
ZeroThreshold: 0.001,
|
||||||
|
ZeroCount: 3,
|
||||||
|
PositiveSpans: []histogram.Span{
|
||||||
|
{Offset: 0, Length: 3},
|
||||||
|
},
|
||||||
|
PositiveBuckets: []int64{3, 0, 0},
|
||||||
|
NegativeSpans: []histogram.Span{
|
||||||
|
{Offset: 0, Length: 3},
|
||||||
|
},
|
||||||
|
NegativeBuckets: []int64{3, 0, 0},
|
||||||
|
}
|
||||||
|
|
||||||
|
cases := []struct {
|
||||||
|
h histogram.Histogram
|
||||||
|
limit int
|
||||||
|
expectError bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
h: example,
|
||||||
|
limit: 3,
|
||||||
|
expectError: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
h: example,
|
||||||
|
limit: 10,
|
||||||
|
expectError: false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
resApp := &collectResultAppender{}
|
||||||
|
|
||||||
|
for _, c := range cases {
|
||||||
|
for _, floatHisto := range []bool{true, false} {
|
||||||
|
t.Run(fmt.Sprintf("floatHistogram=%t", floatHisto), func(t *testing.T) {
|
||||||
|
app := &bucketLimitAppender{Appender: resApp, limit: c.limit}
|
||||||
|
ts := int64(10 * time.Minute / time.Millisecond)
|
||||||
|
h := c.h
|
||||||
|
lbls := labels.FromStrings("__name__", "sparse_histogram_series")
|
||||||
|
var err error
|
||||||
|
if floatHisto {
|
||||||
|
_, err = app.AppendHistogram(0, lbls, ts, nil, h.Copy().ToFloat())
|
||||||
|
} else {
|
||||||
|
_, err = app.AppendHistogram(0, lbls, ts, h.Copy(), nil)
|
||||||
|
}
|
||||||
|
if c.expectError {
|
||||||
|
require.Error(t, err)
|
||||||
|
} else {
|
||||||
|
require.NoError(t, err)
|
||||||
|
}
|
||||||
|
require.NoError(t, app.Commit())
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue