diff options
Diffstat (limited to 'src/database/sql/sql_test.go')
| -rw-r--r-- | src/database/sql/sql_test.go | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/database/sql/sql_test.go b/src/database/sql/sql_test.go index 8c58723c03..2b3d76f513 100644 --- a/src/database/sql/sql_test.go +++ b/src/database/sql/sql_test.go @@ -9,6 +9,8 @@ import ( "database/sql/driver" "errors" "fmt" + "internal/race" + "internal/testenv" "math/rand" "reflect" "runtime" @@ -4583,3 +4585,35 @@ func BenchmarkManyConcurrentQueries(b *testing.B) { } }) } + +func TestGrabConnAllocs(t *testing.T) { + testenv.SkipIfOptimizationOff(t) + if race.Enabled { + t.Skip("skipping allocation test when using race detector") + } + c := new(Conn) + ctx := context.Background() + n := int(testing.AllocsPerRun(1000, func() { + _, release, err := c.grabConn(ctx) + if err != nil { + t.Fatal(err) + } + release(nil) + })) + if n > 0 { + t.Fatalf("Conn.grabConn allocated %v objects; want 0", n) + } +} + +func BenchmarkGrabConn(b *testing.B) { + b.ReportAllocs() + c := new(Conn) + ctx := context.Background() + for i := 0; i < b.N; i++ { + _, release, err := c.grabConn(ctx) + if err != nil { + b.Fatal(err) + } + release(nil) + } +} |
