48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|