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() }