Signed-off-by: Goutham Veeramachaneni <cs14btech11014@iith.ac.in>
pull/2842/head
Goutham Veeramachaneni 8 years ago
parent a48a018368
commit 2d1e92513b
No known key found for this signature in database
GPG Key ID: F1C217E8E9023CAD

@ -33,6 +33,10 @@ func (g *RuleGroups) Validate() (errs []error) {
set := map[string]struct{}{}
for _, g := range g.Groups {
if g.Name == "" {
errs = append(errs, errors.Errorf("Groupname should not be empty"))
}
if _, ok := set[g.Name]; ok {
errs = append(
errs,
@ -80,6 +84,7 @@ func (r *Rule) Validate() (errs []error) {
if r.Record == "" && r.Alert == "" {
errs = append(errs, errors.Errorf("one of 'record' or 'alert' must be set"))
}
if r.Expr == "" {
errs = append(errs, errors.Errorf("field 'expr' must be set in rule"))
} else if _, err := promql.ParseExpr(r.Expr); err != nil {

@ -1,6 +1,10 @@
package rulefmt
import "testing"
import (
"path/filepath"
"strings"
"testing"
)
func TestParseFileSuccess(t *testing.T) {
if _, errs := ParseFile("testdata/test.yaml"); len(errs) > 0 {
@ -10,3 +14,47 @@ func TestParseFileSuccess(t *testing.T) {
}
}
}
func TestParseFileFailure(t *testing.T) {
table := []struct {
filename string
errMsg string
}{
{
filename: "duplicate_grp.bad.yaml",
errMsg: "groupname: \"yolo\" is repeated in the same file",
},
{
filename: "noversion.bad.yaml",
errMsg: "invalid rule group version 0",
},
{
filename: "bad_expr.bad.yaml",
errMsg: "parse error",
},
{
filename: "record_and_alert.bad.yaml",
errMsg: "only one of 'record' and 'alert' must be set",
},
{
filename: "no_rec_alert.bad.yaml",
errMsg: "one of 'record' or 'alert' must be set",
},
{
filename: "noexpr.bad.yaml",
errMsg: "field 'expr' must be set in rule",
},
}
for _, c := range table {
_, errs := ParseFile(filepath.Join("testdata", c.filename))
if errs == nil {
t.Errorf("Expected error parsing %s but got none", c.filename)
continue
}
if !strings.Contains(errs[0].Error(), c.errMsg) {
t.Errorf("Expected error for %s to contain %q but got: %s", c.filename, c.errMsg, errs)
}
}
}

@ -0,0 +1,6 @@
Version: 1
Groups:
- name: yolo
rules:
- record: yolo
expr: rate(hi)

@ -0,0 +1,4 @@
Version: 1
Groups:
- name: yolo
- name: yolo

@ -0,0 +1,5 @@
Version: 1
Groups:
- name: yolo
rules:
- expr: 1

@ -0,0 +1,5 @@
Version: 1
Groups:
- name: yolo
rules:
- record: ylo

@ -0,0 +1,2 @@
Groups:
- name: yolo

@ -0,0 +1,7 @@
Version: 1
Groups:
- name: yolo
rules:
- record: Hi
alert: Hello
expr: 1

@ -32,7 +32,7 @@ groups:
annotations:
description: "stuff's happening with {{ $.labels.service }}"
- name: my-group-name
- name: my-another-name
interval: 30s # defaults to global interval
rules:
- alert: HighErrors

Loading…
Cancel
Save