TestMultipleEncodingsCommitOrder mainly serves to demonstrate when happens when committing a batch of samples for the same series when there are multiple encodings. With issue #15177 fixed, this now all works as expected.
(t *testing.T)
| 5024 | // TestMultipleEncodingsCommitOrder mainly serves to demonstrate when happens when committing a batch of samples for the |
| 5025 | // same series when there are multiple encodings. With issue #15177 fixed, this now all works as expected. |
| 5026 | func TestMultipleEncodingsCommitOrder(t *testing.T) { |
| 5027 | opts := DefaultOptions() |
| 5028 | opts.OutOfOrderCapMax = 30 |
| 5029 | opts.OutOfOrderTimeWindow = 24 * time.Hour.Milliseconds() |
| 5030 | |
| 5031 | db := newTestDB(t, withOpts(opts)) |
| 5032 | db.DisableCompactions() |
| 5033 | |
| 5034 | series1 := labels.FromStrings("foo", "bar1") |
| 5035 | addSample := func(app storage.Appender, ts int64, valType chunkenc.ValueType) chunks.Sample { |
| 5036 | if valType == chunkenc.ValFloat { |
| 5037 | _, err := app.Append(0, labels.FromStrings("foo", "bar1"), ts, float64(ts)) |
| 5038 | require.NoError(t, err) |
| 5039 | return sample{t: ts, f: float64(ts)} |
| 5040 | } |
| 5041 | if valType == chunkenc.ValHistogram { |
| 5042 | h := tsdbutil.GenerateTestHistogram(ts) |
| 5043 | _, err := app.AppendHistogram(0, labels.FromStrings("foo", "bar1"), ts, h, nil) |
| 5044 | require.NoError(t, err) |
| 5045 | return sample{t: ts, h: h} |
| 5046 | } |
| 5047 | fh := tsdbutil.GenerateTestFloatHistogram(ts) |
| 5048 | _, err := app.AppendHistogram(0, labels.FromStrings("foo", "bar1"), ts, nil, fh) |
| 5049 | require.NoError(t, err) |
| 5050 | return sample{t: ts, fh: fh} |
| 5051 | } |
| 5052 | |
| 5053 | verifySamples := func(minT, maxT int64, expSamples []chunks.Sample, oooCount int) { |
| 5054 | requireEqualOOOSamples(t, oooCount, db) |
| 5055 | |
| 5056 | // Verify samples querier. |
| 5057 | querier, err := db.Querier(minT, maxT) |
| 5058 | require.NoError(t, err) |
| 5059 | defer querier.Close() |
| 5060 | |
| 5061 | seriesSet := query(t, querier, labels.MustNewMatcher(labels.MatchEqual, "foo", "bar1")) |
| 5062 | require.Len(t, seriesSet, 1) |
| 5063 | gotSamples := seriesSet[series1.String()] |
| 5064 | requireEqualSamples(t, series1.String(), expSamples, gotSamples, requireEqualSamplesIgnoreCounterResets) |
| 5065 | |
| 5066 | // Verify chunks querier. |
| 5067 | chunkQuerier, err := db.ChunkQuerier(minT, maxT) |
| 5068 | require.NoError(t, err) |
| 5069 | defer chunkQuerier.Close() |
| 5070 | |
| 5071 | chks := queryChunks(t, chunkQuerier, labels.MustNewMatcher(labels.MatchEqual, "foo", "bar1")) |
| 5072 | require.NotNil(t, chks[series1.String()]) |
| 5073 | require.Len(t, chks, 1) |
| 5074 | var gotChunkSamples []chunks.Sample |
| 5075 | for _, chunk := range chks[series1.String()] { |
| 5076 | it := chunk.Chunk.Iterator(nil) |
| 5077 | smpls, err := storage.ExpandSamples(it, newSample) |
| 5078 | require.NoError(t, err) |
| 5079 | gotChunkSamples = append(gotChunkSamples, smpls...) |
| 5080 | require.NoError(t, it.Err()) |
| 5081 | } |
| 5082 | requireEqualSamples(t, series1.String(), expSamples, gotChunkSamples, requireEqualSamplesIgnoreCounterResets) |
| 5083 | } |
nothing calls this directly
no test coverage detected
searching dependent graphs…