grafana/pkg/services/sqlstore/sqlstore_metrics_test.go
Dave Henderson 713075c494
Metrics: Fixed grafana_database_conn_* metrics, and added new go_sql_stats_* metrics as eventual replacement (#54405)
* metrics: Fix broken DBStats metrics

Signed-off-by: Dave Henderson <dave.henderson@grafana.com>

* Register the sqlstats metrics by default

Signed-off-by: Dave Henderson <dave.henderson@grafana.com>

Signed-off-by: Dave Henderson <dave.henderson@grafana.com>
2022-08-31 08:54:32 -04:00

69 lines
2.5 KiB
Go

package sqlstore
import (
"database/sql"
"strings"
"testing"
"time"
"github.com/dlmiddlecote/sqlstats"
"github.com/prometheus/client_golang/prometheus/testutil"
"github.com/stretchr/testify/require"
)
func TestSQLStore_Metrics(t *testing.T) {
stats := sql.DBStats{
MaxOpenConnections: 9,
OpenConnections: 8,
InUse: 4,
Idle: 4,
WaitCount: 5,
WaitDuration: 6 * time.Second,
MaxIdleClosed: 7,
MaxIdleTimeClosed: 8,
MaxLifetimeClosed: 9,
}
m := newSQLStoreMetrics(&fakeStatsGetter{stats: stats})
require.NoError(t, testutil.CollectAndCompare(m, strings.NewReader(`
# HELP grafana_database_conn_idle The number of idle connections
# TYPE grafana_database_conn_idle gauge
grafana_database_conn_idle 4
# HELP grafana_database_conn_in_use The number of connections currently in use
# TYPE grafana_database_conn_in_use gauge
grafana_database_conn_in_use 4
# HELP grafana_database_conn_max_idle_closed_seconds The total number of connections closed due to SetConnMaxIdleTime
# TYPE grafana_database_conn_max_idle_closed_seconds counter
grafana_database_conn_max_idle_closed_seconds 8
# HELP grafana_database_conn_max_idle_closed_total The total number of connections closed due to SetMaxIdleConns
# TYPE grafana_database_conn_max_idle_closed_total counter
grafana_database_conn_max_idle_closed_total 7
# HELP grafana_database_conn_max_lifetime_closed_total The total number of connections closed due to SetConnMaxLifetime
# TYPE grafana_database_conn_max_lifetime_closed_total counter
grafana_database_conn_max_lifetime_closed_total 9
# HELP grafana_database_conn_max_open Maximum number of open connections to the database
# TYPE grafana_database_conn_max_open gauge
grafana_database_conn_max_open 9
# HELP grafana_database_conn_open The number of established connections both in use and idle
# TYPE grafana_database_conn_open gauge
grafana_database_conn_open 8
# HELP grafana_database_conn_wait_count_total The total number of connections waited for
# TYPE grafana_database_conn_wait_count_total counter
grafana_database_conn_wait_count_total 5
# HELP grafana_database_conn_wait_duration_seconds The total time blocked waiting for a new connection
# TYPE grafana_database_conn_wait_duration_seconds counter
grafana_database_conn_wait_duration_seconds 6
`)))
}
type fakeStatsGetter struct {
stats sql.DBStats
}
var _ sqlstats.StatsGetter = (*fakeStatsGetter)(nil)
func (f *fakeStatsGetter) Stats() sql.DBStats {
return f.stats
}