Skip to content

Commit 690868c

Browse files
committed
Added firingEvalution to Rule test
1 parent f46c4c8 commit 690868c

File tree

4 files changed

+17
-2
lines changed

4 files changed

+17
-2
lines changed

pkg/api/alerting.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,8 @@ func AlertTest(c *middleware.Context, dto dtos.AlertTestCommand) Response {
119119
res := backendCmd.Result
120120

121121
dtoRes := &dtos.AlertTestResult{
122-
Firing: res.Firing,
122+
Firing: res.Firing,
123+
FiringEval: res.FiringEval,
123124
}
124125

125126
if res.Error != nil {

pkg/api/dtos/alerting.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ type AlertTestCommand struct {
3636

3737
type AlertTestResult struct {
3838
Firing bool `json:"firing"`
39+
FiringEval string `json:"firingEvaluation"`
3940
TimeMs string `json:"timeMs"`
4041
Error string `json:"error,omitempty"`
4142
EvalMatches []*EvalMatch `json:"matches,omitempty"`

pkg/services/alerting/eval_context.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ type EvalContext struct {
1818
Logs []*ResultLogEntry
1919
Error error
2020
Description string
21+
FiringEval string
2122
StartTime time.Time
2223
EndTime time.Time
2324
Rule *Rule

pkg/services/alerting/eval_handler.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package alerting
22

33
import (
4+
"strconv"
45
"time"
56

67
"github.com/grafana/grafana/pkg/log"
@@ -21,7 +22,9 @@ func NewEvalHandler() *DefaultEvalHandler {
2122

2223
func (e *DefaultEvalHandler) Eval(context *EvalContext) {
2324
firing := true
24-
for _, condition := range context.Rule.Conditions {
25+
firingEval := ""
26+
for i := 0; i < len(context.Rule.Conditions); i++ {
27+
condition := context.Rule.Conditions[i]
2528
cr, err := condition.Eval(context)
2629
if err != nil {
2730
context.Error = err
@@ -33,15 +36,24 @@ func (e *DefaultEvalHandler) Eval(context *EvalContext) {
3336
}
3437

3538
// calculating Firing based on operator
39+
operator := "AND"
3640
if cr.Operator == "or" {
3741
firing = firing || cr.Firing
42+
operator = "OR"
3843
} else {
3944
firing = firing && cr.Firing
4045
}
4146

47+
if i > 0 {
48+
firingEval = "[" + firingEval + " " + operator + " " + strconv.FormatBool(cr.Firing) + "]"
49+
} else {
50+
firingEval = strconv.FormatBool(firing)
51+
}
52+
4253
context.EvalMatches = append(context.EvalMatches, cr.EvalMatches...)
4354
}
4455

56+
context.FiringEval = firingEval + " = " + strconv.FormatBool(firing)
4557
context.Firing = firing
4658
context.EndTime = time.Now()
4759
elapsedTime := context.EndTime.Sub(context.StartTime) / time.Millisecond

0 commit comments

Comments
 (0)