mirror of
https://github.com/prometheus/prometheus.git
synced 2024-12-24 21:24:05 -08:00
Merge pull request #11782 from codesome/floatappendabletest
tsdb: Improve TestFloatHistogramChunkAppendable and TestHistogramChunkAppendable
This commit is contained in:
commit
c49a28bb97
|
@ -232,7 +232,7 @@ func TestFloatHistogramChunkAppendable(t *testing.T) {
|
||||||
require.Equal(t, 0, c.NumSamples())
|
require.Equal(t, 0, c.NumSamples())
|
||||||
|
|
||||||
ts := int64(1234567890)
|
ts := int64(1234567890)
|
||||||
h1 := &histogram.Histogram{
|
h1 := &histogram.FloatHistogram{
|
||||||
Count: 5,
|
Count: 5,
|
||||||
ZeroCount: 2,
|
ZeroCount: 2,
|
||||||
Sum: 18.4,
|
Sum: 18.4,
|
||||||
|
@ -245,14 +245,29 @@ func TestFloatHistogramChunkAppendable(t *testing.T) {
|
||||||
{Offset: 3, Length: 1},
|
{Offset: 3, Length: 1},
|
||||||
{Offset: 1, Length: 1},
|
{Offset: 1, Length: 1},
|
||||||
},
|
},
|
||||||
PositiveBuckets: []int64{6, -3, 0, -1, 2, 1, -4}, // counts: 6, 3, 3, 2, 4, 5, 1 (total 24)
|
PositiveBuckets: []float64{6, 3, 3, 2, 4, 5, 1},
|
||||||
}
|
}
|
||||||
|
|
||||||
app.AppendFloatHistogram(ts, h1.ToFloat())
|
app.AppendFloatHistogram(ts, h1.Copy())
|
||||||
require.Equal(t, 1, c.NumSamples())
|
require.Equal(t, 1, c.NumSamples())
|
||||||
|
hApp, _ := app.(*FloatHistogramAppender)
|
||||||
|
|
||||||
|
{ // Schema change.
|
||||||
|
h2 := h1.Copy()
|
||||||
|
h2.Schema++
|
||||||
|
_, _, ok, _ := hApp.Appendable(h2)
|
||||||
|
require.False(t, ok)
|
||||||
|
}
|
||||||
|
|
||||||
|
{ // Zero threshold change.
|
||||||
|
h2 := h1.Copy()
|
||||||
|
h2.ZeroThreshold += 0.1
|
||||||
|
_, _, ok, _ := hApp.Appendable(h2)
|
||||||
|
require.False(t, ok)
|
||||||
|
}
|
||||||
|
|
||||||
{ // New histogram that has more buckets.
|
{ // New histogram that has more buckets.
|
||||||
h2 := h1
|
h2 := h1.Copy()
|
||||||
h2.PositiveSpans = []histogram.Span{
|
h2.PositiveSpans = []histogram.Span{
|
||||||
{Offset: 0, Length: 3},
|
{Offset: 0, Length: 3},
|
||||||
{Offset: 1, Length: 1},
|
{Offset: 1, Length: 1},
|
||||||
|
@ -262,13 +277,9 @@ func TestFloatHistogramChunkAppendable(t *testing.T) {
|
||||||
h2.Count += 9
|
h2.Count += 9
|
||||||
h2.ZeroCount++
|
h2.ZeroCount++
|
||||||
h2.Sum = 30
|
h2.Sum = 30
|
||||||
// Existing histogram should get values converted from the above to:
|
h2.PositiveBuckets = []float64{7, 5, 1, 3, 1, 0, 2, 5, 5, 0, 1}
|
||||||
// 6 3 0 3 0 0 2 4 5 0 1 (previous values with some new empty buckets in between)
|
|
||||||
// so the new histogram should have new counts >= these per-bucket counts, e.g.:
|
|
||||||
h2.PositiveBuckets = []int64{7, -2, -4, 2, -2, -1, 2, 3, 0, -5, 1} // 7 5 1 3 1 0 2 5 5 0 1 (total 30)
|
|
||||||
|
|
||||||
hApp, _ := app.(*FloatHistogramAppender)
|
posInterjections, negInterjections, ok, cr := hApp.Appendable(h2)
|
||||||
posInterjections, negInterjections, ok, cr := hApp.Appendable(h2.ToFloat())
|
|
||||||
require.Greater(t, len(posInterjections), 0)
|
require.Greater(t, len(posInterjections), 0)
|
||||||
require.Equal(t, 0, len(negInterjections))
|
require.Equal(t, 0, len(negInterjections))
|
||||||
require.True(t, ok) // Only new buckets came in.
|
require.True(t, ok) // Only new buckets came in.
|
||||||
|
@ -276,7 +287,7 @@ func TestFloatHistogramChunkAppendable(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
{ // New histogram that has a bucket missing.
|
{ // New histogram that has a bucket missing.
|
||||||
h2 := h1
|
h2 := h1.Copy()
|
||||||
h2.PositiveSpans = []histogram.Span{
|
h2.PositiveSpans = []histogram.Span{
|
||||||
{Offset: 0, Length: 2},
|
{Offset: 0, Length: 2},
|
||||||
{Offset: 5, Length: 2},
|
{Offset: 5, Length: 2},
|
||||||
|
@ -284,10 +295,9 @@ func TestFloatHistogramChunkAppendable(t *testing.T) {
|
||||||
{Offset: 1, Length: 1},
|
{Offset: 1, Length: 1},
|
||||||
}
|
}
|
||||||
h2.Sum = 21
|
h2.Sum = 21
|
||||||
h2.PositiveBuckets = []int64{6, -3, -1, 2, 1, -4} // counts: 6, 3, 2, 4, 5, 1 (total 21)
|
h2.PositiveBuckets = []float64{6, 3, 2, 4, 5, 1}
|
||||||
|
|
||||||
hApp, _ := app.(*FloatHistogramAppender)
|
posInterjections, negInterjections, ok, cr := hApp.Appendable(h2)
|
||||||
posInterjections, negInterjections, ok, cr := hApp.Appendable(h2.ToFloat())
|
|
||||||
require.Equal(t, 0, len(posInterjections))
|
require.Equal(t, 0, len(posInterjections))
|
||||||
require.Equal(t, 0, len(negInterjections))
|
require.Equal(t, 0, len(negInterjections))
|
||||||
require.False(t, ok) // Need to cut a new chunk.
|
require.False(t, ok) // Need to cut a new chunk.
|
||||||
|
@ -295,12 +305,11 @@ func TestFloatHistogramChunkAppendable(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
{ // New histogram that has a counter reset while buckets are same.
|
{ // New histogram that has a counter reset while buckets are same.
|
||||||
h2 := h1
|
h2 := h1.Copy()
|
||||||
h2.Sum = 23
|
h2.Sum = 23
|
||||||
h2.PositiveBuckets = []int64{6, -4, 1, -1, 2, 1, -4} // counts: 6, 2, 3, 2, 4, 5, 1 (total 23)
|
h2.PositiveBuckets = []float64{6, 2, 3, 2, 4, 5, 1}
|
||||||
|
|
||||||
hApp, _ := app.(*FloatHistogramAppender)
|
posInterjections, negInterjections, ok, cr := hApp.Appendable(h2)
|
||||||
posInterjections, negInterjections, ok, cr := hApp.Appendable(h2.ToFloat())
|
|
||||||
require.Equal(t, 0, len(posInterjections))
|
require.Equal(t, 0, len(posInterjections))
|
||||||
require.Equal(t, 0, len(negInterjections))
|
require.Equal(t, 0, len(negInterjections))
|
||||||
require.False(t, ok) // Need to cut a new chunk.
|
require.False(t, ok) // Need to cut a new chunk.
|
||||||
|
@ -308,7 +317,7 @@ func TestFloatHistogramChunkAppendable(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
{ // New histogram that has a counter reset while new buckets were added.
|
{ // New histogram that has a counter reset while new buckets were added.
|
||||||
h2 := h1
|
h2 := h1.Copy()
|
||||||
h2.PositiveSpans = []histogram.Span{
|
h2.PositiveSpans = []histogram.Span{
|
||||||
{Offset: 0, Length: 3},
|
{Offset: 0, Length: 3},
|
||||||
{Offset: 1, Length: 1},
|
{Offset: 1, Length: 1},
|
||||||
|
@ -316,13 +325,9 @@ func TestFloatHistogramChunkAppendable(t *testing.T) {
|
||||||
{Offset: 3, Length: 3},
|
{Offset: 3, Length: 3},
|
||||||
}
|
}
|
||||||
h2.Sum = 29
|
h2.Sum = 29
|
||||||
// Existing histogram should get values converted from the above to:
|
h2.PositiveBuckets = []float64{7, 5, 1, 3, 1, 0, 2, 5, 5, 0, 0}
|
||||||
// 6 3 0 3 0 0 2 4 5 0 1 (previous values with some new empty buckets in between)
|
|
||||||
// so the new histogram should have new counts >= these per-bucket counts, e.g.:
|
|
||||||
h2.PositiveBuckets = []int64{7, -2, -4, 2, -2, -1, 2, 3, 0, -5, 0} // 7 5 1 3 1 0 2 5 5 0 0 (total 29)
|
|
||||||
|
|
||||||
hApp, _ := app.(*FloatHistogramAppender)
|
posInterjections, negInterjections, ok, cr := hApp.Appendable(h2)
|
||||||
posInterjections, negInterjections, ok, cr := hApp.Appendable(h2.ToFloat())
|
|
||||||
require.Equal(t, 0, len(posInterjections))
|
require.Equal(t, 0, len(posInterjections))
|
||||||
require.Equal(t, 0, len(negInterjections))
|
require.Equal(t, 0, len(negInterjections))
|
||||||
require.False(t, ok) // Need to cut a new chunk.
|
require.False(t, ok) // Need to cut a new chunk.
|
||||||
|
@ -334,7 +339,7 @@ func TestFloatHistogramChunkAppendable(t *testing.T) {
|
||||||
// added before the first bucket and reset on first bucket. (to
|
// added before the first bucket and reset on first bucket. (to
|
||||||
// catch the edge case where the new bucket should be forwarded
|
// catch the edge case where the new bucket should be forwarded
|
||||||
// ahead until first old bucket at start)
|
// ahead until first old bucket at start)
|
||||||
h2 := h1
|
h2 := h1.Copy()
|
||||||
h2.PositiveSpans = []histogram.Span{
|
h2.PositiveSpans = []histogram.Span{
|
||||||
{Offset: -3, Length: 2},
|
{Offset: -3, Length: 2},
|
||||||
{Offset: 1, Length: 2},
|
{Offset: 1, Length: 2},
|
||||||
|
@ -344,13 +349,9 @@ func TestFloatHistogramChunkAppendable(t *testing.T) {
|
||||||
{Offset: 1, Length: 1},
|
{Offset: 1, Length: 1},
|
||||||
}
|
}
|
||||||
h2.Sum = 26
|
h2.Sum = 26
|
||||||
// Existing histogram should get values converted from the above to:
|
h2.PositiveBuckets = []float64{1, 2, 5, 3, 3, 2, 4, 5, 1}
|
||||||
// 0, 0, 6, 3, 3, 2, 4, 5, 1
|
|
||||||
// so the new histogram should have new counts >= these per-bucket counts, e.g.:
|
|
||||||
h2.PositiveBuckets = []int64{1, 1, 3, -2, 0, -1, 2, 1, -4} // counts: 1, 2, 5, 3, 3, 2, 4, 5, 1 (total 26)
|
|
||||||
|
|
||||||
hApp, _ := app.(*FloatHistogramAppender)
|
posInterjections, negInterjections, ok, cr := hApp.Appendable(h2)
|
||||||
posInterjections, negInterjections, ok, cr := hApp.Appendable(h2.ToFloat())
|
|
||||||
require.Equal(t, 0, len(posInterjections))
|
require.Equal(t, 0, len(posInterjections))
|
||||||
require.Equal(t, 0, len(negInterjections))
|
require.Equal(t, 0, len(negInterjections))
|
||||||
require.False(t, ok) // Need to cut a new chunk.
|
require.False(t, ok) // Need to cut a new chunk.
|
||||||
|
|
|
@ -261,11 +261,26 @@ func TestHistogramChunkAppendable(t *testing.T) {
|
||||||
PositiveBuckets: []int64{6, -3, 0, -1, 2, 1, -4}, // counts: 6, 3, 3, 2, 4, 5, 1 (total 24)
|
PositiveBuckets: []int64{6, -3, 0, -1, 2, 1, -4}, // counts: 6, 3, 3, 2, 4, 5, 1 (total 24)
|
||||||
}
|
}
|
||||||
|
|
||||||
app.AppendHistogram(ts, h1)
|
app.AppendHistogram(ts, h1.Copy())
|
||||||
require.Equal(t, 1, c.NumSamples())
|
require.Equal(t, 1, c.NumSamples())
|
||||||
|
hApp, _ := app.(*HistogramAppender)
|
||||||
|
|
||||||
|
{ // Schema change.
|
||||||
|
h2 := h1.Copy()
|
||||||
|
h2.Schema++
|
||||||
|
_, _, ok, _ := hApp.Appendable(h2)
|
||||||
|
require.False(t, ok)
|
||||||
|
}
|
||||||
|
|
||||||
|
{ // Zero threshold change.
|
||||||
|
h2 := h1.Copy()
|
||||||
|
h2.ZeroThreshold += 0.1
|
||||||
|
_, _, ok, _ := hApp.Appendable(h2)
|
||||||
|
require.False(t, ok)
|
||||||
|
}
|
||||||
|
|
||||||
{ // New histogram that has more buckets.
|
{ // New histogram that has more buckets.
|
||||||
h2 := h1
|
h2 := h1.Copy()
|
||||||
h2.PositiveSpans = []histogram.Span{
|
h2.PositiveSpans = []histogram.Span{
|
||||||
{Offset: 0, Length: 3},
|
{Offset: 0, Length: 3},
|
||||||
{Offset: 1, Length: 1},
|
{Offset: 1, Length: 1},
|
||||||
|
@ -280,7 +295,6 @@ func TestHistogramChunkAppendable(t *testing.T) {
|
||||||
// so the new histogram should have new counts >= these per-bucket counts, e.g.:
|
// so the new histogram should have new counts >= these per-bucket counts, e.g.:
|
||||||
h2.PositiveBuckets = []int64{7, -2, -4, 2, -2, -1, 2, 3, 0, -5, 1} // 7 5 1 3 1 0 2 5 5 0 1 (total 30)
|
h2.PositiveBuckets = []int64{7, -2, -4, 2, -2, -1, 2, 3, 0, -5, 1} // 7 5 1 3 1 0 2 5 5 0 1 (total 30)
|
||||||
|
|
||||||
hApp, _ := app.(*HistogramAppender)
|
|
||||||
posInterjections, negInterjections, ok, cr := hApp.Appendable(h2)
|
posInterjections, negInterjections, ok, cr := hApp.Appendable(h2)
|
||||||
require.Greater(t, len(posInterjections), 0)
|
require.Greater(t, len(posInterjections), 0)
|
||||||
require.Equal(t, 0, len(negInterjections))
|
require.Equal(t, 0, len(negInterjections))
|
||||||
|
@ -289,7 +303,7 @@ func TestHistogramChunkAppendable(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
{ // New histogram that has a bucket missing.
|
{ // New histogram that has a bucket missing.
|
||||||
h2 := h1
|
h2 := h1.Copy()
|
||||||
h2.PositiveSpans = []histogram.Span{
|
h2.PositiveSpans = []histogram.Span{
|
||||||
{Offset: 0, Length: 2},
|
{Offset: 0, Length: 2},
|
||||||
{Offset: 5, Length: 2},
|
{Offset: 5, Length: 2},
|
||||||
|
@ -299,7 +313,6 @@ func TestHistogramChunkAppendable(t *testing.T) {
|
||||||
h2.Sum = 21
|
h2.Sum = 21
|
||||||
h2.PositiveBuckets = []int64{6, -3, -1, 2, 1, -4} // counts: 6, 3, 2, 4, 5, 1 (total 21)
|
h2.PositiveBuckets = []int64{6, -3, -1, 2, 1, -4} // counts: 6, 3, 2, 4, 5, 1 (total 21)
|
||||||
|
|
||||||
hApp, _ := app.(*HistogramAppender)
|
|
||||||
posInterjections, negInterjections, ok, cr := hApp.Appendable(h2)
|
posInterjections, negInterjections, ok, cr := hApp.Appendable(h2)
|
||||||
require.Equal(t, 0, len(posInterjections))
|
require.Equal(t, 0, len(posInterjections))
|
||||||
require.Equal(t, 0, len(negInterjections))
|
require.Equal(t, 0, len(negInterjections))
|
||||||
|
@ -308,11 +321,10 @@ func TestHistogramChunkAppendable(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
{ // New histogram that has a counter reset while buckets are same.
|
{ // New histogram that has a counter reset while buckets are same.
|
||||||
h2 := h1
|
h2 := h1.Copy()
|
||||||
h2.Sum = 23
|
h2.Sum = 23
|
||||||
h2.PositiveBuckets = []int64{6, -4, 1, -1, 2, 1, -4} // counts: 6, 2, 3, 2, 4, 5, 1 (total 23)
|
h2.PositiveBuckets = []int64{6, -4, 1, -1, 2, 1, -4} // counts: 6, 2, 3, 2, 4, 5, 1 (total 23)
|
||||||
|
|
||||||
hApp, _ := app.(*HistogramAppender)
|
|
||||||
posInterjections, negInterjections, ok, cr := hApp.Appendable(h2)
|
posInterjections, negInterjections, ok, cr := hApp.Appendable(h2)
|
||||||
require.Equal(t, 0, len(posInterjections))
|
require.Equal(t, 0, len(posInterjections))
|
||||||
require.Equal(t, 0, len(negInterjections))
|
require.Equal(t, 0, len(negInterjections))
|
||||||
|
@ -321,7 +333,7 @@ func TestHistogramChunkAppendable(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
{ // New histogram that has a counter reset while new buckets were added.
|
{ // New histogram that has a counter reset while new buckets were added.
|
||||||
h2 := h1
|
h2 := h1.Copy()
|
||||||
h2.PositiveSpans = []histogram.Span{
|
h2.PositiveSpans = []histogram.Span{
|
||||||
{Offset: 0, Length: 3},
|
{Offset: 0, Length: 3},
|
||||||
{Offset: 1, Length: 1},
|
{Offset: 1, Length: 1},
|
||||||
|
@ -334,7 +346,6 @@ func TestHistogramChunkAppendable(t *testing.T) {
|
||||||
// so the new histogram should have new counts >= these per-bucket counts, e.g.:
|
// so the new histogram should have new counts >= these per-bucket counts, e.g.:
|
||||||
h2.PositiveBuckets = []int64{7, -2, -4, 2, -2, -1, 2, 3, 0, -5, 0} // 7 5 1 3 1 0 2 5 5 0 0 (total 29)
|
h2.PositiveBuckets = []int64{7, -2, -4, 2, -2, -1, 2, 3, 0, -5, 0} // 7 5 1 3 1 0 2 5 5 0 0 (total 29)
|
||||||
|
|
||||||
hApp, _ := app.(*HistogramAppender)
|
|
||||||
posInterjections, negInterjections, ok, cr := hApp.Appendable(h2)
|
posInterjections, negInterjections, ok, cr := hApp.Appendable(h2)
|
||||||
require.Equal(t, 0, len(posInterjections))
|
require.Equal(t, 0, len(posInterjections))
|
||||||
require.Equal(t, 0, len(negInterjections))
|
require.Equal(t, 0, len(negInterjections))
|
||||||
|
@ -347,7 +358,7 @@ func TestHistogramChunkAppendable(t *testing.T) {
|
||||||
// added before the first bucket and reset on first bucket. (to
|
// added before the first bucket and reset on first bucket. (to
|
||||||
// catch the edge case where the new bucket should be forwarded
|
// catch the edge case where the new bucket should be forwarded
|
||||||
// ahead until first old bucket at start)
|
// ahead until first old bucket at start)
|
||||||
h2 := h1
|
h2 := h1.Copy()
|
||||||
h2.PositiveSpans = []histogram.Span{
|
h2.PositiveSpans = []histogram.Span{
|
||||||
{Offset: -3, Length: 2},
|
{Offset: -3, Length: 2},
|
||||||
{Offset: 1, Length: 2},
|
{Offset: 1, Length: 2},
|
||||||
|
@ -362,7 +373,6 @@ func TestHistogramChunkAppendable(t *testing.T) {
|
||||||
// so the new histogram should have new counts >= these per-bucket counts, e.g.:
|
// so the new histogram should have new counts >= these per-bucket counts, e.g.:
|
||||||
h2.PositiveBuckets = []int64{1, 1, 3, -2, 0, -1, 2, 1, -4} // counts: 1, 2, 5, 3, 3, 2, 4, 5, 1 (total 26)
|
h2.PositiveBuckets = []int64{1, 1, 3, -2, 0, -1, 2, 1, -4} // counts: 1, 2, 5, 3, 3, 2, 4, 5, 1 (total 26)
|
||||||
|
|
||||||
hApp, _ := app.(*HistogramAppender)
|
|
||||||
posInterjections, negInterjections, ok, cr := hApp.Appendable(h2)
|
posInterjections, negInterjections, ok, cr := hApp.Appendable(h2)
|
||||||
require.Equal(t, 0, len(posInterjections))
|
require.Equal(t, 0, len(posInterjections))
|
||||||
require.Equal(t, 0, len(negInterjections))
|
require.Equal(t, 0, len(negInterjections))
|
||||||
|
|
Loading…
Reference in a new issue