mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Alerting: Fix duration calculation when testing a rule (#56616)
When testing a rule within the legacy alerting the `timeMs` field could sometimes show negative (and/or wrongly calculated) durations. This happens if the alert evaluation crosses a second boundary. This change uses the full timestamp to compute the eval duration.
This commit is contained in:
parent
0a183d1ba2
commit
95b9fa3346
@ -107,7 +107,7 @@ func (c *EvalContext) shouldUpdateAlertState() bool {
|
||||
|
||||
// GetDurationMs returns the duration of the alert evaluation.
|
||||
func (c *EvalContext) GetDurationMs() float64 {
|
||||
return float64(c.EndTime.Nanosecond()-c.StartTime.Nanosecond()) / float64(1000000)
|
||||
return float64(c.EndTime.Sub(c.StartTime).Nanoseconds()) / float64(time.Millisecond)
|
||||
}
|
||||
|
||||
// GetNotificationTitle returns the title of the alert rule including alert state.
|
||||
|
@ -404,3 +404,18 @@ func TestEvaluateNotificationTemplateFields(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetDurationFromEvalContext(t *testing.T) {
|
||||
startTime, err := time.Parse("2006-01-02 15:04:05.999999999 -0700 MST", "2022-10-03 11:33:14.438803 +0200 CEST")
|
||||
require.NoError(t, err)
|
||||
|
||||
endTime, err := time.Parse("2006-01-02 15:04:05.999999999 -0700 MST", "2022-10-03 11:33:15.291075 +0200 CEST")
|
||||
require.NoError(t, err)
|
||||
|
||||
evalContext := EvalContext{
|
||||
StartTime: startTime,
|
||||
EndTime: endTime,
|
||||
}
|
||||
|
||||
assert.Equal(t, float64(852.272), evalContext.GetDurationMs())
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user