diff options
Diffstat (limited to 'src/database')
| -rw-r--r-- | src/database/sql/sql_test.go | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/src/database/sql/sql_test.go b/src/database/sql/sql_test.go index 44de5e70b8..0f5268054c 100644 --- a/src/database/sql/sql_test.go +++ b/src/database/sql/sql_test.go @@ -184,8 +184,21 @@ func closeDB(t testing.TB, db *DB) { } // Connections close asynchronously; wait for them to finish doing so. - synctest.Wait() - if numOpen := db.numOpenConns(); numOpen != 0 { + numOpenConns := func() int { + db.mu.Lock() + defer db.mu.Unlock() + return db.numOpen + } + if _, ok := t.(*testing.B); ok { + // We don't use synctest in benchmarks, so just poll. + deadline := time.Now().Add(5 * time.Second) + for numOpenConns() > 0 && time.Now().Before(deadline) { + time.Sleep(1 * time.Millisecond) + } + } else { + synctest.Wait() + } + if numOpen := numOpenConns(); numOpen != 0 { t.Fatalf("%d connections still open after closing DB", numOpen) } } @@ -213,13 +226,6 @@ func (db *DB) numFreeConns() int { return len(db.freeConn) } -func (db *DB) numOpenConns() int { - synctest.Wait() - db.mu.Lock() - defer db.mu.Unlock() - return db.numOpen -} - // clearAllConns closes all connections in db. func (db *DB) clearAllConns(t *testing.T) { db.SetMaxIdleConns(0) |
