MCPcopy
hub / github.com/prometheus/prometheus / TestMultipleEncodingsCommitOrder

Function TestMultipleEncodingsCommitOrder

tsdb/db_test.go:5026–5160  ·  view source on GitHub ↗

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)

Source from the content-addressed store, hash-verified

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.
5026func 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 }

Callers

nothing calls this directly

Calls 15

FromStringsFunction · 0.92
GenerateTestHistogramFunction · 0.92
MustNewMatcherFunction · 0.92
ExpandSamplesFunction · 0.92
newTestDBFunction · 0.85
withOptsFunction · 0.85
requireEqualOOOSamplesFunction · 0.85
requireEqualSamplesFunction · 0.85
queryChunksFunction · 0.85
addSampleFunction · 0.85
DisableCompactionsMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…