mirror of
https://github.com/prometheus/prometheus.git
synced 2026-06-08 16:12:16 -04:00
tsdb: complete TestHistogramCounterResetHeader for integer histograms (#18289)
Signed-off-by: Amarachi Iheanacho <amarachi.iheanacho@siderolabs.com>
This commit is contained in:
parent
c0b4c5ef18
commit
f9ba49a9b6
2 changed files with 44 additions and 30 deletions
|
|
@ -2485,7 +2485,7 @@ func testHeadAppenderV2AppendStaleHistogram(t *testing.T, floatHistogram bool) {
|
|||
}
|
||||
|
||||
func TestHeadAppenderV2_Append_CounterResetHeader(t *testing.T) {
|
||||
for _, floatHisto := range []bool{true} { // FIXME
|
||||
for _, floatHisto := range []bool{true, false} {
|
||||
t.Run(fmt.Sprintf("floatHistogram=%t", floatHisto), func(t *testing.T) {
|
||||
l := labels.FromStrings("a", "b")
|
||||
head, _ := newTestHead(t, 1000, compression.None, false)
|
||||
|
|
@ -2536,32 +2536,31 @@ func TestHeadAppenderV2_Append_CounterResetHeader(t *testing.T) {
|
|||
h := tsdbutil.GenerateTestHistograms(1)[0]
|
||||
h.PositiveBuckets = []int64{100, 1, 1, 1}
|
||||
h.NegativeBuckets = []int64{100, 1, 1, 1}
|
||||
h.Count = 1000
|
||||
// Count = positive delta-decoded (100+101+102+103=406) + negative (406) + ZeroCount (2) = 814.
|
||||
h.Count = 814
|
||||
|
||||
// First histogram is UnknownCounterReset.
|
||||
appendHistogram(h)
|
||||
checkExpCounterResetHeader(chunkenc.UnknownCounterReset)
|
||||
|
||||
// Another normal histogram.
|
||||
h.Count++
|
||||
// Another normal histogram: increment a bucket and Count consistently.
|
||||
h.PositiveBuckets[len(h.PositiveBuckets)-1]++
|
||||
h.Count++ // Count = 815.
|
||||
appendHistogram(h)
|
||||
checkExpCounterResetHeader()
|
||||
|
||||
// Counter reset via Count.
|
||||
h.Count--
|
||||
// Counter reset: decrement the same bucket and Count.
|
||||
h.PositiveBuckets[len(h.PositiveBuckets)-1]--
|
||||
h.Count-- // Count = 814.
|
||||
appendHistogram(h)
|
||||
checkExpCounterResetHeader(chunkenc.CounterReset)
|
||||
|
||||
// Add 2 non-counter reset histogram chunks (each chunk targets 1024 bytes which contains ~500 int histogram
|
||||
// samples or ~1000 float histogram samples).
|
||||
numAppend := 2000
|
||||
if floatHisto {
|
||||
numAppend = 1000
|
||||
}
|
||||
for i := 0; i < numAppend; i++ {
|
||||
// Add 2 non-counter reset histogram chunks.
|
||||
ms, _, err := head.getOrCreate(l.Hash(), l, false)
|
||||
require.NoError(t, err)
|
||||
for ms.headChunkCount.Load() < 3 {
|
||||
appendHistogram(h)
|
||||
}
|
||||
|
||||
checkExpCounterResetHeader(chunkenc.NotCounterReset, chunkenc.NotCounterReset)
|
||||
|
||||
// Changing schema will cut a new chunk with unknown counter reset.
|
||||
|
|
@ -2577,28 +2576,36 @@ func TestHeadAppenderV2_Append_CounterResetHeader(t *testing.T) {
|
|||
// Counter reset by removing a positive bucket.
|
||||
h.PositiveSpans[1].Length--
|
||||
h.PositiveBuckets = h.PositiveBuckets[1:]
|
||||
// After removal: positive delta-decoded (1+2+3=6) + negative (406) + ZeroCount (2) = 414.
|
||||
h.Count = 414
|
||||
appendHistogram(h)
|
||||
checkExpCounterResetHeader(chunkenc.CounterReset)
|
||||
|
||||
// Counter reset by removing a negative bucket.
|
||||
h.NegativeSpans[1].Length--
|
||||
h.NegativeBuckets = h.NegativeBuckets[1:]
|
||||
// After removal: positive (6) + negative delta-decoded (1+2+3=6) + ZeroCount (2) = 14.
|
||||
h.Count = 14
|
||||
appendHistogram(h)
|
||||
checkExpCounterResetHeader(chunkenc.CounterReset)
|
||||
|
||||
// Add 2 non-counter reset histogram chunks. Just to have some non-counter reset chunks in between.
|
||||
for range 2000 {
|
||||
for ms.headChunkCount.Load() < 3 {
|
||||
appendHistogram(h)
|
||||
}
|
||||
checkExpCounterResetHeader(chunkenc.NotCounterReset, chunkenc.NotCounterReset)
|
||||
|
||||
// Counter reset with counter reset in a positive bucket.
|
||||
h.PositiveBuckets[len(h.PositiveBuckets)-1]--
|
||||
// After: positive delta-decoded (1+2+2=5) + negative (6) + ZeroCount (2) = 13.
|
||||
h.Count = 13
|
||||
appendHistogram(h)
|
||||
checkExpCounterResetHeader(chunkenc.CounterReset)
|
||||
|
||||
// Counter reset with counter reset in a negative bucket.
|
||||
h.NegativeBuckets[len(h.NegativeBuckets)-1]--
|
||||
// After: positive (5) + negative delta-decoded (1+2+2=5) + ZeroCount (2) = 12.
|
||||
h.Count = 12
|
||||
appendHistogram(h)
|
||||
checkExpCounterResetHeader(chunkenc.CounterReset)
|
||||
})
|
||||
|
|
|
|||
|
|
@ -5299,7 +5299,7 @@ func testHistogramStaleSampleHelper(t *testing.T, floatHistogram bool) {
|
|||
}
|
||||
|
||||
func TestHistogramCounterResetHeader(t *testing.T) {
|
||||
for _, floatHisto := range []bool{true} { // FIXME
|
||||
for _, floatHisto := range []bool{true, false} {
|
||||
t.Run(fmt.Sprintf("floatHistogram=%t", floatHisto), func(t *testing.T) {
|
||||
l := labels.FromStrings("a", "b")
|
||||
head, _ := newTestHead(t, 1000, compression.None, false)
|
||||
|
|
@ -5350,32 +5350,31 @@ func TestHistogramCounterResetHeader(t *testing.T) {
|
|||
h := tsdbutil.GenerateTestHistograms(1)[0]
|
||||
h.PositiveBuckets = []int64{100, 1, 1, 1}
|
||||
h.NegativeBuckets = []int64{100, 1, 1, 1}
|
||||
h.Count = 1000
|
||||
// Count = positive delta-decoded (100+101+102+103=406) + negative (406) + ZeroCount (2) = 814.
|
||||
h.Count = 814
|
||||
|
||||
// First histogram is UnknownCounterReset.
|
||||
appendHistogram(h)
|
||||
checkExpCounterResetHeader(chunkenc.UnknownCounterReset)
|
||||
|
||||
// Another normal histogram.
|
||||
h.Count++
|
||||
// Another normal histogram: increment a bucket and Count consistently.
|
||||
h.PositiveBuckets[len(h.PositiveBuckets)-1]++
|
||||
h.Count++ // Count = 815.
|
||||
appendHistogram(h)
|
||||
checkExpCounterResetHeader()
|
||||
|
||||
// Counter reset via Count.
|
||||
h.Count--
|
||||
// Counter reset: decrement the same bucket and Count.
|
||||
h.PositiveBuckets[len(h.PositiveBuckets)-1]--
|
||||
h.Count-- // Count = 814.
|
||||
appendHistogram(h)
|
||||
checkExpCounterResetHeader(chunkenc.CounterReset)
|
||||
|
||||
// Add 2 non-counter reset histogram chunks (each chunk targets 1024 bytes which contains ~500 int histogram
|
||||
// samples or ~1000 float histogram samples).
|
||||
numAppend := 2000
|
||||
if floatHisto {
|
||||
numAppend = 1000
|
||||
}
|
||||
for i := 0; i < numAppend; i++ {
|
||||
// Add 2 non-counter reset histogram chunks.
|
||||
ms, _, err := head.getOrCreate(l.Hash(), l, false)
|
||||
require.NoError(t, err)
|
||||
for ms.headChunkCount.Load() < 3 {
|
||||
appendHistogram(h)
|
||||
}
|
||||
|
||||
checkExpCounterResetHeader(chunkenc.NotCounterReset, chunkenc.NotCounterReset)
|
||||
|
||||
// Changing schema will cut a new chunk with unknown counter reset.
|
||||
|
|
@ -5391,28 +5390,36 @@ func TestHistogramCounterResetHeader(t *testing.T) {
|
|||
// Counter reset by removing a positive bucket.
|
||||
h.PositiveSpans[1].Length--
|
||||
h.PositiveBuckets = h.PositiveBuckets[1:]
|
||||
// After removal: positive delta-decoded (1+2+3=6) + negative (406) + ZeroCount (2) = 414.
|
||||
h.Count = 414
|
||||
appendHistogram(h)
|
||||
checkExpCounterResetHeader(chunkenc.CounterReset)
|
||||
|
||||
// Counter reset by removing a negative bucket.
|
||||
h.NegativeSpans[1].Length--
|
||||
h.NegativeBuckets = h.NegativeBuckets[1:]
|
||||
// After removal: positive (6) + negative delta-decoded (1+2+3=6) + ZeroCount (2) = 14.
|
||||
h.Count = 14
|
||||
appendHistogram(h)
|
||||
checkExpCounterResetHeader(chunkenc.CounterReset)
|
||||
|
||||
// Add 2 non-counter reset histogram chunks. Just to have some non-counter reset chunks in between.
|
||||
for range 2000 {
|
||||
for ms.headChunkCount.Load() < 3 {
|
||||
appendHistogram(h)
|
||||
}
|
||||
checkExpCounterResetHeader(chunkenc.NotCounterReset, chunkenc.NotCounterReset)
|
||||
|
||||
// Counter reset with counter reset in a positive bucket.
|
||||
h.PositiveBuckets[len(h.PositiveBuckets)-1]--
|
||||
// After: positive delta-decoded (1+2+2=5) + negative (6) + ZeroCount (2) = 13.
|
||||
h.Count = 13
|
||||
appendHistogram(h)
|
||||
checkExpCounterResetHeader(chunkenc.CounterReset)
|
||||
|
||||
// Counter reset with counter reset in a negative bucket.
|
||||
h.NegativeBuckets[len(h.NegativeBuckets)-1]--
|
||||
// After: positive (5) + negative delta-decoded (1+2+2=5) + ZeroCount (2) = 12.
|
||||
h.Count = 12
|
||||
appendHistogram(h)
|
||||
checkExpCounterResetHeader(chunkenc.CounterReset)
|
||||
})
|
||||
|
|
|
|||
Loading…
Reference in a new issue