mirror of https://github.com/prometheus/prometheus
test: add TestTargetsFromGroupWithLabelKeepDrop to reinforce a relabelling behaviour.
fixes https://github.com/prometheus/prometheus/issues/12355 Signed-off-by: machine424 <ayoubmrini424@gmail.com>pull/15529/head
parent
7f26371af8
commit
7719ed18d7
|
@ -354,6 +354,80 @@ func TestTargetsFromGroup(t *testing.T) {
|
|||
require.EqualError(t, failures[0], expectedError)
|
||||
}
|
||||
|
||||
// TestTargetsFromGroupWithLabelKeepDrop aims to demonstrate and reinforce the current behavior: relabeling's "labelkeep" and "labeldrop"
|
||||
// are applied to all labels of a target, including internal ones (labels starting with "__" such as "__address__").
|
||||
// This will be helpful for cases like https://github.com/prometheus/prometheus/issues/12355.
|
||||
func TestTargetsFromGroupWithLabelKeepDrop(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
cfgText string
|
||||
targets []model.LabelSet
|
||||
shouldDropTarget bool
|
||||
}{
|
||||
{
|
||||
name: "no relabeling",
|
||||
cfgText: `
|
||||
global:
|
||||
metric_name_validation_scheme: legacy
|
||||
scrape_configs:
|
||||
- job_name: job1
|
||||
static_configs:
|
||||
- targets: ["localhost:9090"]
|
||||
`,
|
||||
targets: []model.LabelSet{{model.AddressLabel: "localhost:9090"}},
|
||||
},
|
||||
{
|
||||
name: "labelkeep",
|
||||
cfgText: `
|
||||
global:
|
||||
metric_name_validation_scheme: legacy
|
||||
scrape_configs:
|
||||
- job_name: job1
|
||||
static_configs:
|
||||
- targets: ["localhost:9090"]
|
||||
relabel_configs:
|
||||
- regex: 'foo'
|
||||
action: labelkeep
|
||||
`,
|
||||
targets: []model.LabelSet{{model.AddressLabel: "localhost:9090"}},
|
||||
shouldDropTarget: true,
|
||||
},
|
||||
{
|
||||
name: "labeldrop",
|
||||
cfgText: `
|
||||
global:
|
||||
metric_name_validation_scheme: legacy
|
||||
scrape_configs:
|
||||
- job_name: job1
|
||||
static_configs:
|
||||
- targets: ["localhost:9090"]
|
||||
relabel_configs:
|
||||
- regex: '__address__'
|
||||
action: labeldrop
|
||||
`,
|
||||
targets: []model.LabelSet{{model.AddressLabel: "localhost:9090"}},
|
||||
shouldDropTarget: true,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
config := loadConfiguration(t, tt.cfgText)
|
||||
lb := labels.NewBuilder(labels.EmptyLabels())
|
||||
targets, failures := TargetsFromGroup(&targetgroup.Group{Targets: tt.targets}, config.ScrapeConfigs[0], nil, lb)
|
||||
|
||||
if tt.shouldDropTarget {
|
||||
require.Len(t, failures, 1)
|
||||
require.EqualError(t, failures[0], "instance 0 in group : no address")
|
||||
require.Empty(t, targets)
|
||||
} else {
|
||||
require.Empty(t, failures)
|
||||
require.Len(t, targets, 1)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkTargetsFromGroup(b *testing.B) {
|
||||
// Simulate Kubernetes service-discovery and use subset of rules from typical Prometheus config.
|
||||
cfgText := `
|
||||
|
|
Loading…
Reference in New Issue