pet-house/core/server/web/common/index.go

162 lines
3.6 KiB
Go

package common
import (
"fmt"
"github.com/bwmarrin/snowflake"
"go.uber.org/zap"
"pet-house.com/core/g"
"pet-house.com/core/helper/str"
"pet-house.com/core/migration"
"pet-house.com/core/server/casbin"
"pet-house.com/core/server/database"
"pet-house.com/core/server/operation"
"pet-house.com/core/server/web"
"pet-house.com/core/server/web/web_gin"
"pet-house.com/core/server/web/web_iris"
"pet-house.com/core/server/zap_server"
)
// BeforeTestMainGin
func BeforeTestMainGin(party func(wi *web_gin.WebServer), seed func(wi *web_gin.WebServer, mc *migration.MigrationCmd)) (string, *web_gin.WebServer) {
fmt.Println("+++++ TEST BEGAIN +++++")
zap_server.CONFIG.LogInConsole = true
zap_server.Recover()
dbType := g.TestDbType
if dbType != "" {
web.CONFIG.System.DbType = dbType
}
web.Recover()
node, _ := snowflake.NewNode(1)
uuid := str.Join("gin", "_", node.Generate().String())
database.CONFIG.DbName = uuid
mysqlPwd := g.TestMysqlPwd
if mysqlPwd != "" {
database.CONFIG.Password = mysqlPwd
}
mysqlAddrIp := g.TestMysqlIp
if mysqlAddrIp != "" {
database.CONFIG.Ip = mysqlAddrIp
}
mysqlPort := g.TestMysqlPort
if mysqlPort != 0 {
database.CONFIG.Port = mysqlPort
}
database.CONFIG.LogMode = true
database.Recover()
if database.Instance() == nil {
fmt.Println("database instance is nil")
return uuid, nil
}
wi := web_gin.Init()
party(wi)
web.StartTest(wi)
mc := migration.New()
fmt.Println("++++++ add data to database ++++++")
seed(wi, mc)
err := mc.Migrate()
if err != nil {
fmt.Printf("migrate fail: [%s]", err.Error())
return uuid, nil
}
err = mc.Seed()
if err != nil {
fmt.Printf("seed fail: [%s]", err.Error())
return uuid, nil
}
return uuid, wi
}
// BeforeTestMainIris
func BeforeTestMainIris(party func(wi *web_iris.WebServer), seed func(wi *web_iris.WebServer, mc *migration.MigrationCmd)) (string, *web_iris.WebServer) {
fmt.Println("+++++ TEST BEGAIN +++++")
zap_server.CONFIG.LogInConsole = true
zap_server.Recover()
dbType := g.TestDbType
if dbType != "" {
web.CONFIG.System.DbType = dbType
}
web.Recover()
node, _ := snowflake.NewNode(1)
uuid := str.Join("iris", "_", node.Generate().String())
database.CONFIG.DbName = uuid
mysqlPwd := g.TestMysqlPwd
if mysqlPwd != "" {
database.CONFIG.Password = mysqlPwd
}
mysqlAddrIp := g.TestMysqlIp
if mysqlAddrIp != "" {
database.CONFIG.Ip = mysqlAddrIp
}
mysqlPort := g.TestMysqlPort
if mysqlPort != 0 {
database.CONFIG.Port = mysqlPort
}
database.CONFIG.LogMode = true
database.Recover()
if database.Instance() == nil {
fmt.Println("database instance is nil")
return uuid, nil
}
wi := web_iris.Init()
party(wi)
web.StartTest(wi)
mc := migration.New()
fmt.Println("++++++ add datas to database ++++++")
seed(wi, mc)
err := mc.Migrate()
if err != nil {
fmt.Printf("migrate fail: [%s]", err.Error())
return uuid, nil
}
err = mc.Seed()
if err != nil {
fmt.Printf("seed fail: [%s]", err.Error())
return uuid, nil
}
return uuid, wi
}
func AfterTestMain(uuid string, isDelDb bool) {
defer fmt.Println("++++++++ AFTER END ++++++++")
if isDelDb {
err := database.DorpDB(database.CONFIG.BaseDsn(), "mysql", uuid)
if err != nil {
zap_server.ZAPLOG.Error("delete database fail", zap.String("uuid", uuid), zap.String("err", err.Error()))
}
}
fmt.Println("++++++++ DELETE DATABASE ++++++++")
db, err := database.Instance().DB()
if err != nil {
zap_server.ZAPLOG.Error(str.Join("get database instance fail:", err.Error()))
}
if db != nil {
db.Close()
}
defer zap_server.Remove()
defer operation.Remove()
defer casbin.Remove()
defer web.Remove()
defer database.Remove()
}