mirror of
https://github.com/prometheus/prometheus.git
synced 2025-01-13 06:47:28 -08:00
Add tests
Signed-off-by: Goutham Veeramachaneni <cs14btech11014@iith.ac.in>
This commit is contained in:
parent
a48a018368
commit
2d1e92513b
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
6
pkg/rulefmt/testdata/bad_expr.bad.yaml
vendored
Normal file
6
pkg/rulefmt/testdata/bad_expr.bad.yaml
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
Version: 1
|
||||
Groups:
|
||||
- name: yolo
|
||||
rules:
|
||||
- record: yolo
|
||||
expr: rate(hi)
|
4
pkg/rulefmt/testdata/duplicate_grp.bad.yaml
vendored
Normal file
4
pkg/rulefmt/testdata/duplicate_grp.bad.yaml
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
Version: 1
|
||||
Groups:
|
||||
- name: yolo
|
||||
- name: yolo
|
5
pkg/rulefmt/testdata/no_rec_alert.bad.yaml
vendored
Normal file
5
pkg/rulefmt/testdata/no_rec_alert.bad.yaml
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
Version: 1
|
||||
Groups:
|
||||
- name: yolo
|
||||
rules:
|
||||
- expr: 1
|
5
pkg/rulefmt/testdata/noexpr.bad.yaml
vendored
Normal file
5
pkg/rulefmt/testdata/noexpr.bad.yaml
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
Version: 1
|
||||
Groups:
|
||||
- name: yolo
|
||||
rules:
|
||||
- record: ylo
|
2
pkg/rulefmt/testdata/noversion.bad.yaml
vendored
Normal file
2
pkg/rulefmt/testdata/noversion.bad.yaml
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
Groups:
|
||||
- name: yolo
|
7
pkg/rulefmt/testdata/record_and_alert.bad.yaml
vendored
Normal file
7
pkg/rulefmt/testdata/record_and_alert.bad.yaml
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
Version: 1
|
||||
Groups:
|
||||
- name: yolo
|
||||
rules:
|
||||
- record: Hi
|
||||
alert: Hello
|
||||
expr: 1
|
2
pkg/rulefmt/testdata/test.yaml
vendored
2
pkg/rulefmt/testdata/test.yaml
vendored
|
@ -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…
Reference in a new issue