Skip to content

Commit

Permalink
Add other matchtype testcase
Browse files Browse the repository at this point in the history
Signed-off-by: Saswata Mukherjee <saswataminsta@yahoo.com>
  • Loading branch information
saswatamcode committed Feb 3, 2022
1 parent 2120a1c commit 9e25ab2
Show file tree
Hide file tree
Showing 3 changed files with 111 additions and 2 deletions.
2 changes: 1 addition & 1 deletion pkg/api/query/v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -788,7 +788,7 @@ func NewRulesHandler(client rules.UnaryClient, enablePartialResponse bool) func(
}

if err := r.ParseForm(); err != nil {
return nil, nil, &api.ApiError{Typ: api.ErrorInternal, Err: errors.Errorf("error parsing request form='%v'", typeParam)}
return nil, nil, &api.ApiError{Typ: api.ErrorInternal, Err: errors.Errorf("error parsing request form='%v'", MatcherParam)}
}

// TODO(bwplotka): Allow exactly the same functionality as query API: passing replica, dedup and partial response as HTTP params as well.
Expand Down
2 changes: 1 addition & 1 deletion pkg/rules/rules.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ func (rr *GRPCClient) Rules(ctx context.Context, req *rulespb.RulesRequest) (*ru

// filterRules filters rules in a group according to given matcherSets.
func filterRules(ruleGroups []*rulespb.RuleGroup, matcherSets [][]*labels.Matcher) []*rulespb.RuleGroup {
if len(matcherSets) == 0 || len(ruleGroups) == 0 {
if len(matcherSets) == 0 {
return ruleGroups
}

Expand Down
109 changes: 109 additions & 0 deletions pkg/rules/rules_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1307,6 +1307,115 @@ func TestFilterRules(t *testing.T) {
},
},
},
{
name: "multiple group with templated labels and non templated matcher",
matcherSets: [][]*labels.Matcher{{&labels.Matcher{Name: "templatedlabel", Value: "foo", Type: labels.MatchEqual}}},
groups: []*rulespb.RuleGroup{
{
Name: "a",
Rules: []*rulespb.Rule{
rulespb.NewAlertingRule(&rulespb.Alert{
Name: "a1a",
Labels: labelpb.ZLabelSet{Labels: []labelpb.ZLabel{
{Name: "templatedlabel", Value: "{{ $externalURL }}"},
}},
}),
},
},
{
Name: "b",
Rules: []*rulespb.Rule{
rulespb.NewAlertingRule(&rulespb.Alert{
Name: "a1b",
Labels: labelpb.ZLabelSet{Labels: []labelpb.ZLabel{
{Name: "templated", Value: "{{ $externalURL }}"},
}},
}),
},
},
},
want: []*rulespb.RuleGroup{
{
Name: "a",
Rules: []*rulespb.Rule{},
},
{
Name: "b",
Rules: []*rulespb.Rule{},
},
},
},
{
name: "multiple group with regex matcher",
matcherSets: [][]*labels.Matcher{{labels.MustNewMatcher(labels.MatchRegexp, "label", "f.*")}},
groups: []*rulespb.RuleGroup{
{
Name: "a",
Rules: []*rulespb.Rule{
rulespb.NewAlertingRule(&rulespb.Alert{
Name: "a1a",
Labels: labelpb.ZLabelSet{Labels: []labelpb.ZLabel{
{Name: "label", Value: "foo"},
}},
}),
rulespb.NewRecordingRule(&rulespb.RecordingRule{
Name: "r1a", Labels: labelpb.ZLabelSet{Labels: []labelpb.ZLabel{
{Name: "label", Value: "foo"},
}},
}),
rulespb.NewRecordingRule(&rulespb.RecordingRule{
Name: "r1b", Labels: labelpb.ZLabelSet{Labels: []labelpb.ZLabel{
{Name: "otherlabel", Value: "bar"},
}},
}),
},
},
{
Name: "b",
Rules: []*rulespb.Rule{
rulespb.NewAlertingRule(&rulespb.Alert{
Name: "a1b",
Labels: labelpb.ZLabelSet{Labels: []labelpb.ZLabel{
{Name: "some", Value: "label"},
}},
}),
rulespb.NewRecordingRule(&rulespb.RecordingRule{
Name: "r1b", Labels: labelpb.ZLabelSet{Labels: []labelpb.ZLabel{
{Name: "label", Value: "foo"},
}},
}),
},
},
},
want: []*rulespb.RuleGroup{
{
Name: "a",
Rules: []*rulespb.Rule{
rulespb.NewAlertingRule(&rulespb.Alert{
Name: "a1a",
Labels: labelpb.ZLabelSet{Labels: []labelpb.ZLabel{
{Name: "label", Value: "foo"},
}},
}),
rulespb.NewRecordingRule(&rulespb.RecordingRule{
Name: "r1a", Labels: labelpb.ZLabelSet{Labels: []labelpb.ZLabel{
{Name: "label", Value: "foo"},
}},
}),
},
},
{
Name: "b",
Rules: []*rulespb.Rule{
rulespb.NewRecordingRule(&rulespb.RecordingRule{
Name: "r1b", Labels: labelpb.ZLabelSet{Labels: []labelpb.ZLabel{
{Name: "label", Value: "foo"},
}},
}),
},
},
},
},
} {
t.Run(tc.name, func(t *testing.T) {
testutil.Equals(t, tc.want, filterRules(tc.groups, tc.matcherSets))
Expand Down

0 comments on commit 9e25ab2

Please sign in to comment.