mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			69 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			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
 | |
| }
 |