blob: 06fa048d26e1651a08419f48abd0ce1c988783b4 [file] [log] [blame]
// Copyright 2026 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package database
import (
"database/sql"
"testing"
"time"
)
func TestSetPoolSettings(t *testing.T) {
// We use an empty DSN which the driver might reject, but sql.Open does not
// actually connect or ping.
sdb, err := sql.Open("postgres", "postgres://localhost/test?sslmode=disable")
if err != nil {
t.Fatal(err)
}
defer sdb.Close()
db := New(sdb, "test")
t.Run("valid settings", func(t *testing.T) {
maxOpen := 42
maxIdle := 13
maxLifetime := 10 * time.Minute
maxIdleTime := 5 * time.Minute
db.SetPoolSettings(maxOpen, maxIdle, maxLifetime, maxIdleTime)
stats := db.Underlying().Stats()
if stats.MaxOpenConnections != maxOpen {
t.Errorf("got %d, want %d", stats.MaxOpenConnections, maxOpen)
}
})
t.Run("maxIdle > maxOpen", func(t *testing.T) {
maxOpen := 10
maxIdle := 20
maxLifetime := 10 * time.Minute
maxIdleTime := 5 * time.Minute
// This should log a warning and cap maxIdle to maxOpen.
db.SetPoolSettings(maxOpen, maxIdle, maxLifetime, maxIdleTime)
// We can't easily check internal sql.DB settings, but we verify it doesn't crash.
})
}