Alerting: Fix TestIntegration_GetAlertRulesForScheduling to make sure rules are created in different org (#69088)

make sure rules are created in different org
This commit is contained in:
Yuri Tseretyan 2023-05-25 13:51:38 -04:00 committed by GitHub
parent 1eed40fcf6
commit b57ef1f2c7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 11 deletions

View File

@ -140,6 +140,21 @@ func WithOrgID(orgId int64) AlertRuleMutator {
}
}
func WithUniqueOrgID() AlertRuleMutator {
orgs := map[int64]struct{}{}
return func(rule *AlertRule) {
var orgID int64
for {
orgID = rand.Int63()
if _, ok := orgs[orgID]; !ok {
break
}
}
orgs[orgID] = struct{}{}
rule.OrgID = orgID
}
}
func WithNamespace(namespace *folder.Folder) AlertRuleMutator {
return func(rule *AlertRule) {
rule.NamespaceUID = namespace.UID

View File

@ -38,7 +38,7 @@ func TestIntegrationUpdateAlertRules(t *testing.T) {
}
t.Run("should increase version", func(t *testing.T) {
rule := createRule(t, store)
rule := createRule(t, store, nil)
newRule := models.CopyRule(rule)
newRule.Title = util.GenerateShortUID()
err := store.UpdateAlertRules(context.Background(), []models.UpdateRule{{
@ -60,7 +60,7 @@ func TestIntegrationUpdateAlertRules(t *testing.T) {
})
t.Run("should fail due to optimistic locking if version does not match", func(t *testing.T) {
rule := createRule(t, store)
rule := createRule(t, store, nil)
rule.Version-- // simulate version discrepancy
newRule := models.CopyRule(rule)
@ -88,15 +88,14 @@ func TestIntegration_GetAlertRulesForScheduling(t *testing.T) {
sqlStore := db.InitTestDB(t)
store := &DBstore{
SQLStore: sqlStore,
Cfg: setting.UnifiedAlertingSettings{
BaseInterval: time.Duration(rand.Int63n(100)) * time.Second,
},
SQLStore: sqlStore,
Cfg: cfg.UnifiedAlerting,
FolderService: setupFolderService(t, sqlStore, cfg),
}
rule1 := createRule(t, store)
rule2 := createRule(t, store)
generator := models.AlertRuleGen(withIntervalMatching(store.Cfg.BaseInterval), models.WithUniqueID(), models.WithUniqueOrgID())
rule1 := createRule(t, store, generator)
rule2 := createRule(t, store, generator)
tc := []struct {
name string
@ -182,7 +181,7 @@ func TestIntegration_CountAlertRules(t *testing.T) {
sqlStore := db.InitTestDB(t)
cfg := setting.NewCfg()
store := &DBstore{SQLStore: sqlStore, FolderService: setupFolderService(t, sqlStore, cfg)}
rule := createRule(t, store)
rule := createRule(t, store, nil)
tests := map[string]struct {
query *models.CountAlertRulesQuery
@ -220,9 +219,12 @@ func TestIntegration_CountAlertRules(t *testing.T) {
}
}
func createRule(t *testing.T, store *DBstore) *models.AlertRule {
func createRule(t *testing.T, store *DBstore, generate func() *models.AlertRule) *models.AlertRule {
t.Helper()
rule := models.AlertRuleGen(withIntervalMatching(store.Cfg.BaseInterval), models.WithUniqueID())()
if generate == nil {
generate = models.AlertRuleGen(withIntervalMatching(store.Cfg.BaseInterval), models.WithUniqueID())
}
rule := generate()
createFolder(t, store, rule.NamespaceUID, rule.Title, rule.OrgID)
err := store.SQLStore.WithDbSession(context.Background(), func(sess *db.Session) error {
_, err := sess.Table(models.AlertRule{}).InsertOne(rule)