package metrics import ( "database/sql" "testing" "time" ) type fixedDBStats struct { stats sql.DBStats } func (s fixedDBStats) Stats() sql.DBStats { return s.stats } func TestDBPoolCollector(t *testing.T) { RegisterDBPool("test", fixedDBStats{stats: sql.DBStats{ MaxOpenConnections: 32, OpenConnections: 12, InUse: 7, Idle: 5, WaitCount: 9, WaitDuration: 1500 * time.Millisecond, }}) families, err := Registry.Gather() if err != nil { t.Fatal(err) } want := map[string]bool{ "im_db_pool_max_open_connections": false, "im_db_pool_open_connections": false, "im_db_pool_in_use_connections": false, "im_db_pool_idle_connections": false, "im_db_pool_wait_total": false, "im_db_pool_wait_duration_seconds_total": false, } for _, family := range families { if _, ok := want[family.GetName()]; ok { want[family.GetName()] = true } } for name, found := range want { if !found { t.Errorf("metric %s was not gathered", name) } } }