Files
Felis/internal/store/sqldriver_test.go

53 lines
1.6 KiB
Go

package store
import "testing"
func TestConnConfigFillsSessionDefaults(t *testing.T) {
cfg, err := connConfig("postgres://felis:[email protected]:5432/felis?sslmode=disable")
if err != nil {
t.Fatal(err)
}
for k, want := range map[string]string{
"statement_timeout": "15s",
"idle_in_transaction_session_timeout": "60s",
} {
if got := cfg.RuntimeParams[k]; got != want {
t.Errorf("%s = %q, want %q", k, got, want)
}
}
}
func TestConnConfigKeepsTheDSNsOwnLimits(t *testing.T) {
cfg, err := connConfig("postgres://felis:[email protected]:5432/felis?statement_timeout=2500")
if err != nil {
t.Fatal(err)
}
if got := cfg.RuntimeParams["statement_timeout"]; got != "2500" {
t.Errorf("statement_timeout = %q, want the DSN's 2500", got)
}
if got := cfg.RuntimeParams["idle_in_transaction_session_timeout"]; got != "60s" {
t.Errorf("idle_in_transaction_session_timeout = %q, want the default 60s", got)
}
// Set through options=-c, it is left out: the server applies startup
// parameters after options, so a default sent beside it would win.
cfg, err = connConfig("postgres://felis:[email protected]:5432/felis?options=-c%20statement_timeout%3D0")
if err != nil {
t.Fatal(err)
}
if v, set := cfg.RuntimeParams["statement_timeout"]; set {
t.Errorf("statement_timeout = %q beside options=-c, want it unset", v)
}
}
func TestPoolIsBounded(t *testing.T) {
db, err := newPool("postgres://felis:[email protected]:1/felis")
if err != nil {
t.Fatal(err)
}
defer db.Close()
if got := db.Stats().MaxOpenConnections; got != MaxOpenConns || got == 0 {
t.Fatalf("MaxOpenConnections = %d, want %d", got, MaxOpenConns)
}
}