Add tests for tidb (#1207)

* add tests for tidb

* ignore select for update tests
This commit is contained in:
Lunny Xiao 2019-02-01 11:31:51 +08:00 committed by GitHub
parent 52b85c2f7e
commit 1bcc25420d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 38 additions and 24 deletions

View File

@ -28,6 +28,8 @@ jobs:
SA_PASSWORD: yourStrong(!)Password SA_PASSWORD: yourStrong(!)Password
MSSQL_PID: Developer MSSQL_PID: Developer
- image: pingcap/tidb:v2.1.2
working_directory: /go/src/github.com/go-xorm/xorm working_directory: /go/src/github.com/go-xorm/xorm
steps: steps:
- checkout - checkout
@ -52,6 +54,8 @@ jobs:
- run: go test -v -race -db="postgres" -conn_str="dbname=xorm_test sslmode=disable" -schema=xorm -cache=true -coverprofile=coverage5-2.txt -covermode=atomic - run: go test -v -race -db="postgres" -conn_str="dbname=xorm_test sslmode=disable" -schema=xorm -cache=true -coverprofile=coverage5-2.txt -covermode=atomic
- run: go test -v -race -db="mssql" -conn_str="server=localhost;user id=sa;password=yourStrong(!)Password;database=xorm_test" -coverprofile=coverage6-1.txt -covermode=atomic - run: go test -v -race -db="mssql" -conn_str="server=localhost;user id=sa;password=yourStrong(!)Password;database=xorm_test" -coverprofile=coverage6-1.txt -covermode=atomic
- run: go test -v -race -db="mssql" -conn_str="server=localhost;user id=sa;password=yourStrong(!)Password;database=xorm_test" -cache=true -coverprofile=coverage6-2.txt -covermode=atomic - run: go test -v -race -db="mssql" -conn_str="server=localhost;user id=sa;password=yourStrong(!)Password;database=xorm_test" -cache=true -coverprofile=coverage6-2.txt -covermode=atomic
- run: gocovmerge coverage1-1.txt coverage1-2.txt coverage2-1.txt coverage2-2.txt coverage3-1.txt coverage3-2.txt coverage4-1.txt coverage4-2.txt coverage5-1.txt coverage5-2.txt coverage6-1.txt coverage6-2.txt > coverage.txt - run: go test -v -race -db="mysql" -conn_str="root:@tcp(localhost:4000)/xorm_test" -ignore_select_update=true -coverprofile=coverage7-1.txt -covermode=atomic
- run: go test -v -race -db="mysql" -conn_str="root:@tcp(localhost:4000)/xorm_test" -ignore_select_update=true -cache=true -coverprofile=coverage7-2.txt -covermode=atomic
- run: gocovmerge coverage1-1.txt coverage1-2.txt coverage2-1.txt coverage2-2.txt coverage3-1.txt coverage3-2.txt coverage4-1.txt coverage4-2.txt coverage5-1.txt coverage5-2.txt coverage6-1.txt coverage6-2.txt coverage7-1.txt coverage7-2.txt > coverage.txt
- run: bash <(curl -s https://codecov.io/bash) - run: bash <(curl -s https://codecov.io/bash)

View File

@ -110,7 +110,7 @@ func setupForUpdate(engine EngineInterface) error {
} }
func TestForUpdate(t *testing.T) { func TestForUpdate(t *testing.T) {
if testEngine.Dialect().DriverName() != "mysql" && testEngine.Dialect().DriverName() != "mymysql" { if *ignoreSelectUpdate {
return return
} }

1
test_tidb.sh Executable file
View File

@ -0,0 +1 @@
go test -db=mysql -conn_str="root:@tcp(localhost:4000)/xorm_test" -ignore_select_update=true

View File

@ -34,6 +34,7 @@ var (
cluster = flag.Bool("cluster", false, "if this is a cluster") cluster = flag.Bool("cluster", false, "if this is a cluster")
splitter = flag.String("splitter", ";", "the splitter on connstr for cluster") splitter = flag.String("splitter", ";", "the splitter on connstr for cluster")
schema = flag.String("schema", "", "specify the schema") schema = flag.String("schema", "", "specify the schema")
ignoreSelectUpdate = flag.Bool("ignore_select_update", false, "ignore select update if implementation difference, only for tidb")
) )
func createEngine(dbType, connStr string) error { func createEngine(dbType, connStr string) error {
@ -41,25 +42,22 @@ func createEngine(dbType, connStr string) error {
var err error var err error
if !*cluster { if !*cluster {
// create databases if not exist switch strings.ToLower(dbType) {
var db *sql.DB case core.MSSQL:
var err error db, err := sql.Open(dbType, strings.Replace(connStr, "xorm_test", "master", -1))
if strings.ToLower(dbType) != core.MSSQL {
db, err = sql.Open(dbType, connStr)
} else {
db, err = sql.Open(dbType, strings.Replace(connStr, "xorm_test", "master", -1))
}
if err != nil { if err != nil {
return err return err
} }
switch strings.ToLower(dbType) {
case core.MSSQL:
if _, err = db.Exec("If(db_id(N'xorm_test') IS NULL) BEGIN CREATE DATABASE xorm_test; END;"); err != nil { if _, err = db.Exec("If(db_id(N'xorm_test') IS NULL) BEGIN CREATE DATABASE xorm_test; END;"); err != nil {
return fmt.Errorf("db.Exec: %v", err) return fmt.Errorf("db.Exec: %v", err)
} }
db.Close()
*ignoreSelectUpdate = true
case core.POSTGRES: case core.POSTGRES:
db, err := sql.Open(dbType, connStr)
if err != nil {
return err
}
rows, err := db.Query(fmt.Sprintf("SELECT 1 FROM pg_database WHERE datname = 'xorm_test'")) rows, err := db.Query(fmt.Sprintf("SELECT 1 FROM pg_database WHERE datname = 'xorm_test'"))
if err != nil { if err != nil {
return fmt.Errorf("db.Query: %v", err) return fmt.Errorf("db.Query: %v", err)
@ -76,16 +74,27 @@ func createEngine(dbType, connStr string) error {
return fmt.Errorf("CREATE SCHEMA: %v", err) return fmt.Errorf("CREATE SCHEMA: %v", err)
} }
} }
db.Close()
*ignoreSelectUpdate = true
case core.MYSQL: case core.MYSQL:
db, err := sql.Open(dbType, strings.Replace(connStr, "xorm_test", "mysql", -1))
if err != nil {
return err
}
if _, err = db.Exec("CREATE DATABASE IF NOT EXISTS xorm_test"); err != nil { if _, err = db.Exec("CREATE DATABASE IF NOT EXISTS xorm_test"); err != nil {
return fmt.Errorf("db.Exec: %v", err) return fmt.Errorf("db.Exec: %v", err)
} }
}
db.Close() db.Close()
default:
*ignoreSelectUpdate = true
}
testEngine, err = NewEngine(dbType, connStr) testEngine, err = NewEngine(dbType, connStr)
} else { } else {
testEngine, err = NewEngineGroup(dbType, strings.Split(connStr, *splitter)) testEngine, err = NewEngineGroup(dbType, strings.Split(connStr, *splitter))
if dbType != "mysql" && dbType != "mymysql" {
*ignoreSelectUpdate = true
}
} }
if err != nil { if err != nil {
return err return err