MCPcopy
hub / github.com/prometheus/prometheus / TestGCChunkAccess

Function TestGCChunkAccess

tsdb/head_test.go:2597–2651  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

2595}
2596
2597func TestGCChunkAccess(t *testing.T) {
2598 // Put a chunk, select it. GC it and then access it.
2599 const chunkRange = 1000
2600 h, _ := newTestHead(t, chunkRange, compression.None, false)
2601
2602 cOpts := chunkOpts{
2603 chunkDiskMapper: h.chunkDiskMapper,
2604 chunkRange: chunkRange,
2605 samplesPerChunk: DefaultSamplesPerChunk,
2606 }
2607
2608 h.initTime(0)
2609
2610 s, _, _ := h.getOrCreate(1, labels.FromStrings("a", "1"), false)
2611
2612 // Appending 2 samples for the first chunk.
2613 ok, chunkCreated := s.append(0, 0, 0, 0, cOpts)
2614 require.True(t, ok, "series append failed")
2615 require.True(t, chunkCreated, "chunks was not created")
2616 ok, chunkCreated = s.append(0, 999, 999, 0, cOpts)
2617 require.True(t, ok, "series append failed")
2618 require.False(t, chunkCreated, "chunks was created")
2619
2620 // A new chunks should be created here as it's beyond the chunk range.
2621 ok, chunkCreated = s.append(0, 1000, 1000, 0, cOpts)
2622 require.True(t, ok, "series append failed")
2623 require.True(t, chunkCreated, "chunks was not created")
2624 ok, chunkCreated = s.append(0, 1999, 1999, 0, cOpts)
2625 require.True(t, ok, "series append failed")
2626 require.False(t, chunkCreated, "chunks was created")
2627
2628 idx := h.indexRange(0, 1500)
2629 var (
2630 chnks []chunks.Meta
2631 builder labels.ScratchBuilder
2632 )
2633 require.NoError(t, idx.Series(1, &builder, &chnks))
2634
2635 require.Equal(t, labels.FromStrings("a", "1"), builder.Labels())
2636 require.Len(t, chnks, 2)
2637
2638 cr, err := h.chunksRange(0, 1500, nil)
2639 require.NoError(t, err)
2640 _, _, err = cr.ChunkOrIterable(chnks[0])
2641 require.NoError(t, err)
2642 _, _, err = cr.ChunkOrIterable(chnks[1])
2643 require.NoError(t, err)
2644
2645 require.NoError(t, h.Truncate(1500)) // Remove a chunk.
2646
2647 _, _, err = cr.ChunkOrIterable(chnks[0])
2648 require.Equal(t, storage.ErrNotFound, err)
2649 _, _, err = cr.ChunkOrIterable(chnks[1])
2650 require.NoError(t, err)
2651}
2652
2653func TestGCSeriesAccess(t *testing.T) {
2654 // Put a series, select it. GC it and then access it.

Callers

nothing calls this directly

Calls 12

FromStringsFunction · 0.92
newTestHeadFunction · 0.85
initTimeMethod · 0.80
indexRangeMethod · 0.80
chunksRangeMethod · 0.80
appendMethod · 0.65
SeriesMethod · 0.65
LabelsMethod · 0.65
LenMethod · 0.65
ChunkOrIterableMethod · 0.65
getOrCreateMethod · 0.45
TruncateMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…