mirror of
https://github.com/prometheus/prometheus
synced 2024-12-27 09:02:53 +00:00
change origin schema in ReduceResolution
method of histogram and float histogram (#13116)
* change origin schema in ReduceResolution method of histogram and float histogram Signed-off-by: Ziqi Zhao <zhaoziqi9146@gmail.com> --------- Signed-off-by: Ziqi Zhao <zhaoziqi9146@gmail.com>
This commit is contained in:
parent
80d2f992ae
commit
e250f09b5d
@ -1112,6 +1112,6 @@ func floatBucketsMatch(b1, b2 []float64) bool {
|
||||
func (h *FloatHistogram) ReduceResolution(targetSchema int32) *FloatHistogram {
|
||||
h.PositiveSpans, h.PositiveBuckets = reduceResolution(h.PositiveSpans, h.PositiveBuckets, h.Schema, targetSchema, false)
|
||||
h.NegativeSpans, h.NegativeBuckets = reduceResolution(h.NegativeSpans, h.NegativeBuckets, h.Schema, targetSchema, false)
|
||||
|
||||
h.Schema = targetSchema
|
||||
return h
|
||||
}
|
||||
|
@ -2442,3 +2442,46 @@ func createRandomSpans(rng *rand.Rand, spanNum int32) ([]Span, []float64) {
|
||||
}
|
||||
return Spans, Buckets
|
||||
}
|
||||
|
||||
func TestFloatHistogramReduceResolution(t *testing.T) {
|
||||
tcs := map[string]struct {
|
||||
origin *FloatHistogram
|
||||
target *FloatHistogram
|
||||
}{
|
||||
"valid float histogram": {
|
||||
origin: &FloatHistogram{
|
||||
Schema: 0,
|
||||
PositiveSpans: []Span{
|
||||
{Offset: 0, Length: 4},
|
||||
{Offset: 0, Length: 0},
|
||||
{Offset: 3, Length: 2},
|
||||
},
|
||||
PositiveBuckets: []float64{1, 3, 1, 2, 1, 1},
|
||||
NegativeSpans: []Span{
|
||||
{Offset: 0, Length: 4},
|
||||
{Offset: 0, Length: 0},
|
||||
{Offset: 3, Length: 2},
|
||||
},
|
||||
NegativeBuckets: []float64{1, 3, 1, 2, 1, 1},
|
||||
},
|
||||
target: &FloatHistogram{
|
||||
Schema: -1,
|
||||
PositiveSpans: []Span{
|
||||
{Offset: 0, Length: 3},
|
||||
{Offset: 1, Length: 1},
|
||||
},
|
||||
PositiveBuckets: []float64{1, 4, 2, 2},
|
||||
NegativeSpans: []Span{
|
||||
{Offset: 0, Length: 3},
|
||||
{Offset: 1, Length: 1},
|
||||
},
|
||||
NegativeBuckets: []float64{1, 4, 2, 2},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range tcs {
|
||||
target := tc.origin.ReduceResolution(tc.target.Schema)
|
||||
require.Equal(t, tc.target, target)
|
||||
}
|
||||
}
|
||||
|
@ -503,5 +503,6 @@ func (h *Histogram) ReduceResolution(targetSchema int32) *Histogram {
|
||||
h.NegativeSpans, h.NegativeBuckets = reduceResolution(
|
||||
h.NegativeSpans, h.NegativeBuckets, h.Schema, targetSchema, true,
|
||||
)
|
||||
h.Schema = targetSchema
|
||||
return h
|
||||
}
|
||||
|
@ -967,3 +967,46 @@ func BenchmarkHistogramValidation(b *testing.B) {
|
||||
require.NoError(b, h.Validate())
|
||||
}
|
||||
}
|
||||
|
||||
func TestHistogramReduceResolution(t *testing.T) {
|
||||
tcs := map[string]struct {
|
||||
origin *Histogram
|
||||
target *Histogram
|
||||
}{
|
||||
"valid histogram": {
|
||||
origin: &Histogram{
|
||||
Schema: 0,
|
||||
PositiveSpans: []Span{
|
||||
{Offset: 0, Length: 4},
|
||||
{Offset: 0, Length: 0},
|
||||
{Offset: 3, Length: 2},
|
||||
},
|
||||
PositiveBuckets: []int64{1, 2, -2, 1, -1, 0},
|
||||
NegativeSpans: []Span{
|
||||
{Offset: 0, Length: 4},
|
||||
{Offset: 0, Length: 0},
|
||||
{Offset: 3, Length: 2},
|
||||
},
|
||||
NegativeBuckets: []int64{1, 2, -2, 1, -1, 0},
|
||||
},
|
||||
target: &Histogram{
|
||||
Schema: -1,
|
||||
PositiveSpans: []Span{
|
||||
{Offset: 0, Length: 3},
|
||||
{Offset: 1, Length: 1},
|
||||
},
|
||||
PositiveBuckets: []int64{1, 3, -2, 0},
|
||||
NegativeSpans: []Span{
|
||||
{Offset: 0, Length: 3},
|
||||
{Offset: 1, Length: 1},
|
||||
},
|
||||
NegativeBuckets: []int64{1, 3, -2, 0},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range tcs {
|
||||
target := tc.origin.ReduceResolution(tc.target.Schema)
|
||||
require.Equal(t, tc.target, target)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user