mirror of
https://github.com/prometheus/prometheus.git
synced 2025-02-21 03:16:00 -08: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 {
|
func (h *FloatHistogram) ReduceResolution(targetSchema int32) *FloatHistogram {
|
||||||
h.PositiveSpans, h.PositiveBuckets = reduceResolution(h.PositiveSpans, h.PositiveBuckets, h.Schema, targetSchema, false)
|
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.NegativeSpans, h.NegativeBuckets = reduceResolution(h.NegativeSpans, h.NegativeBuckets, h.Schema, targetSchema, false)
|
||||||
|
h.Schema = targetSchema
|
||||||
return h
|
return h
|
||||||
}
|
}
|
||||||
|
|
|
@ -2442,3 +2442,46 @@ func createRandomSpans(rng *rand.Rand, spanNum int32) ([]Span, []float64) {
|
||||||
}
|
}
|
||||||
return Spans, Buckets
|
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 = reduceResolution(
|
||||||
h.NegativeSpans, h.NegativeBuckets, h.Schema, targetSchema, true,
|
h.NegativeSpans, h.NegativeBuckets, h.Schema, targetSchema, true,
|
||||||
)
|
)
|
||||||
|
h.Schema = targetSchema
|
||||||
return h
|
return h
|
||||||
}
|
}
|
||||||
|
|
|
@ -967,3 +967,46 @@ func BenchmarkHistogramValidation(b *testing.B) {
|
||||||
require.NoError(b, h.Validate())
|
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 a new issue