Stats: Stop counting the same user multiple times (#26777)
* Stats: Cache based stats implementation * Stats: Correct logic and add larger scale test * Stats: linter * Stats: SQL implementation * Stats: cleanup SQL * Stats: Tab -> Spaces * Update pkg/services/sqlstore/stats.go Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com> * Stats: Quote 'user' table with dialect.Quote * Stats: Ensure test is run as integration test * Stats: Use boolean value ...because if (v) { true } else { false } is unnecessary at best. Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
This commit is contained in:
co-authored by
Sofia Papagiannaki
parent
09a1af3f91
commit
954a2811b3
@@ -11,60 +11,60 @@ import (
|
||||
)
|
||||
|
||||
func TestStatsDataAccess(t *testing.T) {
|
||||
t.Run("Testing Stats Data Access", func(t *testing.T) {
|
||||
InitTestDB(t)
|
||||
InitTestDB(t)
|
||||
populateDB(t)
|
||||
|
||||
t.Run("Get system stats should not results in error", func(t *testing.T) {
|
||||
populateDB(t)
|
||||
t.Run("Get system stats should not results in error", func(t *testing.T) {
|
||||
query := models.GetSystemStatsQuery{}
|
||||
err := GetSystemStats(&query)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, int64(3), query.Result.Users)
|
||||
assert.Equal(t, 0, query.Result.Editors)
|
||||
assert.Equal(t, 0, query.Result.Viewers)
|
||||
assert.Equal(t, 3, query.Result.Admins)
|
||||
})
|
||||
|
||||
query := models.GetSystemStatsQuery{}
|
||||
err := GetSystemStats(&query)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, int64(3), query.Result.Users)
|
||||
assert.Equal(t, 1, query.Result.Editors)
|
||||
assert.Equal(t, 1, query.Result.Viewers)
|
||||
assert.Equal(t, 3, query.Result.Admins)
|
||||
})
|
||||
t.Run("Get system user count stats should not results in error", func(t *testing.T) {
|
||||
query := models.GetSystemUserCountStatsQuery{}
|
||||
err := GetSystemUserCountStats(context.Background(), &query)
|
||||
assert.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("Get system user count stats should not results in error", func(t *testing.T) {
|
||||
query := models.GetSystemUserCountStatsQuery{}
|
||||
err := GetSystemUserCountStats(context.Background(), &query)
|
||||
assert.NoError(t, err)
|
||||
})
|
||||
t.Run("Get datasource stats should not results in error", func(t *testing.T) {
|
||||
query := models.GetDataSourceStatsQuery{}
|
||||
err := GetDataSourceStats(&query)
|
||||
assert.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("Get datasource stats should not results in error", func(t *testing.T) {
|
||||
query := models.GetDataSourceStatsQuery{}
|
||||
err := GetDataSourceStats(&query)
|
||||
assert.NoError(t, err)
|
||||
})
|
||||
t.Run("Get datasource access stats should not results in error", func(t *testing.T) {
|
||||
query := models.GetDataSourceAccessStatsQuery{}
|
||||
err := GetDataSourceAccessStats(&query)
|
||||
assert.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("Get datasource access stats should not results in error", func(t *testing.T) {
|
||||
query := models.GetDataSourceAccessStatsQuery{}
|
||||
err := GetDataSourceAccessStats(&query)
|
||||
assert.NoError(t, err)
|
||||
})
|
||||
t.Run("Get alert notifier stats should not results in error", func(t *testing.T) {
|
||||
query := models.GetAlertNotifierUsageStatsQuery{}
|
||||
err := GetAlertNotifiersUsageStats(context.Background(), &query)
|
||||
assert.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("Get alert notifier stats should not results in error", func(t *testing.T) {
|
||||
query := models.GetAlertNotifierUsageStatsQuery{}
|
||||
err := GetAlertNotifiersUsageStats(context.Background(), &query)
|
||||
assert.NoError(t, err)
|
||||
})
|
||||
t.Run("Get admin stats should not result in error", func(t *testing.T) {
|
||||
query := models.GetAdminStatsQuery{}
|
||||
err := GetAdminStats(&query)
|
||||
assert.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("Get admin stats should not result in error", func(t *testing.T) {
|
||||
query := models.GetAdminStatsQuery{}
|
||||
err := GetAdminStats(&query)
|
||||
assert.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("Get active user count stats should not result in error", func(t *testing.T) {
|
||||
query := models.GetActiveUserStatsQuery{}
|
||||
err := GetActiveUserStats(&query)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, int64(1), query.Result.ActiveUsers)
|
||||
assert.Equal(t, int64(1), query.Result.ActiveAdmins)
|
||||
assert.Equal(t, int64(0), query.Result.ActiveEditors)
|
||||
assert.Equal(t, int64(0), query.Result.ActiveViewers)
|
||||
})
|
||||
t.Run("Get active user count stats should not result in error", func(t *testing.T) {
|
||||
query := models.GetUserStatsQuery{
|
||||
MustUpdate: true,
|
||||
Active: true,
|
||||
}
|
||||
err := GetUserStats(&query)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, int64(1), query.Result.Users)
|
||||
assert.Equal(t, int64(1), query.Result.Admins)
|
||||
assert.Equal(t, int64(0), query.Result.Editors)
|
||||
assert.Equal(t, int64(0), query.Result.Viewers)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -127,4 +127,12 @@ func populateDB(t *testing.T) {
|
||||
}
|
||||
err = UpdateUserLastSeenAt(updateUserLastSeenAtCmd)
|
||||
require.NoError(t, err)
|
||||
|
||||
// force renewal of user stats
|
||||
query := models.GetUserStatsQuery{
|
||||
MustUpdate: true,
|
||||
Active: true,
|
||||
}
|
||||
err = GetUserStats(&query)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user