Alerting/Chore: Move tests from tests package (#34059)

Instead put in package folder but with package name suffixed with _test
This enables code coverage within the pkg while still allow the tests to operate from external to package perspective (only exported things).
This commit is contained in:
Kyle Brandt 2021-05-13 10:05:33 -04:00 committed by GitHub
parent 5e0e91cd9a
commit babb17afd6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 24 additions and 19 deletions

View File

@ -1,4 +1,4 @@
package tests
package schedule_test
import (
"context"
@ -12,6 +12,8 @@ import (
"github.com/google/go-cmp/cmp/cmpopts"
"github.com/grafana/grafana-plugin-sdk-go/data"
"github.com/grafana/grafana/pkg/services/ngalert/eval"
"github.com/grafana/grafana/pkg/services/ngalert/metrics"
"github.com/grafana/grafana/pkg/services/ngalert/tests"
"github.com/grafana/grafana/pkg/services/ngalert/state"
@ -27,6 +29,8 @@ import (
"github.com/benbjohnson/clock"
)
var nilMetrics = metrics.NewMetrics(nil)
type evalAppliedInfo struct {
alertDefKey models.AlertRuleKey
now time.Time
@ -34,9 +38,9 @@ type evalAppliedInfo struct {
func TestWarmStateCache(t *testing.T) {
evaluationTime, _ := time.Parse("2006-01-02", "2021-03-25")
dbstore := setupTestEnv(t, 1)
dbstore := tests.SetupTestEnv(t, 1)
rule := createTestAlertRule(t, dbstore, 600)
rule := tests.CreateTestAlertRule(t, dbstore, 600)
expectedEntries := []*state.State{
{
@ -119,15 +123,15 @@ func TestWarmStateCache(t *testing.T) {
}
func TestAlertingTicker(t *testing.T) {
dbstore := setupTestEnv(t, 1)
dbstore := tests.SetupTestEnv(t, 1)
t.Cleanup(registry.ClearOverrides)
alerts := make([]*models.AlertRule, 0)
// create alert rule with zero interval (should never run)
alerts = append(alerts, createTestAlertRule(t, dbstore, 0))
alerts = append(alerts, tests.CreateTestAlertRule(t, dbstore, 0))
// create alert rule with one second interval
alerts = append(alerts, createTestAlertRule(t, dbstore, 1))
alerts = append(alerts, tests.CreateTestAlertRule(t, dbstore, 1))
evalAppliedCh := make(chan evalAppliedInfo, len(alerts))
stopAppliedCh := make(chan models.AlertRuleKey, len(alerts))
@ -167,7 +171,7 @@ func TestAlertingTicker(t *testing.T) {
// change alert rule interval to three seconds
var threeSecInterval int64 = 3
alerts[0] = updateTestAlertRuleIntervalSeconds(t, dbstore, alerts[0], threeSecInterval)
alerts[0] = tests.UpdateTestAlertRuleIntervalSeconds(t, dbstore, alerts[0], threeSecInterval)
t.Logf("alert rule: %v interval reset to: %d", alerts[0].GetKey(), threeSecInterval)
expectedAlertRulesEvaluated = []models.AlertRuleKey{alerts[1].GetKey()}
@ -209,7 +213,7 @@ func TestAlertingTicker(t *testing.T) {
})
// create alert rule with one second interval
alerts = append(alerts, createTestAlertRule(t, dbstore, 1))
alerts = append(alerts, tests.CreateTestAlertRule(t, dbstore, 1))
expectedAlertRulesEvaluated = []models.AlertRuleKey{alerts[2].GetKey()}
t.Run(fmt.Sprintf("on 7th tick alert rules: %s should be evaluated", concatenate(expectedAlertRulesEvaluated)), func(t *testing.T) {

View File

@ -1,4 +1,4 @@
package tests
package state_test
import (
"testing"

View File

@ -1,6 +1,6 @@
// +build integration
package tests
package store_test
import (
"testing"
@ -9,6 +9,7 @@ import (
"github.com/grafana/grafana/pkg/registry"
"github.com/grafana/grafana/pkg/services/ngalert/models"
"github.com/grafana/grafana/pkg/services/ngalert/store"
"github.com/grafana/grafana/pkg/services/ngalert/tests"
"github.com/stretchr/testify/require"
)
@ -25,19 +26,19 @@ func mockTimeNow() {
}
func TestAlertInstanceOperations(t *testing.T) {
dbstore := setupTestEnv(t, baseIntervalSeconds)
dbstore := tests.SetupTestEnv(t, baseIntervalSeconds)
t.Cleanup(registry.ClearOverrides)
alertRule1 := createTestAlertRule(t, dbstore, 60)
alertRule1 := tests.CreateTestAlertRule(t, dbstore, 60)
orgID := alertRule1.OrgID
alertRule2 := createTestAlertRule(t, dbstore, 60)
alertRule2 := tests.CreateTestAlertRule(t, dbstore, 60)
require.Equal(t, orgID, alertRule2.OrgID)
alertRule3 := createTestAlertRule(t, dbstore, 60)
alertRule3 := tests.CreateTestAlertRule(t, dbstore, 60)
require.Equal(t, orgID, alertRule3.OrgID)
alertRule4 := createTestAlertRule(t, dbstore, 60)
alertRule4 := tests.CreateTestAlertRule(t, dbstore, 60)
require.Equal(t, orgID, alertRule4.OrgID)
t.Run("can save and read new alert instance", func(t *testing.T) {

View File

@ -24,8 +24,8 @@ import (
"github.com/stretchr/testify/require"
)
// setupTestEnv initializes a store to used by the tests.
func setupTestEnv(t *testing.T, baseIntervalSeconds int64) *store.DBstore {
// SetupTestEnv initializes a store to used by the tests.
func SetupTestEnv(t *testing.T, baseIntervalSeconds int64) *store.DBstore {
cfg := setting.NewCfg()
// AlertNG is disabled by default and only if it's enabled
// its database migrations run and the relative database tables are created
@ -65,7 +65,7 @@ func overrideAlertNGInRegistry(t *testing.T, cfg *setting.Cfg) ngalert.AlertNG {
}
// createTestAlertRule creates a dummy alert definition to be used by the tests.
func createTestAlertRule(t *testing.T, dbstore *store.DBstore, intervalSeconds int64) *models.AlertRule {
func CreateTestAlertRule(t *testing.T, dbstore *store.DBstore, intervalSeconds int64) *models.AlertRule {
d := rand.Intn(1000)
ruleGroup := fmt.Sprintf("ruleGroup-%d", d)
err := dbstore.UpdateRuleGroup(store.UpdateRuleGroupCmd{
@ -118,7 +118,7 @@ func createTestAlertRule(t *testing.T, dbstore *store.DBstore, intervalSeconds i
}
// updateTestAlertRule update a dummy alert definition to be used by the tests.
func updateTestAlertRuleIntervalSeconds(t *testing.T, dbstore *store.DBstore, existingRule *models.AlertRule, intervalSeconds int64) *models.AlertRule {
func UpdateTestAlertRuleIntervalSeconds(t *testing.T, dbstore *store.DBstore, existingRule *models.AlertRule, intervalSeconds int64) *models.AlertRule {
cmd := store.UpdateRuleGroupCmd{
OrgID: 1,
NamespaceUID: "namespace",