|
|
|
|
@ -479,6 +479,206 @@ func TestFloatHistogramDetectReset(t *testing.T) { |
|
|
|
|
}, |
|
|
|
|
true, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"zero threshold decreases", |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 5.5, |
|
|
|
|
Count: 3493.3, |
|
|
|
|
Sum: 2349209.324, |
|
|
|
|
PositiveSpans: []Span{{-2, 2}, {1, 3}}, |
|
|
|
|
PositiveBuckets: []float64{1, 1.23, 3.3, 4.2, 0.1}, |
|
|
|
|
NegativeSpans: []Span{{3, 2}, {3, 2}}, |
|
|
|
|
NegativeBuckets: []float64{3.1, 3, 1.234e5, 1000}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.009, |
|
|
|
|
ZeroCount: 5.5, |
|
|
|
|
Count: 3493.3, |
|
|
|
|
Sum: 2349209.324, |
|
|
|
|
PositiveSpans: []Span{{-2, 2}, {1, 3}}, |
|
|
|
|
PositiveBuckets: []float64{1, 1.23, 3.3, 4.2, 0.1}, |
|
|
|
|
NegativeSpans: []Span{{3, 2}, {3, 2}}, |
|
|
|
|
NegativeBuckets: []float64{3.1, 3, 1.234e5, 1000}, |
|
|
|
|
}, |
|
|
|
|
true, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"zero threshold increases without touching any existing buckets", |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 5.5, |
|
|
|
|
Count: 3493.3, |
|
|
|
|
Sum: 2349209.324, |
|
|
|
|
PositiveSpans: []Span{{-2, 2}, {1, 3}}, |
|
|
|
|
PositiveBuckets: []float64{1, 1.23, 3.3, 4.2, 0.1}, |
|
|
|
|
NegativeSpans: []Span{{3, 2}, {3, 2}}, |
|
|
|
|
NegativeBuckets: []float64{3.1, 3, 1.234e5, 1000}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.011, |
|
|
|
|
ZeroCount: 5.5, |
|
|
|
|
Count: 3493.3, |
|
|
|
|
Sum: 2349209.324, |
|
|
|
|
PositiveSpans: []Span{{-2, 2}, {1, 3}}, |
|
|
|
|
PositiveBuckets: []float64{1, 1.23, 3.3, 4.2, 0.1}, |
|
|
|
|
NegativeSpans: []Span{{3, 2}, {3, 2}}, |
|
|
|
|
NegativeBuckets: []float64{3.1, 3, 1.234e5, 1000}, |
|
|
|
|
}, |
|
|
|
|
false, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"zero threshold increases enough to cover existing buckets", |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 5.5, |
|
|
|
|
Count: 3493.3, |
|
|
|
|
Sum: 2349209.324, |
|
|
|
|
PositiveSpans: []Span{{-2, 2}, {1, 3}}, |
|
|
|
|
PositiveBuckets: []float64{1, 1.23, 3.3, 4.2, 0.1}, |
|
|
|
|
NegativeSpans: []Span{{3, 2}, {3, 2}}, |
|
|
|
|
NegativeBuckets: []float64{3.1, 3, 1.234e5, 1000}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 1, |
|
|
|
|
ZeroCount: 7.73, |
|
|
|
|
Count: 3493.3, |
|
|
|
|
Sum: 2349209.324, |
|
|
|
|
PositiveSpans: []Span{{1, 3}}, |
|
|
|
|
PositiveBuckets: []float64{3.3, 4.2, 0.1}, |
|
|
|
|
NegativeSpans: []Span{{3, 2}, {3, 2}}, |
|
|
|
|
NegativeBuckets: []float64{3.1, 3, 1.234e5, 1000}, |
|
|
|
|
}, |
|
|
|
|
false, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"zero threshold increases into the middle of an existing buckets", |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 5.5, |
|
|
|
|
Count: 3493.3, |
|
|
|
|
Sum: 2349209.324, |
|
|
|
|
PositiveSpans: []Span{{-2, 2}, {1, 3}}, |
|
|
|
|
PositiveBuckets: []float64{1, 1.23, 3.3, 4.2, 0.1}, |
|
|
|
|
NegativeSpans: []Span{{3, 2}, {3, 2}}, |
|
|
|
|
NegativeBuckets: []float64{3.1, 3, 1.234e5, 1000}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.3, |
|
|
|
|
ZeroCount: 5.5, |
|
|
|
|
Count: 3493.3, |
|
|
|
|
Sum: 2349209.324, |
|
|
|
|
PositiveSpans: []Span{{-2, 2}, {1, 3}}, |
|
|
|
|
PositiveBuckets: []float64{1, 1.23, 3.3, 4.2, 0.1}, |
|
|
|
|
NegativeSpans: []Span{{3, 2}, {3, 2}}, |
|
|
|
|
NegativeBuckets: []float64{3.1, 3, 1.234e5, 1000}, |
|
|
|
|
}, |
|
|
|
|
true, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"schema increases without any other changes", |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 5.5, |
|
|
|
|
Count: 3493.3, |
|
|
|
|
Sum: 2349209.324, |
|
|
|
|
Schema: 0, |
|
|
|
|
PositiveSpans: []Span{{-2, 2}, {1, 3}}, |
|
|
|
|
PositiveBuckets: []float64{1, 1.23, 3.3, 4.2, 0.1}, |
|
|
|
|
NegativeSpans: []Span{{3, 2}, {3, 2}}, |
|
|
|
|
NegativeBuckets: []float64{3.1, 3, 1.234e5, 1000}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 5.5, |
|
|
|
|
Count: 3493.3, |
|
|
|
|
Sum: 2349209.324, |
|
|
|
|
Schema: 1, |
|
|
|
|
PositiveSpans: []Span{{-5, 4}, {2, 6}}, |
|
|
|
|
PositiveBuckets: []float64{0.4, 0.6, 1, 0.23, 2, 1.3, 1.2, 3, 0.05, 0.05}, |
|
|
|
|
NegativeSpans: []Span{{5, 4}, {6, 4}}, |
|
|
|
|
NegativeBuckets: []float64{2, 1.1, 2, 1, 0.234e5, 1e5, 500, 500}, |
|
|
|
|
}, |
|
|
|
|
true, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"schema decreases without any other changes", |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 5.5, |
|
|
|
|
Count: 3493.3, |
|
|
|
|
Sum: 2349209.324, |
|
|
|
|
Schema: 1, |
|
|
|
|
PositiveSpans: []Span{{-5, 4}, {2, 6}}, |
|
|
|
|
PositiveBuckets: []float64{0.4, 0.6, 1, 0.23, 2, 1.3, 1.2, 3, 0.05, 0.05}, |
|
|
|
|
NegativeSpans: []Span{{5, 4}, {6, 4}}, |
|
|
|
|
NegativeBuckets: []float64{2, 1.1, 2, 1, 0.234e5, 1e5, 500, 500}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 5.5, |
|
|
|
|
Count: 3493.3, |
|
|
|
|
Sum: 2349209.324, |
|
|
|
|
Schema: 0, |
|
|
|
|
PositiveSpans: []Span{{-2, 2}, {1, 3}}, |
|
|
|
|
PositiveBuckets: []float64{1, 1.23, 3.3, 4.2, 0.1}, |
|
|
|
|
NegativeSpans: []Span{{3, 2}, {3, 2}}, |
|
|
|
|
NegativeBuckets: []float64{3.1, 3, 1.234e5, 1000}, |
|
|
|
|
}, |
|
|
|
|
false, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"schema decreases and a bucket goes up", |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 5.5, |
|
|
|
|
Count: 3493.3, |
|
|
|
|
Sum: 2349209.324, |
|
|
|
|
Schema: 1, |
|
|
|
|
PositiveSpans: []Span{{-5, 4}, {2, 6}}, |
|
|
|
|
PositiveBuckets: []float64{0.4, 0.6, 1, 0.23, 2, 1.3, 1.2, 3, 0.05, 0.05}, |
|
|
|
|
NegativeSpans: []Span{{5, 4}, {6, 4}}, |
|
|
|
|
NegativeBuckets: []float64{2, 1.1, 2, 1, 0.234e5, 1e5, 500, 500}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 5.5, |
|
|
|
|
Count: 3493.3, |
|
|
|
|
Sum: 2349209.324, |
|
|
|
|
Schema: 0, |
|
|
|
|
PositiveSpans: []Span{{-2, 2}, {1, 3}}, |
|
|
|
|
PositiveBuckets: []float64{1, 1.23, 4.3, 4.2, 0.1}, |
|
|
|
|
NegativeSpans: []Span{{3, 2}, {3, 2}}, |
|
|
|
|
NegativeBuckets: []float64{3.1, 3, 1.234e5, 1000}, |
|
|
|
|
}, |
|
|
|
|
false, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"schema decreases and a bucket goes down", |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 5.5, |
|
|
|
|
Count: 3493.3, |
|
|
|
|
Sum: 2349209.324, |
|
|
|
|
Schema: 1, |
|
|
|
|
PositiveSpans: []Span{{-5, 4}, {2, 6}}, |
|
|
|
|
PositiveBuckets: []float64{0.4, 0.6, 1, 0.23, 2, 1.3, 1.2, 3, 0.05, 0.05}, |
|
|
|
|
NegativeSpans: []Span{{5, 4}, {6, 4}}, |
|
|
|
|
NegativeBuckets: []float64{2, 1.1, 2, 1, 0.234e5, 1e5, 500, 500}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 5.5, |
|
|
|
|
Count: 3493.3, |
|
|
|
|
Sum: 2349209.324, |
|
|
|
|
Schema: 0, |
|
|
|
|
PositiveSpans: []Span{{-2, 2}, {1, 3}}, |
|
|
|
|
PositiveBuckets: []float64{1, 1.23, 2.3, 4.2, 0.1}, |
|
|
|
|
NegativeSpans: []Span{{3, 2}, {3, 2}}, |
|
|
|
|
NegativeBuckets: []float64{3.1, 3, 1.234e5, 1000}, |
|
|
|
|
}, |
|
|
|
|
true, |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for _, c := range cases { |
|
|
|
|
@ -774,7 +974,7 @@ func TestFloatHistogramAdd(t *testing.T) { |
|
|
|
|
{ |
|
|
|
|
"non-overlapping spans", |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroThreshold: 0.001, |
|
|
|
|
ZeroCount: 11, |
|
|
|
|
Count: 30, |
|
|
|
|
Sum: 2.345, |
|
|
|
|
@ -784,7 +984,7 @@ func TestFloatHistogramAdd(t *testing.T) { |
|
|
|
|
NegativeBuckets: []float64{3, 1, 5, 6}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroThreshold: 0.001, |
|
|
|
|
ZeroCount: 8, |
|
|
|
|
Count: 21, |
|
|
|
|
Sum: 1.234, |
|
|
|
|
@ -794,7 +994,7 @@ func TestFloatHistogramAdd(t *testing.T) { |
|
|
|
|
NegativeBuckets: []float64{1, 1, 4, 4}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroThreshold: 0.001, |
|
|
|
|
ZeroCount: 19, |
|
|
|
|
Count: 51, |
|
|
|
|
Sum: 3.579, |
|
|
|
|
@ -903,6 +1103,243 @@ func TestFloatHistogramAdd(t *testing.T) { |
|
|
|
|
NegativeBuckets: []float64{3, 2, 1, 4, 9, 6}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"schema change", |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 8, |
|
|
|
|
Count: 21, |
|
|
|
|
Sum: 1.234, |
|
|
|
|
Schema: 0, |
|
|
|
|
PositiveSpans: []Span{{-1, 4}, {0, 3}}, |
|
|
|
|
PositiveBuckets: []float64{5, 4, 2, 3, 6, 2, 5}, |
|
|
|
|
NegativeSpans: []Span{{4, 2}, {1, 2}}, |
|
|
|
|
NegativeBuckets: []float64{1, 1, 4, 4}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 11, |
|
|
|
|
Count: 30, |
|
|
|
|
Sum: 2.345, |
|
|
|
|
Schema: 1, |
|
|
|
|
PositiveSpans: []Span{{-4, 3}, {5, 5}}, |
|
|
|
|
PositiveBuckets: []float64{1, 0, 0, 3, 2, 2, 3, 4}, |
|
|
|
|
NegativeSpans: []Span{{6, 3}, {6, 4}}, |
|
|
|
|
NegativeBuckets: []float64{3, 0.5, 0.5, 2, 3, 2, 4}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 19, |
|
|
|
|
Count: 51, |
|
|
|
|
Sum: 3.579, |
|
|
|
|
PositiveSpans: []Span{{-2, 5}, {0, 3}}, |
|
|
|
|
PositiveBuckets: []float64{1, 5, 4, 2, 6, 10, 9, 5}, |
|
|
|
|
NegativeSpans: []Span{{3, 3}, {1, 3}}, |
|
|
|
|
NegativeBuckets: []float64{3, 2, 1, 4, 9, 6}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"larger zero bucket in first histogram", |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 1, |
|
|
|
|
ZeroCount: 17, |
|
|
|
|
Count: 21, |
|
|
|
|
Sum: 1.234, |
|
|
|
|
PositiveSpans: []Span{{1, 2}, {0, 3}}, |
|
|
|
|
PositiveBuckets: []float64{2, 3, 6, 2, 5}, |
|
|
|
|
NegativeSpans: []Span{{4, 2}, {1, 2}}, |
|
|
|
|
NegativeBuckets: []float64{1, 1, 4, 4}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 11, |
|
|
|
|
Count: 30, |
|
|
|
|
Sum: 2.345, |
|
|
|
|
PositiveSpans: []Span{{-2, 2}, {2, 3}}, |
|
|
|
|
PositiveBuckets: []float64{1, 0, 3, 4, 7}, |
|
|
|
|
NegativeSpans: []Span{{3, 2}, {3, 2}}, |
|
|
|
|
NegativeBuckets: []float64{3, 1, 5, 6}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 1, |
|
|
|
|
ZeroCount: 29, |
|
|
|
|
Count: 51, |
|
|
|
|
Sum: 3.579, |
|
|
|
|
PositiveSpans: []Span{{1, 2}, {0, 3}}, |
|
|
|
|
PositiveBuckets: []float64{2, 6, 10, 9, 5}, |
|
|
|
|
NegativeSpans: []Span{{3, 3}, {1, 3}}, |
|
|
|
|
NegativeBuckets: []float64{3, 2, 1, 4, 9, 6}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"larger zero bucket in second histogram", |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 11, |
|
|
|
|
Count: 30, |
|
|
|
|
Sum: 2.345, |
|
|
|
|
PositiveSpans: []Span{{-2, 2}, {2, 3}}, |
|
|
|
|
PositiveBuckets: []float64{1, 0, 3, 4, 7}, |
|
|
|
|
NegativeSpans: []Span{{3, 2}, {3, 2}}, |
|
|
|
|
NegativeBuckets: []float64{3, 1, 5, 6}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 1, |
|
|
|
|
ZeroCount: 17, |
|
|
|
|
Count: 21, |
|
|
|
|
Sum: 1.234, |
|
|
|
|
PositiveSpans: []Span{{1, 2}, {0, 3}}, |
|
|
|
|
PositiveBuckets: []float64{2, 3, 6, 2, 5}, |
|
|
|
|
NegativeSpans: []Span{{4, 2}, {1, 2}}, |
|
|
|
|
NegativeBuckets: []float64{1, 1, 4, 4}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 1, |
|
|
|
|
ZeroCount: 29, |
|
|
|
|
Count: 51, |
|
|
|
|
Sum: 3.579, |
|
|
|
|
PositiveSpans: []Span{{1, 5}}, |
|
|
|
|
PositiveBuckets: []float64{2, 6, 10, 9, 5}, |
|
|
|
|
NegativeSpans: []Span{{3, 7}}, |
|
|
|
|
NegativeBuckets: []float64{3, 2, 1, 0, 4, 9, 6}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"larger zero threshold in first histogram ends up inside a populated bucket of second histogram", |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.2, |
|
|
|
|
ZeroCount: 17, |
|
|
|
|
Count: 21, |
|
|
|
|
Sum: 1.234, |
|
|
|
|
PositiveSpans: []Span{{1, 2}, {0, 3}}, |
|
|
|
|
PositiveBuckets: []float64{2, 3, 6, 2, 5}, |
|
|
|
|
NegativeSpans: []Span{{4, 2}, {1, 2}}, |
|
|
|
|
NegativeBuckets: []float64{1, 1, 4, 4}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 11, |
|
|
|
|
Count: 30, |
|
|
|
|
Sum: 2.345, |
|
|
|
|
PositiveSpans: []Span{{-2, 2}, {2, 3}}, |
|
|
|
|
PositiveBuckets: []float64{1, 0, 3, 4, 7}, |
|
|
|
|
NegativeSpans: []Span{{3, 2}, {3, 2}}, |
|
|
|
|
NegativeBuckets: []float64{3, 1, 5, 6}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.25, |
|
|
|
|
ZeroCount: 29, |
|
|
|
|
Count: 51, |
|
|
|
|
Sum: 3.579, |
|
|
|
|
PositiveSpans: []Span{{-1, 1}, {1, 5}}, |
|
|
|
|
PositiveBuckets: []float64{0, 2, 6, 10, 9, 5}, |
|
|
|
|
NegativeSpans: []Span{{3, 7}}, |
|
|
|
|
NegativeBuckets: []float64{3, 2, 1, 0, 4, 9, 6}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"larger zero threshold in second histogram ends up inside a populated bucket of first histogram", |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 11, |
|
|
|
|
Count: 30, |
|
|
|
|
Sum: 2.345, |
|
|
|
|
PositiveSpans: []Span{{-2, 2}, {2, 3}}, |
|
|
|
|
PositiveBuckets: []float64{1, 0, 3, 4, 7}, |
|
|
|
|
NegativeSpans: []Span{{3, 2}, {3, 2}}, |
|
|
|
|
NegativeBuckets: []float64{3, 1, 5, 6}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.2, |
|
|
|
|
ZeroCount: 17, |
|
|
|
|
Count: 21, |
|
|
|
|
Sum: 1.234, |
|
|
|
|
PositiveSpans: []Span{{1, 2}, {0, 3}}, |
|
|
|
|
PositiveBuckets: []float64{2, 3, 6, 2, 5}, |
|
|
|
|
NegativeSpans: []Span{{4, 2}, {1, 2}}, |
|
|
|
|
NegativeBuckets: []float64{1, 1, 4, 4}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.25, |
|
|
|
|
ZeroCount: 29, |
|
|
|
|
Count: 51, |
|
|
|
|
Sum: 3.579, |
|
|
|
|
PositiveSpans: []Span{{1, 5}}, |
|
|
|
|
PositiveBuckets: []float64{2, 6, 10, 9, 5}, |
|
|
|
|
NegativeSpans: []Span{{3, 7}}, |
|
|
|
|
NegativeBuckets: []float64{3, 2, 1, 0, 4, 9, 6}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"schema change combined with larger zero bucket in second histogram", |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 8, |
|
|
|
|
Count: 21, |
|
|
|
|
Sum: 1.234, |
|
|
|
|
Schema: 0, |
|
|
|
|
PositiveSpans: []Span{{-2, 5}, {0, 3}}, |
|
|
|
|
PositiveBuckets: []float64{2, 5, 4, 2, 3, 6, 2, 5}, |
|
|
|
|
NegativeSpans: []Span{{4, 2}, {1, 2}}, |
|
|
|
|
NegativeBuckets: []float64{1, 1, 4, 4}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.25, |
|
|
|
|
ZeroCount: 12, |
|
|
|
|
Count: 30, |
|
|
|
|
Sum: 2.345, |
|
|
|
|
Schema: 1, |
|
|
|
|
PositiveSpans: []Span{{-3, 2}, {5, 5}}, |
|
|
|
|
PositiveBuckets: []float64{1, 0, 3, 2, 2, 3, 4}, |
|
|
|
|
NegativeSpans: []Span{{6, 3}, {6, 4}}, |
|
|
|
|
NegativeBuckets: []float64{3, 0.5, 0.5, 2, 3, 2, 4}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.25, |
|
|
|
|
ZeroCount: 22, |
|
|
|
|
Count: 51, |
|
|
|
|
Sum: 3.579, |
|
|
|
|
PositiveSpans: []Span{{-1, 7}}, |
|
|
|
|
PositiveBuckets: []float64{6, 4, 2, 6, 10, 9, 5}, |
|
|
|
|
NegativeSpans: []Span{{3, 7}}, |
|
|
|
|
NegativeBuckets: []float64{3, 2, 1, 0, 4, 9, 6}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"schema change combined with larger zero bucket in first histogram", |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.25, |
|
|
|
|
ZeroCount: 8, |
|
|
|
|
Count: 21, |
|
|
|
|
Sum: 1.234, |
|
|
|
|
Schema: 0, |
|
|
|
|
PositiveSpans: []Span{{-1, 4}, {0, 3}}, |
|
|
|
|
PositiveBuckets: []float64{5, 4, 2, 3, 6, 2, 5}, |
|
|
|
|
NegativeSpans: []Span{{4, 2}, {1, 2}}, |
|
|
|
|
NegativeBuckets: []float64{1, 1, 4, 4}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 11, |
|
|
|
|
Count: 30, |
|
|
|
|
Sum: 2.345, |
|
|
|
|
Schema: 1, |
|
|
|
|
PositiveSpans: []Span{{-4, 3}, {5, 5}}, |
|
|
|
|
PositiveBuckets: []float64{1, 0, 0, 3, 2, 2, 3, 4}, |
|
|
|
|
NegativeSpans: []Span{{6, 3}, {6, 4}}, |
|
|
|
|
NegativeBuckets: []float64{3, 0.5, 0.5, 2, 3, 2, 4}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.25, |
|
|
|
|
ZeroCount: 20, |
|
|
|
|
Count: 51, |
|
|
|
|
Sum: 3.579, |
|
|
|
|
PositiveSpans: []Span{{-1, 4}, {0, 3}}, |
|
|
|
|
PositiveBuckets: []float64{5, 4, 2, 6, 10, 9, 5}, |
|
|
|
|
NegativeSpans: []Span{{3, 3}, {1, 3}}, |
|
|
|
|
NegativeBuckets: []float64{3, 2, 1, 4, 9, 6}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for _, c := range cases { |
|
|
|
|
@ -954,6 +1391,41 @@ func TestFloatHistogramSub(t *testing.T) { |
|
|
|
|
NegativeBuckets: []float64{2, 0, 1, 2}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"schema change", |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 8, |
|
|
|
|
Count: 59, |
|
|
|
|
Sum: 1.234, |
|
|
|
|
Schema: 0, |
|
|
|
|
PositiveSpans: []Span{{-2, 5}, {0, 3}}, |
|
|
|
|
PositiveBuckets: []float64{2, 5, 4, 2, 3, 6, 7, 5}, |
|
|
|
|
NegativeSpans: []Span{{3, 3}, {1, 3}}, |
|
|
|
|
NegativeBuckets: []float64{4, 10, 1, 4, 14, 7}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 2, |
|
|
|
|
Count: 19, |
|
|
|
|
Sum: 0.345, |
|
|
|
|
Schema: 1, |
|
|
|
|
PositiveSpans: []Span{{-4, 3}, {5, 5}}, |
|
|
|
|
PositiveBuckets: []float64{1, 0, 0, 1, 2, 2, 3, 4}, |
|
|
|
|
NegativeSpans: []Span{{6, 3}, {6, 4}}, |
|
|
|
|
NegativeBuckets: []float64{3, 0.5, 0.5, 2, 3, 2, 4}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 6, |
|
|
|
|
Count: 40, |
|
|
|
|
Sum: 0.889, |
|
|
|
|
PositiveSpans: []Span{{-2, 5}, {0, 3}}, |
|
|
|
|
PositiveBuckets: []float64{1, 5, 4, 2, 2, 2, 0, 5}, |
|
|
|
|
NegativeSpans: []Span{{3, 3}, {1, 3}}, |
|
|
|
|
NegativeBuckets: []float64{1, 9, 1, 4, 9, 1}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for _, c := range cases { |
|
|
|
|
@ -965,6 +1437,73 @@ func TestFloatHistogramSub(t *testing.T) { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func TestFloatHistogramCopyToSchema(t *testing.T) { |
|
|
|
|
cases := []struct { |
|
|
|
|
name string |
|
|
|
|
targetSchema int32 |
|
|
|
|
in, expected *FloatHistogram |
|
|
|
|
}{ |
|
|
|
|
{ |
|
|
|
|
"no schema change", |
|
|
|
|
1, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 11, |
|
|
|
|
Count: 30, |
|
|
|
|
Sum: 2.345, |
|
|
|
|
Schema: 1, |
|
|
|
|
PositiveSpans: []Span{{-4, 3}, {5, 5}}, |
|
|
|
|
PositiveBuckets: []float64{1, 0, 0, 3, 2, 2, 3, 4}, |
|
|
|
|
NegativeSpans: []Span{{6, 3}, {6, 4}}, |
|
|
|
|
NegativeBuckets: []float64{3, 0.5, 0.5, 2, 3, 2, 4}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 11, |
|
|
|
|
Count: 30, |
|
|
|
|
Sum: 2.345, |
|
|
|
|
Schema: 1, |
|
|
|
|
PositiveSpans: []Span{{-4, 3}, {5, 5}}, |
|
|
|
|
PositiveBuckets: []float64{1, 0, 0, 3, 2, 2, 3, 4}, |
|
|
|
|
NegativeSpans: []Span{{6, 3}, {6, 4}}, |
|
|
|
|
NegativeBuckets: []float64{3, 0.5, 0.5, 2, 3, 2, 4}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
"schema change", |
|
|
|
|
0, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 11, |
|
|
|
|
Count: 30, |
|
|
|
|
Sum: 2.345, |
|
|
|
|
Schema: 1, |
|
|
|
|
PositiveSpans: []Span{{-4, 3}, {5, 5}}, |
|
|
|
|
PositiveBuckets: []float64{1, 0, 0, 3, 2, 2, 3, 4}, |
|
|
|
|
NegativeSpans: []Span{{6, 3}, {6, 4}}, |
|
|
|
|
NegativeBuckets: []float64{3, 0.5, 0.5, 2, 3, 2, 4}, |
|
|
|
|
}, |
|
|
|
|
&FloatHistogram{ |
|
|
|
|
ZeroThreshold: 0.01, |
|
|
|
|
ZeroCount: 11, |
|
|
|
|
Count: 30, |
|
|
|
|
Sum: 2.345, |
|
|
|
|
Schema: 0, |
|
|
|
|
PositiveSpans: []Span{{-2, 2}, {2, 3}}, |
|
|
|
|
PositiveBuckets: []float64{1, 0, 3, 4, 7}, |
|
|
|
|
NegativeSpans: []Span{{3, 2}, {3, 2}}, |
|
|
|
|
NegativeBuckets: []float64{3, 1, 5, 6}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for _, c := range cases { |
|
|
|
|
t.Run(c.name, func(t *testing.T) { |
|
|
|
|
require.Equal(t, c.expected, c.in.CopyToSchema(c.targetSchema)) |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func TestReverseFloatBucketIterator(t *testing.T) { |
|
|
|
|
h := &FloatHistogram{ |
|
|
|
|
Count: 405, |
|
|
|
|
|