mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
database/sql: add Pinger interface to driver Conn
Change-Id: If6eb3a7c9ad48a517e584567b1003479c1df6cca Reviewed-on: https://go-review.googlesource.com/32136 Reviewed-by: Daniel Theophanes <kardianos@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
398e861d97
commit
4b90b7a28a
3 changed files with 73 additions and 6 deletions
|
|
@ -2581,6 +2581,50 @@ func TestBadDriver(t *testing.T) {
|
|||
db.Exec("ignored")
|
||||
}
|
||||
|
||||
type pingDriver struct {
|
||||
fails bool
|
||||
}
|
||||
|
||||
type pingConn struct {
|
||||
badConn
|
||||
driver *pingDriver
|
||||
}
|
||||
|
||||
var pingError = errors.New("Ping failed")
|
||||
|
||||
func (pc pingConn) Ping(ctx context.Context) error {
|
||||
if pc.driver.fails {
|
||||
return pingError
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
var _ driver.Pinger = pingConn{}
|
||||
|
||||
func (pd *pingDriver) Open(name string) (driver.Conn, error) {
|
||||
return pingConn{driver: pd}, nil
|
||||
}
|
||||
|
||||
func TestPing(t *testing.T) {
|
||||
driver := &pingDriver{}
|
||||
Register("ping", driver)
|
||||
|
||||
db, err := Open("ping", "ignored")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if err := db.Ping(); err != nil {
|
||||
t.Errorf("err was %#v, expected nil", err)
|
||||
return
|
||||
}
|
||||
|
||||
driver.fails = true
|
||||
if err := db.Ping(); err != pingError {
|
||||
t.Errorf("err was %#v, expected pingError", err)
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkConcurrentDBExec(b *testing.B) {
|
||||
b.ReportAllocs()
|
||||
ct := new(concurrentDBExecTest)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue