mirror of
https://github.com/prometheus/prometheus
synced 2024-12-27 09:02:53 +00:00
add unit test
Signed-off-by: Ben Ye <benye@amazon.com>
This commit is contained in:
parent
e7db2e30a4
commit
0e6fca8e76
@ -1559,8 +1559,10 @@ func (r *Reader) LabelNamesFor(ctx context.Context, postings Postings) ([]string
|
|||||||
id := postings.At()
|
id := postings.At()
|
||||||
i++
|
i++
|
||||||
|
|
||||||
if i%checkContextEveryNIterations == 0 && ctx.Err() != nil {
|
if i%checkContextEveryNIterations == 0 {
|
||||||
return nil, ctx.Err()
|
if ctxErr := ctx.Err(); ctxErr != nil {
|
||||||
|
return nil, ctxErr
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
offset := id
|
offset := id
|
||||||
|
@ -634,6 +634,31 @@ func TestReader_PostingsForLabelMatchingHonorsContextCancel(t *testing.T) {
|
|||||||
require.Equal(t, failAfter, ctx.Count())
|
require.Equal(t, failAfter, ctx.Count())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestReader_LabelNamesForHonorsContextCancel(t *testing.T) {
|
||||||
|
const seriesCount = 1000
|
||||||
|
var input indexWriterSeriesSlice
|
||||||
|
for i := 1; i <= seriesCount; i++ {
|
||||||
|
input = append(input, &indexWriterSeries{
|
||||||
|
labels: labels.FromStrings(labels.MetricName, fmt.Sprintf("%4d", i)),
|
||||||
|
chunks: []chunks.Meta{
|
||||||
|
{Ref: 1, MinTime: 0, MaxTime: 10},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
ir, _, _ := createFileReader(context.Background(), t, input)
|
||||||
|
|
||||||
|
name, value := AllPostingsKey()
|
||||||
|
p, err := ir.Postings(context.Background(), name, value)
|
||||||
|
require.NoError(t, err)
|
||||||
|
// We check context cancellation every 128 iterations so 3 will fail after
|
||||||
|
// iterating 3 * 128 series.
|
||||||
|
failAfter := uint64(3)
|
||||||
|
ctx := &testutil.MockContextErrAfter{FailAfter: failAfter}
|
||||||
|
_, err = ir.LabelNamesFor(ctx, p)
|
||||||
|
require.Error(t, err)
|
||||||
|
require.Equal(t, failAfter, ctx.Count())
|
||||||
|
}
|
||||||
|
|
||||||
// createFileReader creates a temporary index file. It writes the provided input to this file.
|
// createFileReader creates a temporary index file. It writes the provided input to this file.
|
||||||
// It returns a Reader for this file, the file's name, and the symbol map.
|
// It returns a Reader for this file, the file's name, and the symbol map.
|
||||||
func createFileReader(ctx context.Context, tb testing.TB, input indexWriterSeriesSlice) (*Reader, string, map[string]struct{}) {
|
func createFileReader(ctx context.Context, tb testing.TB, input indexWriterSeriesSlice) (*Reader, string, map[string]struct{}) {
|
||||||
|
Loading…
Reference in New Issue
Block a user