pkg/names: test namespaced external metrics selectors

This commit is contained in:
paulfantom 2019-05-17 15:18:44 +02:00
parent 486324753e
commit e84becd7ac
No known key found for this signature in database
GPG key ID: 12AE0185401674E7

View file

@ -34,7 +34,7 @@ type resourceConverterMock struct {
// ResourcesForSeries is a mock that returns a single group resource, // ResourcesForSeries is a mock that returns a single group resource,
// namely the series as a resource itself. // namely the series as a resource itself.
func (rcm *resourceConverterMock) ResourcesForSeries(series prom.Series) (res []schema.GroupResource, namespaced bool) { func (rcm *resourceConverterMock) ResourcesForSeries(series prom.Series) (res []schema.GroupResource, namespaced bool) {
return []schema.GroupResource{{Resource: series.Name}}, false return []schema.GroupResource{{Resource: series.Name}}, rcm.namespaced
} }
// LabelForResource is a mock that returns the label name, // LabelForResource is a mock that returns the label name,
@ -236,8 +236,8 @@ func TestBuildSelector(t *testing.T) {
} }
func TestBuildExternalSelector(t *testing.T) { func TestBuildExternalSelector(t *testing.T) {
mustNewQuery := func(queryTemplate string, namespaced bool) MetricsQuery { mustNewQuery := func(queryTemplate string) MetricsQuery {
mq, err := NewMetricsQuery(queryTemplate, &resourceConverterMock{namespaced}) mq, err := NewMetricsQuery(queryTemplate, &resourceConverterMock{true})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -267,7 +267,7 @@ func TestBuildExternalSelector(t *testing.T) {
{ {
name: "series", name: "series",
mq: mustNewQuery(`series <<.Series>>`, false), mq: mustNewQuery(`series <<.Series>>`),
series: "foo", series: "foo",
metricSelector: labels.NewSelector(), metricSelector: labels.NewSelector(),
@ -279,7 +279,7 @@ func TestBuildExternalSelector(t *testing.T) {
{ {
name: "single GroupBy value", name: "single GroupBy value",
mq: mustNewQuery(`<<.GroupBy>>`, false), mq: mustNewQuery(`<<.GroupBy>>`),
groupBy: "foo", groupBy: "foo",
metricSelector: labels.NewSelector(), metricSelector: labels.NewSelector(),
@ -291,7 +291,7 @@ func TestBuildExternalSelector(t *testing.T) {
{ {
name: "multiple GroupBySlice values", name: "multiple GroupBySlice values",
mq: mustNewQuery(`<<.GroupBySlice>>`, false), mq: mustNewQuery(`<<.GroupBySlice>>`),
groupBySlice: []string{"foo", "bar"}, groupBySlice: []string{"foo", "bar"},
metricSelector: labels.NewSelector(), metricSelector: labels.NewSelector(),
@ -300,10 +300,23 @@ func TestBuildExternalSelector(t *testing.T) {
hasSelector("[foo bar]"), hasSelector("[foo bar]"),
), ),
}, },
{
name: "multiple GroupBySlice values with namespace",
mq: mustNewQuery(`<<index .LabelValuesByName "namespaces">> <<.GroupBySlice>>`),
namespace: "default",
groupBySlice: []string{"foo", "bar"},
metricSelector: labels.NewSelector(),
check: checks(
hasError(nil),
hasSelector("default [foo bar]"),
),
},
{ {
name: "single LabelMatchers value", name: "single LabelMatchers value",
mq: mustNewQuery(`<<.LabelMatchers>>`, false), mq: mustNewQuery(`<<.LabelMatchers>>`),
metricSelector: labels.NewSelector().Add( metricSelector: labels.NewSelector().Add(
*mustNewLabelRequirement("foo", selection.Equals, []string{"bar"}), *mustNewLabelRequirement("foo", selection.Equals, []string{"bar"}),
), ),
@ -313,10 +326,24 @@ func TestBuildExternalSelector(t *testing.T) {
hasSelector(`foo="bar"`), hasSelector(`foo="bar"`),
), ),
}, },
{
name: "single LabelMatchers value with namespace",
mq: mustNewQuery(`<<.LabelMatchers>>`),
namespace: "default",
metricSelector: labels.NewSelector().Add(
*mustNewLabelRequirement("foo", selection.Equals, []string{"bar"}),
),
check: checks(
hasError(nil),
hasSelector(`foo="bar",namespaces="default"`),
),
},
{ {
name: "multiple LabelMatchers value", name: "multiple LabelMatchers value",
mq: mustNewQuery(`<<.LabelMatchers>>`, false), mq: mustNewQuery(`<<.LabelMatchers>>`),
metricSelector: labels.NewSelector().Add( metricSelector: labels.NewSelector().Add(
*mustNewLabelRequirement("foo", selection.Equals, []string{"bar"}), *mustNewLabelRequirement("foo", selection.Equals, []string{"bar"}),
*mustNewLabelRequirement("qux", selection.In, []string{"bar", "baz"}), *mustNewLabelRequirement("qux", selection.In, []string{"bar", "baz"}),
@ -330,7 +357,7 @@ func TestBuildExternalSelector(t *testing.T) {
{ {
name: "single LabelValuesByName value", name: "single LabelValuesByName value",
mq: mustNewQuery(`<<.LabelValuesByName>>`, false), mq: mustNewQuery(`<<.LabelValuesByName>>`),
metricSelector: labels.NewSelector().Add( metricSelector: labels.NewSelector().Add(
*mustNewLabelRequirement("foo", selection.Equals, []string{"bar"}), *mustNewLabelRequirement("foo", selection.Equals, []string{"bar"}),
), ),
@ -343,7 +370,7 @@ func TestBuildExternalSelector(t *testing.T) {
{ {
name: "single LabelValuesByName with multiple selectors", name: "single LabelValuesByName with multiple selectors",
mq: mustNewQuery(`<<.LabelValuesByName>>`, false), mq: mustNewQuery(`<<.LabelValuesByName>>`),
metricSelector: labels.NewSelector().Add( metricSelector: labels.NewSelector().Add(
*mustNewLabelRequirement("foo", selection.In, []string{"bar", "baz"}), *mustNewLabelRequirement("foo", selection.In, []string{"bar", "baz"}),
), ),