MCPcopy Create free account
hub / github.com/cortexproject/cortex / TestIngesterStreaming

Function TestIngesterStreaming

pkg/querier/distributor_queryable_test.go:146–211  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

144}
145
146func TestIngesterStreaming(t *testing.T) {
147 t.Parallel()
148
149 now := time.Now()
150
151 for _, enc := range encodings {
152 for _, partialDataEnabled := range []bool{false, true} {
153 promChunk := util.GenerateChunk(t, time.Second, model.TimeFromUnix(now.Unix()), 10, enc)
154 clientChunks, err := chunkcompat.ToChunks([]chunk.Chunk{promChunk})
155 require.NoError(t, err)
156
157 d := &MockDistributor{}
158 queryResponse := &client.QueryStreamResponse{
159 Chunkseries: []client.TimeSeriesChunk{
160 {
161 Labels: []cortexpb.LabelAdapter{
162 {Name: "bar", Value: "baz"},
163 },
164 Chunks: clientChunks,
165 },
166 {
167 Labels: []cortexpb.LabelAdapter{
168 {Name: "foo", Value: "bar"},
169 },
170 Chunks: clientChunks,
171 },
172 },
173 }
174 var partialDataErr error
175 if partialDataEnabled {
176 partialDataErr = partialdata.ErrPartialData
177 }
178 d.On("QueryStream", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(queryResponse, partialDataErr)
179
180 ctx := user.InjectOrgID(context.Background(), "0")
181
182 queryable := newDistributorQueryable(d, true, true, batch.NewChunkMergeIterator, 0, func(string) bool {
183 return partialDataEnabled
184 }, 1)
185 querier, err := queryable.Querier(mint, maxt)
186 require.NoError(t, err)
187
188 seriesSet := querier.Select(ctx, true, &storage.SelectHints{Start: mint, End: maxt})
189 require.NoError(t, seriesSet.Err())
190
191 require.True(t, seriesSet.Next())
192 series := seriesSet.At()
193 require.Equal(t, labels.FromStrings("bar", "baz"), series.Labels())
194 chkIter := series.Iterator(nil)
195 require.Equal(t, enc.ChunkValueType(), chkIter.Next())
196
197 require.True(t, seriesSet.Next())
198 series = seriesSet.At()
199 require.Equal(t, labels.FromStrings("foo", "bar"), series.Labels())
200 chkIter = series.Iterator(chkIter)
201 require.Equal(t, enc.ChunkValueType(), chkIter.Next())
202
203 require.False(t, seriesSet.Next())

Callers

nothing calls this directly

Calls 14

GenerateChunkFunction · 0.92
ToChunksFunction · 0.92
newDistributorQueryableFunction · 0.85
ChunkValueTypeMethod · 0.80
ErrMethod · 0.65
NextMethod · 0.65
AtMethod · 0.65
EqualMethod · 0.65
QuerierMethod · 0.45
SelectMethod · 0.45
LabelsMethod · 0.45
IteratorMethod · 0.45

Tested by

no test coverage detected