(t *testing.T)
| 2595 | } |
| 2596 | |
| 2597 | func 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 | |
| 2653 | func TestGCSeriesAccess(t *testing.T) { |
| 2654 | // Put a series, select it. GC it and then access it. |
nothing calls this directly
no test coverage detected
searching dependent graphs…