diff --git a/pkg/api/dashboard_test.go b/pkg/api/dashboard_test.go index 2e8f4fb1cf0..3462187fca8 100644 --- a/pkg/api/dashboard_test.go +++ b/pkg/api/dashboard_test.go @@ -87,37 +87,9 @@ type testState struct { dashQueries []*models.GetDashboardQuery } -type usageStatsMock struct { - t *testing.T - metricsFuncs []usagestats.MetricsFunc -} - -func (usm *usageStatsMock) RegisterMetricsFunc(fn usagestats.MetricsFunc) { - usm.metricsFuncs = append(usm.metricsFuncs, fn) -} - -func (usm *usageStatsMock) GetUsageReport(_ context.Context) (usagestats.Report, error) { - all := make(map[string]interface{}) - for _, fn := range usm.metricsFuncs { - fnMetrics, err := fn() - require.NoError(usm.t, err) - - for name, value := range fnMetrics { - all[name] = value - } - } - return usagestats.Report{Metrics: all}, nil -} - -func (usm *usageStatsMock) ShouldBeReported(_ string) bool { - return true -} - -func (usm *usageStatsMock) RegisterSendReportCallback(_ usagestats.SendReportCallbackFunc) {} - func newTestLive(t *testing.T) *live.GrafanaLive { cfg := &setting.Cfg{AppURL: "http://localhost:3000/"} - gLive, err := live.ProvideService(nil, cfg, routing.NewRouteRegister(), nil, nil, nil, nil, sqlstore.InitTestDB(t), &usageStatsMock{t: t}) + gLive, err := live.ProvideService(nil, cfg, routing.NewRouteRegister(), nil, nil, nil, nil, sqlstore.InitTestDB(t), &usagestats.UsageStatsMock{T: t}) require.NoError(t, err) return gLive } diff --git a/pkg/infra/usagestats/mock.go b/pkg/infra/usagestats/mock.go new file mode 100644 index 00000000000..fcc0c2c15a5 --- /dev/null +++ b/pkg/infra/usagestats/mock.go @@ -0,0 +1,36 @@ +package usagestats + +import ( + "context" + "testing" + + "github.com/stretchr/testify/require" +) + +type UsageStatsMock struct { + T testing.TB + metricsFuncs []MetricsFunc +} + +func (usm *UsageStatsMock) RegisterMetricsFunc(fn MetricsFunc) { + usm.metricsFuncs = append(usm.metricsFuncs, fn) +} + +func (usm *UsageStatsMock) GetUsageReport(_ context.Context) (Report, error) { + all := make(map[string]interface{}) + for _, fn := range usm.metricsFuncs { + fnMetrics, err := fn() + require.NoError(usm.T, err) + + for name, value := range fnMetrics { + all[name] = value + } + } + return Report{Metrics: all}, nil +} + +func (usm *UsageStatsMock) ShouldBeReported(_ string) bool { + return true +} + +func (usm *UsageStatsMock) RegisterSendReportCallback(_ SendReportCallbackFunc) {} diff --git a/pkg/services/accesscontrol/ossaccesscontrol/ossaccesscontrol_test.go b/pkg/services/accesscontrol/ossaccesscontrol/ossaccesscontrol_test.go index 8eea5ce0619..ee3a8827105 100644 --- a/pkg/services/accesscontrol/ossaccesscontrol/ossaccesscontrol_test.go +++ b/pkg/services/accesscontrol/ossaccesscontrol/ossaccesscontrol_test.go @@ -19,7 +19,7 @@ func setupTestEnv(t testing.TB) *OSSAccessControlService { cfg := setting.NewCfg() cfg.FeatureToggles = map[string]bool{"accesscontrol": true} - ac := ProvideService(cfg, &usageStatsMock{metricsFuncs: make([]usagestats.MetricsFunc, 0)}) + ac := ProvideService(cfg, &usagestats.UsageStatsMock{T: t}) return ac } @@ -45,34 +45,6 @@ func removeRoleHelper(role string) { } } -type usageStatsMock struct { - t *testing.T - metricsFuncs []usagestats.MetricsFunc -} - -func (usm *usageStatsMock) RegisterMetricsFunc(fn usagestats.MetricsFunc) { - usm.metricsFuncs = append(usm.metricsFuncs, fn) -} - -func (usm *usageStatsMock) GetUsageReport(_ context.Context) (usagestats.Report, error) { - all := make(map[string]interface{}) - for _, fn := range usm.metricsFuncs { - fnMetrics, err := fn() - require.NoError(usm.t, err) - - for name, value := range fnMetrics { - all[name] = value - } - } - return usagestats.Report{Metrics: all}, nil -} - -func (usm *usageStatsMock) ShouldBeReported(_ string) bool { - return true -} - -func (usm *usageStatsMock) RegisterSendReportCallback(_ usagestats.SendReportCallbackFunc) {} - type evaluatingPermissionsTestCase struct { desc string user userTestCase @@ -164,7 +136,7 @@ func TestUsageMetrics(t *testing.T) { cfg.FeatureToggles = map[string]bool{"accesscontrol": true} } - s := ProvideService(cfg, &usageStatsMock{t: t, metricsFuncs: make([]usagestats.MetricsFunc, 0)}) + s := ProvideService(cfg, &usagestats.UsageStatsMock{T: t}) report, err := s.UsageStats.GetUsageReport(context.Background()) assert.Nil(t, err) @@ -279,7 +251,7 @@ func TestOSSAccessControlService_RegisterFixedRole(t *testing.T) { t.Run(tc.name, func(t *testing.T) { ac := &OSSAccessControlService{ Cfg: setting.NewCfg(), - UsageStats: &usageStatsMock{t: t, metricsFuncs: make([]usagestats.MetricsFunc, 0)}, + UsageStats: &usagestats.UsageStatsMock{T: t}, Log: log.New("accesscontrol-test"), } @@ -398,7 +370,7 @@ func TestOSSAccessControlService_DeclareFixedRoles(t *testing.T) { t.Run(tt.name, func(t *testing.T) { ac := &OSSAccessControlService{ Cfg: setting.NewCfg(), - UsageStats: &usageStatsMock{t: t, metricsFuncs: make([]usagestats.MetricsFunc, 0)}, + UsageStats: &usagestats.UsageStatsMock{T: t}, Log: log.New("accesscontrol-test"), registrations: accesscontrol.RegistrationList{}, } @@ -484,7 +456,7 @@ func TestOSSAccessControlService_RegisterFixedRoles(t *testing.T) { // Setup ac := &OSSAccessControlService{ Cfg: setting.NewCfg(), - UsageStats: &usageStatsMock{t: t, metricsFuncs: make([]usagestats.MetricsFunc, 0)}, + UsageStats: &usagestats.UsageStatsMock{T: t}, Log: log.New("accesscontrol-test"), registrations: accesscontrol.RegistrationList{}, } diff --git a/pkg/services/alerting/engine_integration_test.go b/pkg/services/alerting/engine_integration_test.go index 83872961321..c01563299ee 100644 --- a/pkg/services/alerting/engine_integration_test.go +++ b/pkg/services/alerting/engine_integration_test.go @@ -12,13 +12,15 @@ import ( "testing" "time" + "github.com/grafana/grafana/pkg/infra/usagestats" + "github.com/grafana/grafana/pkg/setting" . "github.com/smartystreets/goconvey/convey" ) func TestEngineTimeouts(t *testing.T) { Convey("Alerting engine timeout tests", t, func() { - usMock := &usageStatsMock{t: t} + usMock := &usagestats.UsageStatsMock{T: t} engine := ProvideAlertEngine(nil, nil, nil, nil, usMock, setting.NewCfg()) setting.AlertingNotificationTimeout = 30 * time.Second setting.AlertingMaxAttempts = 3 diff --git a/pkg/services/alerting/engine_test.go b/pkg/services/alerting/engine_test.go index 592282bfba7..3a87f616d41 100644 --- a/pkg/services/alerting/engine_test.go +++ b/pkg/services/alerting/engine_test.go @@ -13,7 +13,6 @@ import ( "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/setting" . "github.com/smartystreets/goconvey/convey" - "github.com/stretchr/testify/require" ) type FakeEvalHandler struct { @@ -41,38 +40,10 @@ func (handler *FakeResultHandler) handle(evalContext *EvalContext) error { return nil } -type usageStatsMock struct { - t *testing.T - metricsFuncs []usagestats.MetricsFunc -} - -func (usm *usageStatsMock) RegisterMetricsFunc(fn usagestats.MetricsFunc) { - usm.metricsFuncs = append(usm.metricsFuncs, fn) -} - -func (usm *usageStatsMock) GetUsageReport(_ context.Context) (usagestats.Report, error) { - all := make(map[string]interface{}) - for _, fn := range usm.metricsFuncs { - fnMetrics, err := fn() - require.NoError(usm.t, err) - - for name, value := range fnMetrics { - all[name] = value - } - } - return usagestats.Report{Metrics: all}, nil -} - -func (usm *usageStatsMock) ShouldBeReported(_ string) bool { - return true -} - -func (usm *usageStatsMock) RegisterSendReportCallback(_ usagestats.SendReportCallbackFunc) {} - func TestEngineProcessJob(t *testing.T) { Convey("Alerting engine job processing", t, func() { bus := bus.New() - usMock := &usageStatsMock{t: t} + usMock := &usagestats.UsageStatsMock{T: t} engine := ProvideAlertEngine(nil, bus, nil, nil, usMock, setting.NewCfg()) setting.AlertingEvaluationTimeout = 30 * time.Second setting.AlertingNotificationTimeout = 30 * time.Second