Alerting: Update Alert Rule to use int64 for MissingSeriesEvalsToResolve (#109306)
This commit is contained in:
@@ -304,7 +304,7 @@ type AlertRule struct {
|
||||
// required before resolving an alert state (a dimension) when data is missing.
|
||||
// If nil, alerts resolve after 2 missing evaluation intervals
|
||||
// (i.e., resolution occurs during the second evaluation where data is absent).
|
||||
MissingSeriesEvalsToResolve *int
|
||||
MissingSeriesEvalsToResolve *int64
|
||||
}
|
||||
|
||||
type AlertRuleMetadata struct {
|
||||
@@ -598,7 +598,7 @@ func (alertRule *AlertRule) GetGroupKey() AlertRuleGroupKey {
|
||||
// to wait before resolving an alert rule instance when its data is missing.
|
||||
// If not configured, it returns the default value (2), which means the alert
|
||||
// resolves after missing for two evaluation intervals.
|
||||
func (alertRule *AlertRule) GetMissingSeriesEvalsToResolve() int {
|
||||
func (alertRule *AlertRule) GetMissingSeriesEvalsToResolve() int64 {
|
||||
if alertRule.MissingSeriesEvalsToResolve == nil {
|
||||
return 2 // default value
|
||||
}
|
||||
|
||||
@@ -554,8 +554,8 @@ func TestDiff(t *testing.T) {
|
||||
if rule1.MissingSeriesEvalsToResolve != rule2.MissingSeriesEvalsToResolve {
|
||||
diff := diffs.GetDiffsForField("MissingSeriesEvalsToResolve")
|
||||
assert.Len(t, diff, 1)
|
||||
assert.Equal(t, *rule1.MissingSeriesEvalsToResolve, int(diff[0].Left.Int()))
|
||||
assert.Equal(t, *rule2.MissingSeriesEvalsToResolve, int(diff[0].Right.Int()))
|
||||
assert.Equal(t, *rule1.MissingSeriesEvalsToResolve, diff[0].Left.Int())
|
||||
assert.Equal(t, *rule2.MissingSeriesEvalsToResolve, diff[0].Right.Int())
|
||||
difCnt++
|
||||
}
|
||||
|
||||
@@ -1001,14 +1001,14 @@ func TestAlertRuleGetMissingSeriesEvalsToResolve(t *testing.T) {
|
||||
t.Run("should return the default 2 if MissingSeriesEvalsToResolve is nil", func(t *testing.T) {
|
||||
rule := RuleGen.GenerateRef()
|
||||
rule.MissingSeriesEvalsToResolve = nil
|
||||
require.Equal(t, 2, rule.GetMissingSeriesEvalsToResolve())
|
||||
require.Equal(t, int64(2), rule.GetMissingSeriesEvalsToResolve())
|
||||
})
|
||||
|
||||
t.Run("should return the correct value", func(t *testing.T) {
|
||||
rule := RuleGen.With(
|
||||
RuleMuts.WithMissingSeriesEvalsToResolve(3),
|
||||
).GenerateRef()
|
||||
require.Equal(t, 3, rule.GetMissingSeriesEvalsToResolve())
|
||||
require.Equal(t, int64(3), rule.GetMissingSeriesEvalsToResolve())
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1113,7 +1113,7 @@ func TestValidateAlertRule(t *testing.T) {
|
||||
t.Run("missingSeriesEvalsToResolve", func(t *testing.T) {
|
||||
testCases := []struct {
|
||||
name string
|
||||
missingSeriesEvalsToResolve *int
|
||||
missingSeriesEvalsToResolve *int64
|
||||
expectedErrorContains string
|
||||
}{
|
||||
{
|
||||
@@ -1122,17 +1122,17 @@ func TestValidateAlertRule(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "should reject negative value",
|
||||
missingSeriesEvalsToResolve: util.Pointer(-1),
|
||||
missingSeriesEvalsToResolve: util.Pointer[int64](-1),
|
||||
expectedErrorContains: "field `missing_series_evals_to_resolve` must be greater than 0",
|
||||
},
|
||||
{
|
||||
name: "should reject 0",
|
||||
missingSeriesEvalsToResolve: util.Pointer(0),
|
||||
missingSeriesEvalsToResolve: util.Pointer[int64](0),
|
||||
expectedErrorContains: "field `missing_series_evals_to_resolve` must be greater than 0",
|
||||
},
|
||||
{
|
||||
name: "should accept positive value",
|
||||
missingSeriesEvalsToResolve: util.Pointer(2),
|
||||
missingSeriesEvalsToResolve: util.Pointer[int64](2),
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -128,7 +128,7 @@ func (g *AlertRuleGenerator) Generate() AlertRule {
|
||||
Labels: labels,
|
||||
NotificationSettings: ns,
|
||||
Metadata: GenerateMetadata(),
|
||||
MissingSeriesEvalsToResolve: util.Pointer(2),
|
||||
MissingSeriesEvalsToResolve: util.Pointer[int64](2),
|
||||
}
|
||||
|
||||
for _, mutator := range g.mutators {
|
||||
@@ -514,12 +514,12 @@ func (a *AlertRuleMutators) WithSameGroup() AlertRuleMutator {
|
||||
}
|
||||
}
|
||||
|
||||
func (a *AlertRuleMutators) WithMissingSeriesEvalsToResolve(timesOfInterval int) AlertRuleMutator {
|
||||
func (a *AlertRuleMutators) WithMissingSeriesEvalsToResolve(timesOfInterval int64) AlertRuleMutator {
|
||||
return func(rule *AlertRule) {
|
||||
if timesOfInterval <= 0 {
|
||||
panic("timesOfInterval must be greater than 0")
|
||||
}
|
||||
rule.MissingSeriesEvalsToResolve = util.Pointer(timesOfInterval)
|
||||
rule.MissingSeriesEvalsToResolve = util.Pointer[int64](timesOfInterval)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user