diff --git a/Makefile b/Makefile index 926c4a9df8e444869147e7c47fb5217567d87884..a02ce8f0301cc1fd7e1248d43251735aa6c6f390 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,13 @@ -SHELL := bash +SHELL := /bin/bash DB_HOST ?= 127.0.0.1 export DB_HOST test: - go test -v ./lib/... && \ - go test -v ./internal/... && \ - $(MAKE) test -C postgresql && \ - $(MAKE) test -C mysql && \ - $(MAKE) test -C sqlite && \ - $(MAKE) test -C ql && \ - $(MAKE) test -C mongo && \ + go test -v -bench=. ./lib/... && \ + go test -v -bench=. ./internal/... && \ + for ADAPTER in postgresql mysql sqlite ql mongo; do \ + $(MAKE) -C $$ADAPTER test; \ + done && \ go test -v diff --git a/internal/sqladapter/testing/adapter_benchmark.go.tpl b/internal/sqladapter/testing/adapter_benchmark.go.tpl deleted file mode 100644 index 0438aca16b1d75188eda7216c1b714c593631806..0000000000000000000000000000000000000000 --- a/internal/sqladapter/testing/adapter_benchmark.go.tpl +++ /dev/null @@ -1,860 +0,0 @@ -package ADAPTER - -import ( - "database/sql" - "fmt" - "math/rand" - "testing" - - "github.com/gocraft/dbr" - "upper.io/db.v2" - "upper.io/db.v2/lib/sqlbuilder" -) - -const ( - testRows = 1000 -) - -func updatedArtistN(i int) string { - return fmt.Sprintf("Updated Artist %d", i%testRows) -} - -func artistN(i int) string { - return fmt.Sprintf("Artist %d", i%testRows) -} - -func addFakeRowsAndDisconnect() error { - sess, err := connectAndAddFakeRows() - if err != nil { - return err - } - sess.Close() - return nil -} - -func connectAndAddFakeRows() (db.Database, error) { - sess := mustOpen() - - if err := sess.Collection("artist").Truncate(); err != nil { - return nil, err - } - - type valueT struct { - Name string `db:"name"` - } - - for i := 0; i < testRows; i++ { - value := valueT{artistN(i)} - if _, err := sess.Collection("artist").Insert(value); err != nil { - return nil, err - } - } - - return sess, nil -} - -func BenchmarkUpperInsert(b *testing.B) { - sess := mustOpen() - defer sess.Close() - - artist := sess.Collection("artist") - artist.Truncate() - - item := struct { - Name string `db:"name"` - }{"Hayao Miyazaki"} - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if _, err := artist.Insert(item); err != nil { - b.Fatal(err) - } - } -} - -func BenchmarkUpperInsertVariableArgs(b *testing.B) { - sess := mustOpen() - defer sess.Close() - - artist := sess.Collection("artist") - artist.Truncate() - - b.ResetTimer() - for i := 0; i < b.N; i++ { - item := struct { - Name string `db:"name"` - }{fmt.Sprintf("Hayao Miyazaki %d", rand.Int())} - if _, err := artist.Insert(item); err != nil { - b.Fatal(err) - } - } -} - -func BenchmarkUpperInsertTransaction(b *testing.B) { - sess := mustOpen() - defer sess.Close() - - tx, err := sess.NewTx() - if err != nil { - b.Fatal(err) - } - defer tx.Close() - - artist := tx.Collection("artist") - - if err = artist.Truncate(); err != nil { - b.Fatal(err) - } - - item := struct { - Name string `db:"name"` - }{"Hayao Miyazaki"} - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if _, err = artist.Insert(item); err != nil { - b.Fatal(err) - } - } - - if err = tx.Commit(); err != nil { - b.Fatal(err) - } -} - -func BenchmarkUpperInsertTransactionWithMap(b *testing.B) { - sess := mustOpen() - defer sess.Close() - - tx, err := sess.NewTx() - if err != nil { - b.Fatal(err) - } - defer tx.Close() - - artist := tx.Collection("artist") - - if err = artist.Truncate(); err != nil { - b.Fatal(err) - } - - item := map[string]string{ - "name": "Hayao Miyazaki", - } - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if _, err = artist.Insert(item); err != nil { - b.Fatal(err) - } - } - - if err = tx.Commit(); err != nil { - b.Fatal(err) - } -} - -func BenchmarkUpperFind(b *testing.B) { - sess, err := connectAndAddFakeRows() - if err != nil { - b.Fatal(err) - } - defer sess.Close() - - artist := sess.Collection("artist") - - type artistType struct { - Name string `db:"name"` - } - - var item artistType - - b.ResetTimer() - for i := 0; i < b.N; i++ { - res := artist.Find(db.Cond{"name": artistN(i)}) - if err = res.One(&item); err != nil { - b.Fatal(err) - } - } -} - -func BenchmarkUpperFindAll(b *testing.B) { - sess, err := connectAndAddFakeRows() - if err != nil { - b.Fatal(err) - } - defer sess.Close() - - artist := sess.Collection("artist") - - type artistType struct { - Name string `db:"name"` - } - - var items []artistType - - b.ResetTimer() - for i := 0; i < b.N; i++ { - res := artist.Find(db.Or( - db.Cond{"name": artistN(i)}, - db.Cond{"name": artistN(i + 1)}, - db.Cond{"name": artistN(i + 2)}, - )) - if err = res.All(&items); err != nil { - b.Fatal(err) - } - if len(items) != 3 { - b.Fatal("Expecting 3 results.") - } - } -} - -func BenchmarkUpperUpdate(b *testing.B) { - sess, err := connectAndAddFakeRows() - if err != nil { - b.Fatal(err) - } - defer sess.Close() - - artist := sess.Collection("artist") - - type artistType struct { - Name string `db:"name"` - } - - b.ResetTimer() - for i := 0; i < b.N; i++ { - newValue := artistType{ - Name: updatedArtistN(i), - } - res := artist.Find(db.Cond{"name": artistN(i)}) - if err = res.Update(newValue); err != nil { - b.Fatal(err) - } - } -} - -// BenchmarkUpperDelete benchmarks -func BenchmarkUpperDelete(b *testing.B) { - sess, err := connectAndAddFakeRows() - if err != nil { - b.Fatal(err) - } - defer sess.Close() - - artist := sess.Collection("artist") - - b.ResetTimer() - for i := 0; i < b.N; i++ { - res := artist.Find(db.Cond{"name": artistN(i)}) - if err = res.Delete(); err != nil { - b.Fatal(err) - } - } -} - -// BenchmarkUpperGetCollection -func BenchmarkUpperGetCollection(b *testing.B) { - sess, err := Open(settings) - if err != nil { - b.Fatal(err) - } - defer sess.Close() - - b.ResetTimer() - for i := 0; i < b.N; i++ { - sess.Collection("artist") - } -} - -func BenchmarkUpperCommitManyTransactions(b *testing.B) { - sess, err := Open(settings) - if err != nil { - b.Fatal(err) - } - defer sess.Close() - - b.ResetTimer() - - for i := 0; i < b.N; i++ { - var tx sqlbuilder.Tx - if tx, err = sess.NewTx(); err != nil { - b.Fatal(err) - } - - artist := tx.Collection("artist") - - if err = artist.Truncate(); err != nil { - b.Fatal(err) - } - - item := struct { - Name string `db:"name"` - }{"Hayao Miyazaki"} - - if _, err = artist.Insert(item); err != nil { - b.Fatal(err) - } - - if err = tx.Commit(); err != nil { - b.Fatal(err) - } - - tx.Close() - } -} - -// BenchmarkUpperRollbackManyTransactions benchmarks -func BenchmarkUpperRollbackManyTransactions(b *testing.B) { - sess, err := Open(settings) - if err != nil { - b.Fatal(err) - } - defer sess.Close() - - b.ResetTimer() - - for i := 0; i < b.N; i++ { - var tx sqlbuilder.Tx - if tx, err = sess.NewTx(); err != nil { - b.Fatal(err) - } - - artist := tx.Collection("artist") - - if err = artist.Truncate(); err != nil { - b.Fatal(err) - } - - item := struct { - Name string `db:"name"` - }{"Hayao Miyazaki"} - - if _, err = artist.Insert(item); err != nil { - b.Fatal(err) - } - - if err = tx.Rollback(); err != nil { - b.Fatal(err) - } - - tx.Close() - } -} - -// BenchmarkSQLInsert benchmarks raw INSERT SQL queries without using prepared -// statements nor arguments. -func BenchmarkSQLInsert(b *testing.B) { - var err error - var sess db.Database - - if sess, err = Open(settings); err != nil { - b.Fatal(err) - } - - defer sess.Close() - - driver := sess.Driver().(*sql.DB) - - if _, err = driver.Exec(truncateArtist); err != nil { - b.Fatal(err) - } - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if _, err = driver.Exec(insertHayaoMiyazaki); err != nil { - b.Fatal(err) - } - } -} - -func BenchmarkDBRInsert(b *testing.B) { - var err error - - conn, err := dbr.Open(sqlDriver, settings.String(), nil) - if err != nil { - b.Fatal(err) - } - - sess := conn.NewSession(nil) - - defer sess.Close() - - if _, err = sess.Exec(truncateArtist); err != nil { - b.Fatal(err) - } - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if _, err = sess.Exec(insertHayaoMiyazaki); err != nil { - b.Fatal(err) - } - } -} - -func BenchmarkSQLInsertWithArgs(b *testing.B) { - var err error - var sess db.Database - - if sess, err = Open(settings); err != nil { - b.Fatal(err) - } - - defer sess.Close() - - driver := sess.Driver().(*sql.DB) - - if _, err = driver.Exec(truncateArtist); err != nil { - b.Fatal(err) - } - - args := []interface{}{ - "Hayao Miyazaki", - } - - var rows *sql.Rows - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if rows, err = driver.Query(insertIntoArtistWithPlaceholderReturningID, args...); err != nil { - b.Fatal(err) - } - rows.Close() - } -} - -func BenchmarkDBRInsertWithArgs(b *testing.B) { - var err error - - conn, err := dbr.Open(sqlDriver, settings.String(), nil) - if err != nil { - b.Fatal(err) - } - - sess := conn.NewSession(nil) - - defer sess.Close() - - if _, err = sess.Exec(truncateArtist); err != nil { - b.Fatal(err) - } - - args := []interface{}{ - "Hayao Miyazaki", - } - - var rows *sql.Rows - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if rows, err = sess.Query(insertIntoArtistWithPlaceholderReturningID, args...); err != nil { - b.Fatal(err) - } - rows.Close() - } -} - -func BenchmarkSQLPreparedInsertNoArguments(b *testing.B) { - var err error - var sess db.Database - - if sess, err = Open(settings); err != nil { - b.Fatal(err) - } - - defer sess.Close() - - driver := sess.Driver().(*sql.DB) - - if _, err = driver.Exec(truncateArtist); err != nil { - b.Fatal(err) - } - - stmt, err := driver.Prepare(insertHayaoMiyazaki) - if err != nil { - b.Fatal(err) - } - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if _, err = stmt.Exec(); err != nil { - b.Fatal(err) - } - } -} - -func BenchmarkSQLPreparedInsertWithArguments(b *testing.B) { - sess := mustOpen() - defer sess.Close() - - driver := sess.Driver().(*sql.DB) - - if _, err := driver.Exec(truncateArtist); err != nil { - b.Fatal(err) - } - - stmt, err := driver.Prepare(insertIntoArtistWithPlaceholderReturningID) - - if err != nil { - b.Fatal(err) - } - - args := []interface{}{ - "Hayao Miyazaki", - } - - var rows *sql.Rows - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if rows, err = stmt.Query(args...); err != nil { - b.Fatal(err) - } - rows.Close() - } -} - -func BenchmarkDBRPreparedInsertWithArguments(b *testing.B) { - var err error - - conn, err := dbr.Open(sqlDriver, settings.String(), nil) - if err != nil { - b.Fatal(err) - } - - sess := conn.NewSession(nil) - - defer sess.Close() - - if _, err = sess.Exec(truncateArtist); err != nil { - b.Fatal(err) - } - - stmt, err := sess.Prepare(insertIntoArtistWithPlaceholderReturningID) - - if err != nil { - b.Fatal(err) - } - - args := []interface{}{ - "Hayao Miyazaki", - } - - var rows *sql.Rows - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if rows, err = stmt.Query(args...); err != nil { - b.Fatal(err) - } - rows.Close() - } -} - -func BenchmarkSQLPreparedInsertWithVariableArgs(b *testing.B) { - sess := mustOpen() - defer sess.Close() - - driver := sess.Driver().(*sql.DB) - - if _, err := driver.Exec(truncateArtist); err != nil { - b.Fatal(err) - } - - stmt, err := driver.Prepare(insertIntoArtistWithPlaceholderReturningID) - - if err != nil { - b.Fatal(err) - } - - var rows *sql.Rows - - b.ResetTimer() - for i := 0; i < b.N; i++ { - args := []interface{}{ - fmt.Sprintf("Hayao Miyazaki %d", rand.Int()), - } - if rows, err = stmt.Query(args...); err != nil { - b.Fatal(err) - } - rows.Close() - } -} - -func BenchmarkDBRPreparedInsertWithVariableArgs(b *testing.B) { - var err error - - conn, err := dbr.Open(sqlDriver, settings.String(), nil) - if err != nil { - b.Fatal(err) - } - - sess := conn.NewSession(nil) - - defer sess.Close() - - if _, err = sess.Exec(truncateArtist); err != nil { - b.Fatal(err) - } - - stmt, err := sess.Prepare(insertIntoArtistWithPlaceholderReturningID) - - if err != nil { - b.Fatal(err) - } - - var rows *sql.Rows - - b.ResetTimer() - for i := 0; i < b.N; i++ { - args := []interface{}{ - fmt.Sprintf("Hayao Miyazaki %d", rand.Int()), - } - if rows, err = stmt.Query(args...); err != nil { - b.Fatal(err) - } - rows.Close() - } -} - -func BenchmarkSQLPreparedInsertTransactionWithArgs(b *testing.B) { - var err error - var sess db.Database - var tx *sql.Tx - - if sess, err = Open(settings); err != nil { - b.Fatal(err) - } - - defer sess.Close() - - driver := sess.Driver().(*sql.DB) - - if tx, err = driver.Begin(); err != nil { - b.Fatal(err) - } - - if _, err = tx.Exec(truncateArtist); err != nil { - b.Fatal(err) - } - - stmt, err := tx.Prepare(insertIntoArtistWithPlaceholderReturningID) - if err != nil { - b.Fatal(err) - } - - args := []interface{}{ - "Hayao Miyazaki", - } - - var rows *sql.Rows - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if rows, err = stmt.Query(args...); err != nil { - b.Fatal(err) - } - rows.Close() - } - - if err = tx.Commit(); err != nil { - b.Fatal(err) - } -} - -// BenchmarkSQLSelect benchmarks SQL SELECT queries. -func BenchmarkSQLSelect(b *testing.B) { - var err error - var sess db.Database - - if sess, err = connectAndAddFakeRows(); err != nil { - b.Fatal(err) - } - - defer sess.Close() - - driver := sess.Driver().(*sql.DB) - - var res *sql.Rows - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if res, err = driver.Query(selectFromArtistWhereName, artistN(i)); err != nil { - b.Fatal(err) - } - res.Close() - } -} - -func BenchmarkDBRSelect(b *testing.B) { - var err error - - if err := addFakeRowsAndDisconnect(); err != nil { - b.Fatal(err) - } - - conn, err := dbr.Open(sqlDriver, settings.String(), nil) - if err != nil { - b.Fatal(err) - } - - sess := conn.NewSession(nil) - - defer sess.Close() - - var res *sql.Rows - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if res, err = sess.Query(selectFromArtistWhereName, artistN(i)); err != nil { - b.Fatal(err) - } - res.Close() - } -} - -func BenchmarkSQLPreparedSelect(b *testing.B) { - var err error - var sess db.Database - - if sess, err = connectAndAddFakeRows(); err != nil { - b.Fatal(err) - } - defer sess.Close() - - driver := sess.Driver().(*sql.DB) - - stmt, err := driver.Prepare(selectFromArtistWhereName) - if err != nil { - b.Fatal(err) - } - - var res *sql.Rows - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if res, err = stmt.Query(artistN(i)); err != nil { - b.Fatal(err) - } - res.Close() - } -} - -func BenchmarkDBRPreparedSelect(b *testing.B) { - var err error - - if err := addFakeRowsAndDisconnect(); err != nil { - b.Fatal(err) - } - - conn, err := dbr.Open(sqlDriver, settings.String(), nil) - if err != nil { - b.Fatal(err) - } - - sess := conn.NewSession(nil) - - stmt, err := sess.Prepare(selectFromArtistWhereName) - if err != nil { - b.Fatal(err) - } - - var res *sql.Rows - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if res, err = stmt.Query(artistN(i)); err != nil { - b.Fatal(err) - } - res.Close() - } -} - -func BenchmarkSQLUpdate(b *testing.B) { - var err error - var sess db.Database - - if sess, err = connectAndAddFakeRows(); err != nil { - b.Fatal(err) - } - - defer sess.Close() - - driver := sess.Driver().(*sql.DB) - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if _, err = driver.Exec(updateArtistWhereName, updatedArtistN(i), artistN(i)); err != nil { - b.Fatal(err) - } - } -} - -func BenchmarkSQLPreparedUpdate(b *testing.B) { - var err error - var sess db.Database - - if sess, err = connectAndAddFakeRows(); err != nil { - b.Fatal(err) - } - - defer sess.Close() - - driver := sess.Driver().(*sql.DB) - - stmt, err := driver.Prepare(updateArtistWhereName) - if err != nil { - b.Fatal(err) - } - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if _, err = stmt.Exec(updatedArtistN(i), artistN(i)); err != nil { - b.Fatal(err) - } - } -} - -func BenchmarkSQLDelete(b *testing.B) { - var err error - var sess db.Database - - if sess, err = connectAndAddFakeRows(); err != nil { - b.Fatal(err) - } - - defer sess.Close() - - driver := sess.Driver().(*sql.DB) - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if _, err = driver.Exec(deleteArtistWhereName, artistN(i)); err != nil { - b.Fatal(err) - } - } -} - -func BenchmarkSQLPreparedDelete(b *testing.B) { - var err error - var sess db.Database - - if sess, err = connectAndAddFakeRows(); err != nil { - b.Fatal(err) - } - defer sess.Close() - - driver := sess.Driver().(*sql.DB) - - stmt, err := driver.Prepare(deleteArtistWhereName) - if err != nil { - b.Fatal(err) - } - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if _, err = stmt.Exec(artistN(i)); err != nil { - b.Fatal(err) - } - } -} diff --git a/mongo/Makefile b/mongo/Makefile index d72cc3ed9b12aa2171a8f2d61dd01f391d5d4e87..ea4ecd53a9b02338524a0afe652b8f52d280ac17 100644 --- a/mongo/Makefile +++ b/mongo/Makefile @@ -6,8 +6,6 @@ DB_NAME ?= upperio_tests DB_PASSWORD ?= upperio_secret DB_PORT ?= 27017 -BENCHTIME ?= 10s - export DB_HOST export DB_PORT export DB_NAME @@ -32,6 +30,3 @@ reset-db: require-client test: reset-db go test -v - -bench: reset-db - go test -v -test.bench=. -test.benchtime=$(BENCHTIME) -benchmem diff --git a/mongo/benchmark_test.go b/mongo/benchmark_test.go deleted file mode 100644 index e86c3d44ed13f33b49018b88067c119ed920b103..0000000000000000000000000000000000000000 --- a/mongo/benchmark_test.go +++ /dev/null @@ -1,367 +0,0 @@ -package mongo - -import ( - "fmt" - "math/rand" - "testing" - - "gopkg.in/mgo.v2" - "gopkg.in/mgo.v2/bson" - - "upper.io/db.v2" -) - -const ( - testRows = 1000 -) - -func updatedArtistN(i int) string { - return fmt.Sprintf("Updated Artist %d", i%testRows) -} - -func artistN(i int) string { - return fmt.Sprintf("Artist %d", i%testRows) -} - -func connectAndAddFakeRows() (db.Database, error) { - var err error - var sess db.Database - - if sess, err = Open(settings); err != nil { - return nil, err - } - - driver := sess.Driver().(*mgo.Session) - - if err = driver.DB("").C("artist").DropCollection(); err != nil { - return nil, err - } - - for i := 0; i < testRows; i++ { - if err = driver.DB("").C("artist").Insert(bson.M{"name": artistN(i)}); err != nil { - return nil, err - } - } - - return sess, nil -} - -func BenchmarkMgoInsert(b *testing.B) { - var err error - var sess db.Database - - if sess, err = Open(settings); err != nil { - b.Fatal(err) - } - - defer sess.Close() - - driver := sess.Driver().(*mgo.Session) - - if err = driver.DB("").C("artist").DropCollection(); err != nil { - b.Fatal(err) - } - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if err = driver.DB("").C("artist").Insert(bson.M{"name": "Hayao Miyazaki"}); err != nil { - b.Fatal(err) - } - } -} - -// BenchmarkUpperInsert benchmarks an insertion by upper.io/db.v2. -func BenchmarkUpperInsert(b *testing.B) { - - sess, err := Open(settings) - if err != nil { - b.Fatal(err) - } - - defer sess.Close() - - artist := sess.Collection("artist") - - artist.Truncate() - - item := struct { - Name string `bson:"name"` - }{"Hayao Miyazaki"} - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if _, err = artist.Insert(item); err != nil { - b.Fatal(err) - } - } -} - -// BenchmarkUpperInsertVariableArgs benchmarks an insertion by upper.io/db.v2 -// with variable parameters. -func BenchmarkUpperInsertVariableArgs(b *testing.B) { - - sess, err := Open(settings) - if err != nil { - b.Fatal(err) - } - - defer sess.Close() - - artist := sess.Collection("artist") - - artist.Truncate() - - b.ResetTimer() - for i := 0; i < b.N; i++ { - item := struct { - Name string `bson:"name"` - }{fmt.Sprintf("Hayao Miyazaki %d", rand.Int())} - if _, err = artist.Insert(item); err != nil { - b.Fatal(err) - } - } -} - -// BenchmarkMgoSelect benchmarks MongoDB find queries. -func BenchmarkMgoSelect(b *testing.B) { - var err error - var sess db.Database - - if sess, err = connectAndAddFakeRows(); err != nil { - b.Fatal(err) - } - - defer sess.Close() - - driver := sess.Driver().(*mgo.Session) - - type artistType struct { - Name string `bson:"name"` - } - - var item artistType - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if err = driver.DB("").C("artist").Find(bson.M{"name": artistN(i)}).One(&item); err != nil { - b.Fatal(err) - } - } -} - -// BenchmarkMgoSelect benchmarks MongoDB find queries. -func BenchmarkMgoSelectAll(b *testing.B) { - var err error - var sess db.Database - - if sess, err = connectAndAddFakeRows(); err != nil { - b.Fatal(err) - } - - defer sess.Close() - - driver := sess.Driver().(*mgo.Session) - - type artistType struct { - Name string `bson:"name"` - } - - var items []artistType - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if err = driver.DB("").C("artist").Find(bson.M{"name": artistN(i)}).All(&items); err != nil { - b.Fatal(err) - } - } -} - -// BenchmarkUpperFind benchmarks upper.io/db.v2's One method. -func BenchmarkUpperFind(b *testing.B) { - var err error - var sess db.Database - - if sess, err = connectAndAddFakeRows(); err != nil { - b.Fatal(err) - } - - defer sess.Close() - - artist := sess.Collection("artist") - - type artistType struct { - Name string `bson:"name"` - } - - var item artistType - - b.ResetTimer() - for i := 0; i < b.N; i++ { - res := artist.Find(db.Cond{"name": artistN(i)}) - if err = res.One(&item); err != nil { - b.Fatal(err) - } - } -} - -// BenchmarkUpperFindAll benchmarks upper.io/db.v2's All method. -func BenchmarkUpperFindAll(b *testing.B) { - var err error - var sess db.Database - - if sess, err = connectAndAddFakeRows(); err != nil { - b.Fatal(err) - } - - defer sess.Close() - - artist := sess.Collection("artist") - - type artistType struct { - Name string `bson:"name"` - } - - var items []artistType - - b.ResetTimer() - for i := 0; i < b.N; i++ { - res := artist.Find(db.Or( - db.Cond{"name": artistN(i)}, - db.Cond{"name": artistN(i + 1)}, - db.Cond{"name": artistN(i + 2)}, - )) - if err = res.All(&items); err != nil { - b.Fatal(err) - } - if len(items) != 3 { - b.Fatal("Expecting 3 results.") - } - } -} - -// BenchmarkMgoUpdate benchmarks MongoDB update queries. -func BenchmarkMgoUpdate(b *testing.B) { - var err error - var sess db.Database - - if sess, err = connectAndAddFakeRows(); err != nil { - b.Fatal(err) - } - - defer sess.Close() - - driver := sess.Driver().(*mgo.Session) - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if _, err = driver.DB("").C("artist").UpdateAll(bson.M{"name": artistN(i)}, bson.M{"$set": bson.M{"name": updatedArtistN(i)}}); err != nil { - b.Fatal(err) - } - } -} - -// BenchmarkUpperUpdate benchmarks upper.io/db.v2's Update method. -func BenchmarkUpperUpdate(b *testing.B) { - var err error - var sess db.Database - - if sess, err = connectAndAddFakeRows(); err != nil { - b.Fatal(err) - } - - defer sess.Close() - - artist := sess.Collection("artist") - - type artistType struct { - Name string `bson:"name"` - } - - b.ResetTimer() - for i := 0; i < b.N; i++ { - newValue := artistType{ - Name: updatedArtistN(i), - } - res := artist.Find(db.Cond{"name": artistN(i)}) - if err = res.Update(newValue); err != nil { - b.Fatal(err) - } - } -} - -// BenchmarkMgoDelete benchmarks MongoDB delete queries. -func BenchmarkMgoDelete(b *testing.B) { - var err error - var sess db.Database - - if sess, err = connectAndAddFakeRows(); err != nil { - b.Fatal(err) - } - - defer sess.Close() - - driver := sess.Driver().(*mgo.Session) - - b.ResetTimer() - for i := 0; i < b.N; i++ { - if _, err = driver.DB("").C("artist").RemoveAll(bson.M{"name": artistN(i)}); err != nil { - b.Fatal(err) - } - } -} - -// BenchmarkUpperDelete benchmarks -func BenchmarkUpperDelete(b *testing.B) { - var err error - var sess db.Database - - if sess, err = connectAndAddFakeRows(); err != nil { - b.Fatal(err) - } - - defer sess.Close() - - artist := sess.Collection("artist") - - b.ResetTimer() - for i := 0; i < b.N; i++ { - res := artist.Find(db.Cond{"name": artistN(i)}) - if err = res.Delete(); err != nil { - b.Fatal(err) - } - } -} - -// BenchmarkUpperGetCollection -func BenchmarkUpperGetCollection(b *testing.B) { - var err error - var sess db.Database - - if sess, err = Open(settings); err != nil { - b.Fatal(err) - } - - defer sess.Close() - - b.ResetTimer() - for i := 0; i < b.N; i++ { - sess.Collection("artist") - } -} - -// BenchmarkUpperC -func BenchmarkUpperC(b *testing.B) { - var err error - var sess db.Database - - if sess, err = Open(settings); err != nil { - b.Fatal(err) - } - - defer sess.Close() - - b.ResetTimer() - for i := 0; i < b.N; i++ { - sess.Collection("artist") - } -} diff --git a/mysql/Makefile b/mysql/Makefile index 55c17dabab4c3881100324dca499fd9dacc9457c..f6271efc87d8c5ce8adb1068460ec5b2f1d7ef8e 100644 --- a/mysql/Makefile +++ b/mysql/Makefile @@ -7,8 +7,6 @@ DB_USERNAME ?= upperio_tests DB_PASSWORD ?= upperio_secret DB_NAME ?= upperio_tests -BENCHTIME ?= 5s - export DB_HOST export DB_NAME export DB_PASSWORD @@ -37,6 +35,3 @@ reset-db: require-client test: reset-db generate go test -tags generated -v -race - -bench: reset-db generate - go test -tags generated -v -test.bench=. -test.benchtime=$(BENCHTIME) -benchmem diff --git a/mysql/benchmark_test.go b/mysql/benchmark_test.go deleted file mode 100644 index 1558a9b7aea1f481cadeca64d49838aa345dea1a..0000000000000000000000000000000000000000 --- a/mysql/benchmark_test.go +++ /dev/null @@ -1,11 +0,0 @@ -//go:generate bash -c "sed s/ADAPTER/mysql/g ../internal/sqladapter/testing/adapter_benchmark.go.tpl > generated_benchmark_test.go" -package mysql - -const ( - truncateArtist = "TRUNCATE TABLE `artist`" - insertHayaoMiyazaki = "INSERT INTO `artist` (`name`) VALUES('Hayao Miyazaki')" - insertIntoArtistWithPlaceholderReturningID = "INSERT INTO `artist` (`name`) VALUES(?)" - selectFromArtistWhereName = "SELECT * FROM `artist` WHERE `name` = ?" - updateArtistWhereName = "UPDATE `artist` SET `name` = ? WHERE `name` = ?" - deleteArtistWhereName = "DELETE FROM `artis` WHERE `name` = $1" -) diff --git a/postgresql/Makefile b/postgresql/Makefile index fa2e6922fc9efc292e8ba1f962234771bf6518af..ab9f9d90438370aea029c2e01e6d2f1a66bce90c 100644 --- a/postgresql/Makefile +++ b/postgresql/Makefile @@ -7,8 +7,6 @@ DB_USERNAME ?= upperio_tests DB_PASSWORD ?= upperio_secret DB_NAME ?= upperio_tests -BENCHTIME ?= 5s - export DB_HOST export DB_NAME export DB_PASSWORD @@ -44,6 +42,3 @@ reset-db: require-client test: reset-db generate go test -tags generated -v -race - -bench: reset-db generate - go test -tags generated -v -test.bench=. -test.benchtime=$(BENCHTIME) -benchmem diff --git a/postgresql/benchmark_test.go b/postgresql/benchmark_test.go deleted file mode 100644 index 62a713d2cfa1980ff89a952f046ac7561d7104c5..0000000000000000000000000000000000000000 --- a/postgresql/benchmark_test.go +++ /dev/null @@ -1,11 +0,0 @@ -//go:generate bash -c "sed s/ADAPTER/postgresql/g ../internal/sqladapter/testing/adapter_benchmark.go.tpl > generated_benchmark_test.go" -package postgresql - -const ( - truncateArtist = `TRUNCATE TABLE "artist" RESTART IDENTITY` - insertHayaoMiyazaki = `INSERT INTO "artist" ("name") VALUES('Hayao Miyazaki') RETURNING "id"` - insertIntoArtistWithPlaceholderReturningID = `INSERT INTO "artist" ("name") VALUES($1) RETURNING "id"` - selectFromArtistWhereName = `SELECT * FROM "artist" WHERE "name" = $1` - updateArtistWhereName = `UPDATE "artist" SET "name" = $1 WHERE "name" = $2` - deleteArtistWhereName = `DELETE FROM "artist" WHERE "name" = $1` -) diff --git a/ql/Makefile b/ql/Makefile index 25870bbd69d01cb43a68811127f48e4acff10955..892697d85ccb19afcc8e197d34132ae83432d1b6 100644 --- a/ql/Makefile +++ b/ql/Makefile @@ -2,8 +2,6 @@ SHELL := bash DB_NAME ?= ql-test.db -BENCHTIME ?= 5s - export DB_NAME build: @@ -24,6 +22,3 @@ reset-db: require-client test: reset-db generate go test -tags generated -v - -bench: reset-db generate - go test -tags generated -v -bench=. -benchtime=$(BENCHTIME) -benchmem -test.parallel=1 -short -cpu 1 diff --git a/sqlite/Makefile b/sqlite/Makefile index 00945272b826a6bd345bdcaec8f7587c689d596c..84a5830580d18032f4109a7a786e7291267eb904 100644 --- a/sqlite/Makefile +++ b/sqlite/Makefile @@ -2,8 +2,6 @@ SHELL := bash DB_NAME ?= sqlite3-test.db -BENCHTIME ?= 5s - export DB_NAME build: @@ -24,6 +22,3 @@ reset-db: require-client test: reset-db generate go test -tags generated -v -race - -bench: reset-db generate - go test -tags generated -v -test.bench=. -test.benchtime=$(BENCHTIME) -benchmem diff --git a/sqlite/benchmark_test.go b/sqlite/benchmark_test.go deleted file mode 100644 index 497af00194ac352ecd9743bb147c80c14040bda1..0000000000000000000000000000000000000000 --- a/sqlite/benchmark_test.go +++ /dev/null @@ -1,11 +0,0 @@ -//go:generate bash -c "sed s/ADAPTER/sqlite/g ../internal/sqladapter/testing/adapter_benchmark.go.tpl > generated_benchmark_test.go" -package sqlite - -const ( - truncateArtist = `DELETE FROM "artist"` - insertHayaoMiyazaki = `INSERT INTO "artist" ("name") VALUES('Hayao Miyazaki')` - insertIntoArtistWithPlaceholderReturningID = `INSERT INTO "artist" ("name") VALUES(?)` - selectFromArtistWhereName = `SELECT * FROM "artist" WHERE "name" = ?` - updateArtistWhereName = `UPDATE "artist" SET "name" = ? WHERE "name" = ?` - deleteArtistWhereName = `DELETE FROM "artist" WHERE "name" = ?` -)