aboutsummaryrefslogtreecommitdiff
path: root/internal/database/pool_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/database/pool_test.go')
-rw-r--r--internal/database/pool_test.go49
1 files changed, 49 insertions, 0 deletions
diff --git a/internal/database/pool_test.go b/internal/database/pool_test.go
new file mode 100644
index 00000000..06fa048d
--- /dev/null
+++ b/internal/database/pool_test.go
@@ -0,0 +1,49 @@
+// 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.
+ })
+}