mirror of
https://github.com/prometheus/prometheus.git
synced 2024-12-25 13:44:05 -08:00
add unit test to check label rule labels override
Signed-off-by: jessicagreben <jessicagrebens@gmail.com>
This commit is contained in:
parent
f8372bc6b9
commit
3da87d2f39
|
@ -207,3 +207,67 @@ func createMultiRuleTestFiles(path string) error {
|
||||||
`
|
`
|
||||||
return ioutil.WriteFile(path, []byte(recordingRules), 0777)
|
return ioutil.WriteFile(path, []byte(recordingRules), 0777)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestBackfillLabels confirms that the labels in the rule file override the labels from the metrics
|
||||||
|
// received from Prometheus Query API, including the __name__ label.
|
||||||
|
func TestBackfillLabels(t *testing.T) {
|
||||||
|
tmpDir, err := ioutil.TempDir("", "backfilldata")
|
||||||
|
require.NoError(t, err)
|
||||||
|
defer func() {
|
||||||
|
require.NoError(t, os.RemoveAll(tmpDir))
|
||||||
|
}()
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
start := time.Date(2009, time.November, 10, 6, 34, 0, 0, time.UTC)
|
||||||
|
mockAPISamples := []*model.SampleStream{
|
||||||
|
{
|
||||||
|
Metric: model.Metric{"name1": "override", "__name__": "override"},
|
||||||
|
Values: []model.SamplePair{{Timestamp: model.TimeFromUnixNano(start.UnixNano()), Value: 123}},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
ruleImporter, err := newTestRuleImporter(ctx, start, tmpDir, mockAPISamples)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
path := filepath.Join(tmpDir, "test.file")
|
||||||
|
recordingRules := `groups:
|
||||||
|
- name: group0
|
||||||
|
rules:
|
||||||
|
- record: rule1
|
||||||
|
expr: ruleExpr
|
||||||
|
labels:
|
||||||
|
name1: val1
|
||||||
|
`
|
||||||
|
require.NoError(t, ioutil.WriteFile(path, []byte(recordingRules), 0777))
|
||||||
|
errs := ruleImporter.loadGroups(ctx, []string{path})
|
||||||
|
for _, err := range errs {
|
||||||
|
require.NoError(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
errs = ruleImporter.importAll(ctx)
|
||||||
|
for _, err := range errs {
|
||||||
|
require.NoError(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
opts := tsdb.DefaultOptions()
|
||||||
|
opts.AllowOverlappingBlocks = true
|
||||||
|
db, err := tsdb.Open(tmpDir, nil, nil, opts, nil)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
q, err := db.Querier(context.Background(), math.MinInt64, math.MaxInt64)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
t.Run("correct-labels", func(t *testing.T) {
|
||||||
|
selectedSeries := q.Select(false, nil, labels.MustNewMatcher(labels.MatchRegexp, "", ".*"))
|
||||||
|
for selectedSeries.Next() {
|
||||||
|
series := selectedSeries.At()
|
||||||
|
expectedLabels := labels.Labels{
|
||||||
|
labels.Label{Name: "__name__", Value: "rule1"},
|
||||||
|
labels.Label{Name: "name1", Value: "val1"},
|
||||||
|
}
|
||||||
|
require.Equal(t, expectedLabels, series.Labels())
|
||||||
|
}
|
||||||
|
require.NoError(t, selectedSeries.Err())
|
||||||
|
require.NoError(t, q.Close())
|
||||||
|
require.NoError(t, db.Close())
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue