(tb testing.TB, w *wlog.WL, series []storage.Series, chunkDir string, oooSampleFrequency int)
| 699 | } |
| 700 | |
| 701 | func 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 |
no test coverage detected
searching dependent graphs…