MCPcopy
hub / github.com/prometheus/prometheus / TestHeadAppenderV2_MemSeriesIsolation

Function TestHeadAppenderV2_MemSeriesIsolation

tsdb/head_append_v2_test.go:785–959  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

783}
784
785func TestHeadAppenderV2_MemSeriesIsolation(t *testing.T) {
786 if defaultIsolationDisabled {
787 t.Skip("skipping test since tsdb isolation is disabled")
788 }
789
790 // Put a series, select it. GC it and then access it.
791 lastValue := func(h *Head, maxAppendID uint64) int {
792 idx, err := h.Index()
793
794 require.NoError(t, err)
795
796 iso := h.iso.State(math.MinInt64, math.MaxInt64)
797 iso.maxAppendID = maxAppendID
798
799 chunks, err := h.chunksRange(math.MinInt64, math.MaxInt64, iso)
800 require.NoError(t, err)
801 // Hm.. here direct block chunk querier might be required?
802 querier := blockQuerier{
803 blockBaseQuerier: &blockBaseQuerier{
804 index: idx,
805 chunks: chunks,
806 tombstones: tombstones.NewMemTombstones(),
807
808 mint: 0,
809 maxt: 10000,
810 },
811 }
812
813 require.NoError(t, err)
814 defer querier.Close()
815
816 ss := querier.Select(context.Background(), false, nil, labels.MustNewMatcher(labels.MatchEqual, "foo", "bar"))
817 _, seriesSet, ws, err := expandSeriesSet(ss)
818 require.NoError(t, err)
819 require.Empty(t, ws)
820
821 for _, series := range seriesSet {
822 return int(series[len(series)-1].f)
823 }
824 return -1
825 }
826
827 addSamples := func(h *Head) int {
828 i := 1
829 for ; i <= 1000; i++ {
830 var app storage.AppenderV2
831 // To initialize bounds.
832 if h.MinTime() == math.MaxInt64 {
833 app = &initAppenderV2{head: h}
834 } else {
835 a := h.appenderV2()
836 a.cleanupAppendIDsBelow = 0
837 app = a
838 }
839
840 _, err := app.Append(0, labels.FromStrings("foo", "bar"), 0, int64(i), float64(i), nil, nil, storage.AOptions{})
841 require.NoError(t, err)
842 require.NoError(t, app.Commit())

Callers

nothing calls this directly

Calls 15

SelectMethod · 0.95
AppendMethod · 0.95
NewMemTombstonesFunction · 0.92
MustNewMatcherFunction · 0.92
FromStringsFunction · 0.92
NewSizeFunction · 0.92
newTestHeadFunction · 0.85
DefaultHeadOptionsFunction · 0.85
NewHeadFunction · 0.85
SkipMethod · 0.80
chunksRangeMethod · 0.80
appenderV2Method · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…