MCPcopy
hub / github.com/prometheus/prometheus / createHeadWithOOOSamples

Function createHeadWithOOOSamples

tsdb/block_test.go:701–760  ·  view source on GitHub ↗
(tb testing.TB, w *wlog.WL, series []storage.Series, chunkDir string, oooSampleFrequency int)

Source from the content-addressed store, hash-verified

699}
700
701func createHeadWithOOOSamples(tb testing.TB, w *wlog.WL, series []storage.Series, chunkDir string, oooSampleFrequency int) *Head {
702 opts := DefaultHeadOptions()
703 opts.ChunkDirRoot = chunkDir
704 opts.OutOfOrderTimeWindow.Store(10000000000)
705 head, err := NewHead(nil, nil, w, nil, opts, nil)
706 require.NoError(tb, err)
707
708 oooSampleLabels := make([]labels.Labels, 0, len(series))
709 oooSamples := make([]chunks.SampleSlice, 0, len(series))
710
711 var it chunkenc.Iterator
712 totalSamples := 0
713 app := head.Appender(context.Background())
714 for _, s := range series {
715 ref := storage.SeriesRef(0)
716 it = s.Iterator(it)
717 lset := s.Labels()
718 os := chunks.SampleSlice{}
719 count := 0
720 for it.Next() == chunkenc.ValFloat {
721 totalSamples++
722 count++
723 t, v := it.At()
724 if count%oooSampleFrequency == 0 {
725 os = append(os, sample{t: t, f: v})
726 continue
727 }
728 ref, err = app.Append(ref, lset, t, v)
729 require.NoError(tb, err)
730 }
731 require.NoError(tb, it.Err())
732 if len(os) > 0 {
733 oooSampleLabels = append(oooSampleLabels, lset)
734 oooSamples = append(oooSamples, os)
735 }
736 }
737 require.NoError(tb, app.Commit())
738
739 oooSamplesAppended := 0
740 require.Equal(tb, float64(0), prom_testutil.ToFloat64(head.metrics.outOfOrderSamplesAppended))
741
742 app = head.Appender(context.Background())
743 for i, lset := range oooSampleLabels {
744 ref := storage.SeriesRef(0)
745 for _, sample := range oooSamples[i] {
746 ref, err = app.Append(ref, lset, sample.T(), sample.F())
747 require.NoError(tb, err)
748 oooSamplesAppended++
749 }
750 }
751 require.NoError(tb, app.Commit())
752
753 actOOOAppended := prom_testutil.ToFloat64(head.metrics.outOfOrderSamplesAppended)
754 require.GreaterOrEqual(tb, actOOOAppended, float64(oooSamplesAppended-len(series)))
755 require.LessOrEqual(tb, actOOOAppended, float64(oooSamplesAppended))
756
757 require.Equal(tb, float64(totalSamples), prom_testutil.ToFloat64(head.metrics.samplesAppended))
758

Callers 1

BenchmarkQueriesFunction · 0.85

Calls 14

AppenderMethod · 0.95
NextMethod · 0.95
AtMethod · 0.95
ErrMethod · 0.95
SeriesRefTypeAlias · 0.92
DefaultHeadOptionsFunction · 0.85
NewHeadFunction · 0.85
StoreMethod · 0.65
IteratorMethod · 0.65
LabelsMethod · 0.65
AppendMethod · 0.65
CommitMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…