Alerting: Add keepFiringFor and missing_series_evals_to_resolve to file provisioning (#109699)

This commit is contained in:
Alexander Akhmetov
2025-08-14 22:19:43 +02:00
committed by GitHub
parent 03811b26a0
commit 17444fdc0d
5 changed files with 57 additions and 16 deletions
@@ -1028,6 +1028,15 @@ func TestIntegrationExportFileProvision(t *testing.T) {
require.Equal(t, http.StatusOK, status)
require.Greater(t, len(data), 0)
t.Run("provisioned alert rules should have proper data", func(t *testing.T) {
provisionedRule, status, _ := apiClient.GetProvisioningAlertRule(t, "my_id_1")
require.Equal(t, http.StatusOK, status)
require.Equal(t, model.Duration(time.Second*120), provisionedRule.KeepFiringFor)
require.NotNil(t, provisionedRule.MissingSeriesEvalsToResolve)
require.Equal(t, int64(3), *provisionedRule.MissingSeriesEvalsToResolve)
})
t.Run("exported alert rules should escape $ characters", func(t *testing.T) {
// call export endpoint
status, exportRaw := apiClient.ExportRulesWithStatus(t, &definitions.AlertRulesExportParameters{
@@ -62,6 +62,10 @@ groups:
execErrState: Alerting
# <duration, required> for how long should the alert fire before alerting
for: 60s
# <duration> for how long the alert should keep firing after condition stops being true
keepFiringFor: 120s
# <int> number of evaluation intervals required to resolve alert when data is missing
missing_series_evals_to_resolve: 3
# <map<string, string>> a map of strings to pass around any data
annotations:
some_key: some_value
+8
View File
@@ -1487,6 +1487,14 @@ func createUser(t *testing.T, db db.DB, cfg *setting.Cfg, cmd user.CreateUserCom
return u.ID
}
func (a apiClient) GetProvisioningAlertRule(t *testing.T, ruleUID string) (apimodels.ProvisionedAlertRule, int, string) {
t.Helper()
req, err := http.NewRequest(http.MethodGet, fmt.Sprintf("%s/api/v1/provisioning/alert-rules/%s", a.url, ruleUID), nil)
require.NoError(t, err)
return sendRequestJSON[apimodels.ProvisionedAlertRule](t, req, http.StatusOK)
}
func (a apiClient) GetProvisioningAlertRuleExport(t *testing.T, ruleUID string, params *apimodels.ExportQueryParams) (int, string) {
t.Helper()
u, err := url.Parse(fmt.Sprintf("%s/api/v1/provisioning/alert-rules/%s/export", a.url, ruleUID))