Browse Source

moved benchmarks to driver_test.go, lazy initialization

Arne Hormann 12 years ago
parent
commit
515e1e230c
2 changed files with 84 additions and 85 deletions
  1. 0 85
      benchmark_test.go
  2. 84 0
      driver_test.go

+ 0 - 85
benchmark_test.go

@@ -1,85 +0,0 @@
-package mysql
-
-import (
-	"database/sql"
-	"strings"
-	"testing"
-)
-
-var (
-	// dsn from driver_test.go
-	sample   = []byte(strings.Repeat("0123456789abcdef", 1024*1024))
-	min, max = 16, len(sample)
-)
-
-func BenchmarkRoundtripText(b *testing.B) {
-	db, err := sql.Open("mysql", dsn)
-	if err != nil {
-		b.Fatalf("crashed")
-	}
-	defer db.Close()
-	var result string
-	for i := 0; i < b.N; i++ {
-		length := min + i
-		if length > max {
-			length = max
-		}
-		test := string(sample[0:length])
-		rows, err := db.Query("SELECT \"" + test + "\"")
-		if err != nil {
-			b.Fatalf("crashed")
-		}
-		if !rows.Next() {
-			rows.Close()
-			b.Fatalf("crashed")
-		}
-		err = rows.Scan(&result)
-		if err != nil {
-			rows.Close()
-			b.Fatalf("crashed")
-		}
-		if result != test {
-			rows.Close()
-			b.Errorf("mismatch")
-		}
-		rows.Close()
-	}
-}
-
-func BenchmarkRoundtripPrepared(b *testing.B) {
-	db, err := sql.Open("mysql", dsn)
-	if err != nil {
-		b.Fatalf("crashed")
-	}
-	defer db.Close()
-	var result string
-	stmt, err := db.Prepare("SELECT ?")
-	if err != nil {
-		b.Fatalf("crashed")
-	}
-	for i := 0; i < b.N; i++ {
-		length := min + i
-		if length > max {
-			length = max
-		}
-		test := string(sample[0:length])
-		rows, err := stmt.Query(test)
-		if err != nil {
-			b.Fatalf("crashed")
-		}
-		if !rows.Next() {
-			rows.Close()
-			b.Fatalf("crashed")
-		}
-		err = rows.Scan(&result)
-		if err != nil {
-			rows.Close()
-			b.Fatalf("crashed")
-		}
-		if result != test {
-			rows.Close()
-			b.Errorf("mismatch")
-		}
-		rows.Close()
-	}
-}

+ 84 - 0
driver_test.go

@@ -1032,3 +1032,87 @@ func TestConcurrent(t *testing.T) {
 		dbt.Logf("Reached %d concurrent connections \r\n", max)
 	})
 }
+
+// BENCHMARKS
+var sample []byte
+
+func initBenchmarks() ([]byte, int, int) {
+	if sample == nil {
+		sample = []byte(strings.Repeat("0123456789abcdef", 1024*1024))
+	}
+	return sample, 16, len(sample)
+}
+
+func BenchmarkRoundtripText(b *testing.B) {
+	sample, min, max := initBenchmarks()
+	db, err := sql.Open("mysql", dsn)
+	if err != nil {
+		b.Fatalf("crashed")
+	}
+	defer db.Close()
+	var result string
+	for i := 0; i < b.N; i++ {
+		length := min + i
+		if length > max {
+			length = max
+		}
+		test := string(sample[0:length])
+		rows, err := db.Query("SELECT \"" + test + "\"")
+		if err != nil {
+			b.Fatalf("crashed")
+		}
+		if !rows.Next() {
+			rows.Close()
+			b.Fatalf("crashed")
+		}
+		err = rows.Scan(&result)
+		if err != nil {
+			rows.Close()
+			b.Fatalf("crashed")
+		}
+		if result != test {
+			rows.Close()
+			b.Errorf("mismatch")
+		}
+		rows.Close()
+	}
+}
+
+func BenchmarkRoundtripPrepared(b *testing.B) {
+	sample, min, max := initBenchmarks()
+	db, err := sql.Open("mysql", dsn)
+	if err != nil {
+		b.Fatalf("crashed")
+	}
+	defer db.Close()
+	var result string
+	stmt, err := db.Prepare("SELECT ?")
+	if err != nil {
+		b.Fatalf("crashed")
+	}
+	for i := 0; i < b.N; i++ {
+		length := min + i
+		if length > max {
+			length = max
+		}
+		test := string(sample[0:length])
+		rows, err := stmt.Query(test)
+		if err != nil {
+			b.Fatalf("crashed")
+		}
+		if !rows.Next() {
+			rows.Close()
+			b.Fatalf("crashed")
+		}
+		err = rows.Scan(&result)
+		if err != nil {
+			rows.Close()
+			b.Fatalf("crashed")
+		}
+		if result != test {
+			rows.Close()
+			b.Errorf("mismatch")
+		}
+		rows.Close()
+	}
+}