mirror of https://github.com/grafana/grafana.git
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:
parent
1eed40fcf6
commit
b57ef1f2c7
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue