diff options
| author | Daniel Theophanes <kardianos@gmail.com> | 2020-03-18 10:03:51 -0700 |
|---|---|---|
| committer | Daniel Theophanes <kardianos@gmail.com> | 2020-03-29 02:01:34 +0000 |
| commit | 5aef51a729f428bfd4b2c28fd2ba7950660608e0 (patch) | |
| tree | b54659cae5f7ff946328b2bb9d2bb200b2f8d1ae /src/database/sql/sql_test.go | |
| parent | 2ba00e47545406b3dd11436e3f1acf841d4932c6 (diff) | |
| download | go-5aef51a729f428bfd4b2c28fd2ba7950660608e0.tar.xz | |
database/sql: add test for Conn.Validator interface
This addresses comments made by Russ after
https://golang.org/cl/174122 was merged. It addes a test
for the connection validator and renames the interface to just
"Validator".
Change-Id: Iea53e9b250c9be2e86e9b75906e7353e26437c5c
Reviewed-on: https://go-review.googlesource.com/c/go/+/223963
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
Diffstat (limited to 'src/database/sql/sql_test.go')
| -rw-r--r-- | src/database/sql/sql_test.go | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/database/sql/sql_test.go b/src/database/sql/sql_test.go index 0fc994d0a1..f08eba93b3 100644 --- a/src/database/sql/sql_test.go +++ b/src/database/sql/sql_test.go @@ -1543,6 +1543,37 @@ func TestConnTx(t *testing.T) { } } +// TestConnIsValid verifies that a database connection that should be discarded, +// is actually discarded and does not re-enter the connection pool. +// If the IsValid method from *fakeConn is removed, this test will fail. +func TestConnIsValid(t *testing.T) { + db := newTestDB(t, "people") + defer closeDB(t, db) + + db.SetMaxOpenConns(1) + + ctx := context.Background() + + c, err := db.Conn(ctx) + if err != nil { + t.Fatal(err) + } + + err = c.Raw(func(raw interface{}) error { + dc := raw.(*fakeConn) + dc.stickyBad = true + return nil + }) + if err != nil { + t.Fatal(err) + } + c.Close() + + if len(db.freeConn) > 0 && db.freeConn[0].ci.(*fakeConn).stickyBad { + t.Fatal("bad connection returned to pool; expected bad connection to be discarded") + } +} + // Tests fix for issue 2542, that we release a lock when querying on // a closed connection. func TestIssue2542Deadlock(t *testing.T) { |
