mirror of https://github.com/grafana/grafana
Alerting: Fix stats that display alert count when using unified alerting (#64852)
* Alerting: Fix stats when using unified alertingpull/64906/head
parent
f4c62a5c5d
commit
02a8f62021
@ -0,0 +1,92 @@ |
|||||||
|
package stats |
||||||
|
|
||||||
|
import ( |
||||||
|
"context" |
||||||
|
"fmt" |
||||||
|
"net/http" |
||||||
|
"testing" |
||||||
|
|
||||||
|
"github.com/stretchr/testify/require" |
||||||
|
|
||||||
|
"github.com/grafana/grafana/pkg/services/org" |
||||||
|
"github.com/grafana/grafana/pkg/services/org/orgimpl" |
||||||
|
"github.com/grafana/grafana/pkg/services/quota/quotaimpl" |
||||||
|
"github.com/grafana/grafana/pkg/services/sqlstore" |
||||||
|
"github.com/grafana/grafana/pkg/services/supportbundles/supportbundlestest" |
||||||
|
"github.com/grafana/grafana/pkg/services/user" |
||||||
|
"github.com/grafana/grafana/pkg/services/user/userimpl" |
||||||
|
"github.com/grafana/grafana/pkg/tests/testinfra" |
||||||
|
) |
||||||
|
|
||||||
|
func TestIntegrationAdminStats(t *testing.T) { |
||||||
|
t.Run("with unified alerting enabled", func(t *testing.T) { |
||||||
|
url := grafanaSetup(t, testinfra.GrafanaOpts{ |
||||||
|
DisableLegacyAlerting: true, |
||||||
|
EnableUnifiedAlerting: true, |
||||||
|
AppModeProduction: true, |
||||||
|
}) |
||||||
|
|
||||||
|
// nolint:gosec
|
||||||
|
resp, err := http.Get(url) |
||||||
|
defer func() { |
||||||
|
_ = resp.Body.Close() |
||||||
|
}() |
||||||
|
require.NoError(t, err) |
||||||
|
require.Equal(t, http.StatusOK, resp.StatusCode) |
||||||
|
}) |
||||||
|
|
||||||
|
t.Run("with legacy alerting enabled", func(t *testing.T) { |
||||||
|
url := grafanaSetup(t, testinfra.GrafanaOpts{ |
||||||
|
DisableLegacyAlerting: false, |
||||||
|
EnableUnifiedAlerting: false, |
||||||
|
AppModeProduction: true, |
||||||
|
}) |
||||||
|
|
||||||
|
// nolint:gosec
|
||||||
|
resp, err := http.Get(url) |
||||||
|
defer func() { |
||||||
|
_ = resp.Body.Close() |
||||||
|
}() |
||||||
|
require.NoError(t, err) |
||||||
|
require.Equal(t, http.StatusOK, resp.StatusCode) |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// grafanaSetup creates the grafana server, user and returns the URL with credentials of the api/admin/stats endpoint.
|
||||||
|
func grafanaSetup(t *testing.T, opts testinfra.GrafanaOpts) string { |
||||||
|
t.Helper() |
||||||
|
|
||||||
|
testinfra.SQLiteIntegrationTest(t) |
||||||
|
|
||||||
|
// Setup Grafana and its Database
|
||||||
|
dir, path := testinfra.CreateGrafDir(t, opts) |
||||||
|
|
||||||
|
grafanaListedAddr, store := testinfra.StartGrafana(t, dir, path) |
||||||
|
|
||||||
|
// Create a user to make authenticated requests
|
||||||
|
createUser(t, store, user.CreateUserCommand{ |
||||||
|
DefaultOrgRole: string(org.RoleAdmin), |
||||||
|
Login: "grafana", |
||||||
|
Password: "password", |
||||||
|
IsAdmin: true, |
||||||
|
}) |
||||||
|
|
||||||
|
return fmt.Sprintf("http://%s:%s@%s/api/admin/stats", "grafana", "password", grafanaListedAddr) |
||||||
|
} |
||||||
|
|
||||||
|
func createUser(t *testing.T, store *sqlstore.SQLStore, cmd user.CreateUserCommand) int64 { |
||||||
|
t.Helper() |
||||||
|
|
||||||
|
store.Cfg.AutoAssignOrg = true |
||||||
|
store.Cfg.AutoAssignOrgId = 1 |
||||||
|
|
||||||
|
quotaService := quotaimpl.ProvideService(store, store.Cfg) |
||||||
|
orgService, err := orgimpl.ProvideService(store, store.Cfg, quotaService) |
||||||
|
require.NoError(t, err) |
||||||
|
usrSvc, err := userimpl.ProvideService(store, orgService, store.Cfg, nil, nil, quotaService, supportbundlestest.NewFakeBundleService()) |
||||||
|
require.NoError(t, err) |
||||||
|
|
||||||
|
u, err := usrSvc.Create(context.Background(), &cmd) |
||||||
|
require.NoError(t, err) |
||||||
|
return u.ID |
||||||
|
} |
Loading…
Reference in new issue