mirror of
https://github.com/prometheus/prometheus.git
synced 2024-11-09 23:24:05 -08:00
Expand TestPopulateWithTombSeriesIterators to test min max times of chunks, including mixed chunks
Signed-off-by: Jeanette Tan <jeanette.tan@grafana.com>
This commit is contained in:
parent
04aabdd7cc
commit
7a4a1127b7
|
@ -694,12 +694,16 @@ func (r *fakeChunksReader) Chunk(meta chunks.Meta) (chunkenc.Chunk, error) {
|
|||
}
|
||||
|
||||
func TestPopulateWithTombSeriesIterators(t *testing.T) {
|
||||
type minMaxTimes struct {
|
||||
minTime, maxTime int64
|
||||
}
|
||||
cases := []struct {
|
||||
name string
|
||||
chks [][]chunks.Sample
|
||||
|
||||
expected []chunks.Sample
|
||||
expectedChks []chunks.Meta
|
||||
expected []chunks.Sample
|
||||
expectedChks []chunks.Meta
|
||||
expectedMinMaxTimes []minMaxTimes
|
||||
|
||||
intervals tombstones.Intervals
|
||||
|
||||
|
@ -718,6 +722,7 @@ func TestPopulateWithTombSeriesIterators(t *testing.T) {
|
|||
expectedChks: []chunks.Meta{
|
||||
assureChunkFromSamples(t, []chunks.Sample{}),
|
||||
},
|
||||
expectedMinMaxTimes: []minMaxTimes{{0, 0}},
|
||||
},
|
||||
{
|
||||
name: "three empty chunks", // This should never happen.
|
||||
|
@ -728,6 +733,7 @@ func TestPopulateWithTombSeriesIterators(t *testing.T) {
|
|||
assureChunkFromSamples(t, []chunks.Sample{}),
|
||||
assureChunkFromSamples(t, []chunks.Sample{}),
|
||||
},
|
||||
expectedMinMaxTimes: []minMaxTimes{{0, 0}, {0, 0}, {0, 0}},
|
||||
},
|
||||
{
|
||||
name: "one chunk",
|
||||
|
@ -743,6 +749,7 @@ func TestPopulateWithTombSeriesIterators(t *testing.T) {
|
|||
sample{1, 2, nil, nil}, sample{2, 3, nil, nil}, sample{3, 5, nil, nil}, sample{6, 1, nil, nil},
|
||||
}),
|
||||
},
|
||||
expectedMinMaxTimes: []minMaxTimes{{1, 6}},
|
||||
},
|
||||
{
|
||||
name: "two full chunks",
|
||||
|
@ -762,6 +769,7 @@ func TestPopulateWithTombSeriesIterators(t *testing.T) {
|
|||
sample{7, 89, nil, nil}, sample{9, 8, nil, nil},
|
||||
}),
|
||||
},
|
||||
expectedMinMaxTimes: []minMaxTimes{{1, 6}, {7, 9}},
|
||||
},
|
||||
{
|
||||
name: "three full chunks",
|
||||
|
@ -785,6 +793,7 @@ func TestPopulateWithTombSeriesIterators(t *testing.T) {
|
|||
sample{10, 22, nil, nil}, sample{203, 3493, nil, nil},
|
||||
}),
|
||||
},
|
||||
expectedMinMaxTimes: []minMaxTimes{{1, 6}, {7, 9}, {10, 203}},
|
||||
},
|
||||
// Seek cases.
|
||||
{
|
||||
|
@ -855,6 +864,7 @@ func TestPopulateWithTombSeriesIterators(t *testing.T) {
|
|||
sample{7, 89, nil, nil},
|
||||
}),
|
||||
},
|
||||
expectedMinMaxTimes: []minMaxTimes{{3, 6}, {7, 7}},
|
||||
},
|
||||
{
|
||||
name: "two chunks with trimmed middle sample of first chunk",
|
||||
|
@ -875,6 +885,7 @@ func TestPopulateWithTombSeriesIterators(t *testing.T) {
|
|||
sample{7, 89, nil, nil}, sample{9, 8, nil, nil},
|
||||
}),
|
||||
},
|
||||
expectedMinMaxTimes: []minMaxTimes{{1, 6}, {7, 9}},
|
||||
},
|
||||
{
|
||||
name: "two chunks with deletion across two chunks",
|
||||
|
@ -895,6 +906,7 @@ func TestPopulateWithTombSeriesIterators(t *testing.T) {
|
|||
sample{9, 8, nil, nil},
|
||||
}),
|
||||
},
|
||||
expectedMinMaxTimes: []minMaxTimes{{1, 3}, {9, 9}},
|
||||
},
|
||||
// Deletion with seek.
|
||||
{
|
||||
|
@ -935,6 +947,7 @@ func TestPopulateWithTombSeriesIterators(t *testing.T) {
|
|||
sample{6, 0, tsdbutil.SetHistogramNotCounterReset(tsdbutil.GenerateTestHistogram(6)), nil},
|
||||
}),
|
||||
},
|
||||
expectedMinMaxTimes: []minMaxTimes{{1, 6}},
|
||||
},
|
||||
{
|
||||
name: "one histogram chunk intersect with deletion interval",
|
||||
|
@ -959,6 +972,7 @@ func TestPopulateWithTombSeriesIterators(t *testing.T) {
|
|||
sample{3, 0, tsdbutil.SetHistogramNotCounterReset(tsdbutil.GenerateTestHistogram(3)), nil},
|
||||
}),
|
||||
},
|
||||
expectedMinMaxTimes: []minMaxTimes{{1, 3}},
|
||||
},
|
||||
{
|
||||
name: "one float histogram chunk",
|
||||
|
@ -984,6 +998,7 @@ func TestPopulateWithTombSeriesIterators(t *testing.T) {
|
|||
sample{6, 0, nil, tsdbutil.SetFloatHistogramNotCounterReset(tsdbutil.GenerateTestFloatHistogram(6))},
|
||||
}),
|
||||
},
|
||||
expectedMinMaxTimes: []minMaxTimes{{1, 6}},
|
||||
},
|
||||
{
|
||||
name: "one float histogram chunk intersect with deletion interval",
|
||||
|
@ -1008,6 +1023,7 @@ func TestPopulateWithTombSeriesIterators(t *testing.T) {
|
|||
sample{3, 0, nil, tsdbutil.SetFloatHistogramNotCounterReset(tsdbutil.GenerateTestFloatHistogram(3))},
|
||||
}),
|
||||
},
|
||||
expectedMinMaxTimes: []minMaxTimes{{1, 3}},
|
||||
},
|
||||
{
|
||||
name: "one gauge histogram chunk",
|
||||
|
@ -1033,6 +1049,7 @@ func TestPopulateWithTombSeriesIterators(t *testing.T) {
|
|||
sample{6, 0, tsdbutil.GenerateTestGaugeHistogram(6), nil},
|
||||
}),
|
||||
},
|
||||
expectedMinMaxTimes: []minMaxTimes{{1, 6}},
|
||||
},
|
||||
{
|
||||
name: "one gauge histogram chunk intersect with deletion interval",
|
||||
|
@ -1057,6 +1074,7 @@ func TestPopulateWithTombSeriesIterators(t *testing.T) {
|
|||
sample{3, 0, tsdbutil.GenerateTestGaugeHistogram(3), nil},
|
||||
}),
|
||||
},
|
||||
expectedMinMaxTimes: []minMaxTimes{{1, 3}},
|
||||
},
|
||||
{
|
||||
name: "one gauge float histogram",
|
||||
|
@ -1082,6 +1100,7 @@ func TestPopulateWithTombSeriesIterators(t *testing.T) {
|
|||
sample{6, 0, nil, tsdbutil.GenerateTestGaugeFloatHistogram(6)},
|
||||
}),
|
||||
},
|
||||
expectedMinMaxTimes: []minMaxTimes{{1, 6}},
|
||||
},
|
||||
{
|
||||
name: "one gauge float histogram chunk intersect with deletion interval",
|
||||
|
@ -1106,6 +1125,102 @@ func TestPopulateWithTombSeriesIterators(t *testing.T) {
|
|||
sample{3, 0, nil, tsdbutil.GenerateTestGaugeFloatHistogram(3)},
|
||||
}),
|
||||
},
|
||||
expectedMinMaxTimes: []minMaxTimes{{1, 3}},
|
||||
},
|
||||
{
|
||||
name: "three full mixed chunks",
|
||||
chks: [][]chunks.Sample{
|
||||
{sample{1, 2, nil, nil}, sample{2, 3, nil, nil}, sample{3, 5, nil, nil}, sample{6, 1, nil, nil}},
|
||||
{
|
||||
sample{7, 0, tsdbutil.GenerateTestGaugeHistogram(89), nil},
|
||||
sample{9, 0, tsdbutil.GenerateTestGaugeHistogram(8), nil},
|
||||
},
|
||||
{
|
||||
sample{10, 0, nil, tsdbutil.GenerateTestGaugeFloatHistogram(22)},
|
||||
sample{203, 0, nil, tsdbutil.GenerateTestGaugeFloatHistogram(3493)},
|
||||
},
|
||||
},
|
||||
|
||||
expected: []chunks.Sample{
|
||||
sample{1, 2, nil, nil}, sample{2, 3, nil, nil}, sample{3, 5, nil, nil}, sample{6, 1, nil, nil}, sample{7, 0, tsdbutil.GenerateTestGaugeHistogram(89), nil}, sample{9, 0, tsdbutil.GenerateTestGaugeHistogram(8), nil}, sample{10, 0, nil, tsdbutil.GenerateTestGaugeFloatHistogram(22)}, sample{203, 0, nil, tsdbutil.GenerateTestGaugeFloatHistogram(3493)},
|
||||
},
|
||||
expectedChks: []chunks.Meta{
|
||||
assureChunkFromSamples(t, []chunks.Sample{
|
||||
sample{1, 2, nil, nil}, sample{2, 3, nil, nil}, sample{3, 5, nil, nil}, sample{6, 1, nil, nil},
|
||||
}),
|
||||
assureChunkFromSamples(t, []chunks.Sample{
|
||||
sample{7, 0, tsdbutil.GenerateTestGaugeHistogram(89), nil},
|
||||
sample{9, 0, tsdbutil.GenerateTestGaugeHistogram(8), nil},
|
||||
}),
|
||||
assureChunkFromSamples(t, []chunks.Sample{
|
||||
sample{10, 0, nil, tsdbutil.GenerateTestGaugeFloatHistogram(22)},
|
||||
sample{203, 0, nil, tsdbutil.GenerateTestGaugeFloatHistogram(3493)},
|
||||
}),
|
||||
},
|
||||
expectedMinMaxTimes: []minMaxTimes{{1, 6}, {7, 9}, {10, 203}},
|
||||
},
|
||||
{
|
||||
name: "three full mixed chunks in different order",
|
||||
chks: [][]chunks.Sample{
|
||||
{
|
||||
sample{7, 0, tsdbutil.GenerateTestGaugeHistogram(89), nil},
|
||||
sample{9, 0, tsdbutil.GenerateTestGaugeHistogram(8), nil},
|
||||
},
|
||||
{sample{11, 2, nil, nil}, sample{12, 3, nil, nil}, sample{13, 5, nil, nil}, sample{16, 1, nil, nil}},
|
||||
{
|
||||
sample{100, 0, nil, tsdbutil.GenerateTestGaugeFloatHistogram(22)},
|
||||
sample{203, 0, nil, tsdbutil.GenerateTestGaugeFloatHistogram(3493)},
|
||||
},
|
||||
},
|
||||
|
||||
expected: []chunks.Sample{
|
||||
sample{7, 0, tsdbutil.GenerateTestGaugeHistogram(89), nil}, sample{9, 0, tsdbutil.GenerateTestGaugeHistogram(8), nil}, sample{11, 2, nil, nil}, sample{12, 3, nil, nil}, sample{13, 5, nil, nil}, sample{16, 1, nil, nil}, sample{100, 0, nil, tsdbutil.GenerateTestGaugeFloatHistogram(22)}, sample{203, 0, nil, tsdbutil.GenerateTestGaugeFloatHistogram(3493)},
|
||||
},
|
||||
expectedChks: []chunks.Meta{
|
||||
assureChunkFromSamples(t, []chunks.Sample{
|
||||
sample{7, 0, tsdbutil.GenerateTestGaugeHistogram(89), nil},
|
||||
sample{9, 0, tsdbutil.GenerateTestGaugeHistogram(8), nil},
|
||||
}),
|
||||
assureChunkFromSamples(t, []chunks.Sample{
|
||||
sample{11, 2, nil, nil}, sample{12, 3, nil, nil}, sample{13, 5, nil, nil}, sample{16, 1, nil, nil},
|
||||
}),
|
||||
assureChunkFromSamples(t, []chunks.Sample{
|
||||
sample{100, 0, nil, tsdbutil.GenerateTestGaugeFloatHistogram(22)},
|
||||
sample{203, 0, nil, tsdbutil.GenerateTestGaugeFloatHistogram(3493)},
|
||||
}),
|
||||
},
|
||||
expectedMinMaxTimes: []minMaxTimes{{7, 9}, {11, 16}, {100, 203}},
|
||||
},
|
||||
{
|
||||
name: "three full mixed chunks in different order intersect with deletion interval",
|
||||
chks: [][]chunks.Sample{
|
||||
{
|
||||
sample{7, 0, tsdbutil.GenerateTestGaugeHistogram(89), nil},
|
||||
sample{9, 0, tsdbutil.GenerateTestGaugeHistogram(8), nil},
|
||||
},
|
||||
{sample{11, 2, nil, nil}, sample{12, 3, nil, nil}, sample{13, 5, nil, nil}, sample{16, 1, nil, nil}},
|
||||
{
|
||||
sample{100, 0, nil, tsdbutil.GenerateTestGaugeFloatHistogram(22)},
|
||||
sample{203, 0, nil, tsdbutil.GenerateTestGaugeFloatHistogram(3493)},
|
||||
},
|
||||
},
|
||||
intervals: tombstones.Intervals{{Mint: 8, Maxt: 11}, {Mint: 15, Maxt: 150}},
|
||||
|
||||
expected: []chunks.Sample{
|
||||
sample{7, 0, tsdbutil.GenerateTestGaugeHistogram(89), nil}, sample{12, 3, nil, nil}, sample{13, 5, nil, nil}, sample{203, 0, nil, tsdbutil.GenerateTestGaugeFloatHistogram(3493)},
|
||||
},
|
||||
expectedChks: []chunks.Meta{
|
||||
assureChunkFromSamples(t, []chunks.Sample{
|
||||
sample{7, 0, tsdbutil.GenerateTestGaugeHistogram(89), nil},
|
||||
}),
|
||||
assureChunkFromSamples(t, []chunks.Sample{
|
||||
sample{12, 3, nil, nil}, sample{13, 5, nil, nil},
|
||||
}),
|
||||
assureChunkFromSamples(t, []chunks.Sample{
|
||||
sample{203, 0, nil, tsdbutil.GenerateTestGaugeFloatHistogram(3493)},
|
||||
}),
|
||||
},
|
||||
expectedMinMaxTimes: []minMaxTimes{{7, 7}, {12, 13}, {203, 203}},
|
||||
},
|
||||
}
|
||||
for _, tc := range cases {
|
||||
|
@ -1147,6 +1262,11 @@ func TestPopulateWithTombSeriesIterators(t *testing.T) {
|
|||
rmChunkRefs(expandedResult)
|
||||
rmChunkRefs(tc.expectedChks)
|
||||
require.Equal(t, tc.expectedChks, expandedResult)
|
||||
|
||||
for i, meta := range expandedResult {
|
||||
require.Equal(t, tc.expectedMinMaxTimes[i].minTime, meta.MinTime)
|
||||
require.Equal(t, tc.expectedMinMaxTimes[i].maxTime, meta.MaxTime)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue