aboutsummaryrefslogtreecommitdiff
path: root/src/database/sql/sql_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/database/sql/sql_test.go')
-rw-r--r--src/database/sql/sql_test.go34
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)
+ }
+}