2014-01-25 02:07:11 +00:00
package tests
2013-06-08 04:41:51 +00:00
import (
2013-12-18 03:31:32 +00:00
"database/sql"
"os"
"testing"
2013-12-16 15:42:31 +00:00
2014-04-11 09:04:39 +00:00
"github.com/go-xorm/core"
"github.com/go-xorm/xorm"
"github.com/go-xorm/xorm/caches"
2013-12-18 03:31:32 +00:00
_ "github.com/mattn/go-sqlite3"
2013-06-08 04:41:51 +00:00
)
2014-01-23 03:09:48 +00:00
func newSqlite3Engine ( ) ( * xorm . Engine , error ) {
2013-12-18 03:31:32 +00:00
os . Remove ( "./test.db" )
2014-01-23 03:09:48 +00:00
return xorm . NewEngine ( "sqlite3" , "./test.db" )
2013-12-16 15:42:31 +00:00
}
func newSqlite3DriverDB ( ) ( * sql . DB , error ) {
2013-12-18 03:31:32 +00:00
os . Remove ( "./test.db" )
return sql . Open ( "sqlite3" , "./test.db" )
2013-12-04 07:03:21 +00:00
}
func TestSqlite3 ( t * testing . T ) {
2013-12-18 03:31:32 +00:00
engine , err := newSqlite3Engine ( )
defer engine . Close ( )
if err != nil {
t . Error ( err )
return
}
engine . ShowSQL = showTestSql
engine . ShowErr = showTestSql
engine . ShowWarn = showTestSql
engine . ShowDebug = showTestSql
testAll ( engine , t )
2014-01-16 03:26:24 +00:00
testAllSnakeMapper ( engine , t )
2013-12-18 03:31:32 +00:00
testAll2 ( engine , t )
testAll3 ( engine , t )
2013-06-08 04:41:51 +00:00
}
2013-09-28 15:14:42 +00:00
2013-12-04 07:03:21 +00:00
func TestSqlite3WithCache ( t * testing . T ) {
2013-12-18 03:31:32 +00:00
engine , err := newSqlite3Engine ( )
defer engine . Close ( )
if err != nil {
t . Error ( err )
return
}
2014-01-25 02:07:11 +00:00
engine . SetDefaultCacher ( xorm . NewLRUCacher ( caches . NewMemoryStore ( ) , 1000 ) )
2013-12-18 03:31:32 +00:00
engine . ShowSQL = showTestSql
engine . ShowErr = showTestSql
engine . ShowWarn = showTestSql
engine . ShowDebug = showTestSql
testAll ( engine , t )
2014-01-16 03:26:24 +00:00
testAllSnakeMapper ( engine , t )
2014-01-09 09:55:33 +00:00
testAll2 ( engine , t )
}
func TestSqlite3SameMapper ( t * testing . T ) {
engine , err := newSqlite3Engine ( )
defer engine . Close ( )
if err != nil {
t . Error ( err )
return
}
2014-01-25 02:07:11 +00:00
engine . SetMapper ( core . SameMapper { } )
2014-01-09 09:55:33 +00:00
engine . ShowSQL = showTestSql
engine . ShowErr = showTestSql
engine . ShowWarn = showTestSql
engine . ShowDebug = showTestSql
testAll ( engine , t )
2014-01-16 03:26:24 +00:00
testAllSameMapper ( engine , t )
2014-01-09 09:55:33 +00:00
testAll2 ( engine , t )
testAll3 ( engine , t )
}
func TestSqlite3WithCacheSameMapper ( t * testing . T ) {
engine , err := newSqlite3Engine ( )
defer engine . Close ( )
if err != nil {
t . Error ( err )
return
}
2014-01-25 02:07:11 +00:00
engine . SetMapper ( core . SameMapper { } )
engine . SetDefaultCacher ( xorm . NewLRUCacher ( caches . NewMemoryStore ( ) , 1000 ) )
2014-01-09 09:55:33 +00:00
engine . ShowSQL = showTestSql
engine . ShowErr = showTestSql
engine . ShowWarn = showTestSql
engine . ShowDebug = showTestSql
testAll ( engine , t )
2014-01-16 03:26:24 +00:00
testAllSameMapper ( engine , t )
2013-12-18 03:31:32 +00:00
testAll2 ( engine , t )
2013-12-04 07:03:21 +00:00
}
2013-12-16 15:42:31 +00:00
const (
2013-12-18 03:31:32 +00:00
createTableSqlite3 = "CREATE TABLE IF NOT EXISTS `big_struct` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `name` TEXT NULL, `title` TEXT NULL, `age` TEXT NULL, `alias` TEXT NULL, `nick_name` TEXT NULL);"
dropTableSqlite3 = "DROP TABLE IF EXISTS `big_struct`;"
2013-12-16 15:42:31 +00:00
)
func BenchmarkSqlite3DriverInsert ( t * testing . B ) {
2013-12-18 03:31:32 +00:00
doBenchDriver ( newSqlite3DriverDB , createTableSqlite3 , dropTableSqlite3 ,
doBenchDriverInsert , t )
2013-12-04 07:03:21 +00:00
}
func BenchmarkSqlite3DriverFind ( t * testing . B ) {
2013-12-18 03:31:32 +00:00
doBenchDriver ( newSqlite3DriverDB , createTableSqlite3 , dropTableSqlite3 ,
doBenchDriverFind , t )
2013-12-16 15:42:31 +00:00
}
2013-12-04 07:03:21 +00:00
func BenchmarkSqlite3NoCacheInsert ( t * testing . B ) {
2013-12-18 03:31:32 +00:00
t . StopTimer ( )
engine , err := newSqlite3Engine ( )
defer engine . Close ( )
if err != nil {
t . Error ( err )
return
}
//engine.ShowSQL = true
doBenchInsert ( engine , t )
2013-09-28 15:14:42 +00:00
}
2013-12-04 07:03:21 +00:00
func BenchmarkSqlite3NoCacheFind ( t * testing . B ) {
2013-12-18 03:31:32 +00:00
t . StopTimer ( )
engine , err := newSqlite3Engine ( )
defer engine . Close ( )
if err != nil {
t . Error ( err )
return
}
//engine.ShowSQL = true
doBenchFind ( engine , t )
2013-12-04 07:03:21 +00:00
}
func BenchmarkSqlite3NoCacheFindPtr ( t * testing . B ) {
2013-12-18 03:31:32 +00:00
t . StopTimer ( )
engine , err := newSqlite3Engine ( )
defer engine . Close ( )
if err != nil {
t . Error ( err )
return
}
//engine.ShowSQL = true
doBenchFindPtr ( engine , t )
2013-12-04 07:03:21 +00:00
}
func BenchmarkSqlite3CacheInsert ( t * testing . B ) {
2013-12-18 03:31:32 +00:00
t . StopTimer ( )
engine , err := newSqlite3Engine ( )
defer engine . Close ( )
if err != nil {
t . Error ( err )
return
}
2014-01-25 02:07:11 +00:00
engine . SetDefaultCacher ( xorm . NewLRUCacher ( caches . NewMemoryStore ( ) , 1000 ) )
2013-12-18 03:31:32 +00:00
doBenchInsert ( engine , t )
2013-12-04 07:03:21 +00:00
}
func BenchmarkSqlite3CacheFind ( t * testing . B ) {
2013-12-18 03:31:32 +00:00
t . StopTimer ( )
engine , err := newSqlite3Engine ( )
defer engine . Close ( )
if err != nil {
t . Error ( err )
return
}
2014-01-25 02:07:11 +00:00
engine . SetDefaultCacher ( xorm . NewLRUCacher ( caches . NewMemoryStore ( ) , 1000 ) )
2013-12-18 03:31:32 +00:00
doBenchFind ( engine , t )
2013-12-04 07:03:21 +00:00
}
func BenchmarkSqlite3CacheFindPtr ( t * testing . B ) {
2013-12-18 03:31:32 +00:00
t . StopTimer ( )
engine , err := newSqlite3Engine ( )
defer engine . Close ( )
if err != nil {
t . Error ( err )
return
}
2014-01-25 02:07:11 +00:00
engine . SetDefaultCacher ( xorm . NewLRUCacher ( caches . NewMemoryStore ( ) , 1000 ) )
2013-12-18 03:31:32 +00:00
doBenchFindPtr ( engine , t )
2013-09-28 15:14:42 +00:00
}