diff --git a/common/utils.go b/common/utils.go index 24e25d7..2992625 100644 --- a/common/utils.go +++ b/common/utils.go @@ -12,7 +12,6 @@ import ( "io/ioutil" "os" "path/filepath" - "runtime" "strings" "time" @@ -80,10 +79,13 @@ func MustGetwd() string { return wd } -// GetCallerCodeDir 获取调用该函数的caller源代码的目录,主要用于测试时,查找相关文件 -func GetCallerCodeDir() string { - _, file, _, _ := runtime.Caller(1) - return filepath.Dir(file) +// GetSqlDir 获取调用该函数的caller源代码的目录,主要用于测试时,查找相关文件 +func GetSqlDir() string { + wd := MustGetwd() + if filepath.Base(wd) == "test" { + wd = filepath.Dir(wd) + "/sqls" + } + return wd } func RecoverPanic(err *error) { diff --git a/common/utils_test.go b/common/utils_test.go index a3240a2..228ee8f 100644 --- a/common/utils_test.go +++ b/common/utils_test.go @@ -42,7 +42,7 @@ func TestFuncs(t *testing.T) { wd := MustGetwd() assert.NotEqual(t, "", wd) - dir1 := GetCallerCodeDir() + dir1 := GetSqlDir() assert.Equal(t, true, strings.HasSuffix(dir1, "common")) } diff --git a/dtmsvr/storage/sql.go b/dtmsvr/storage/sql.go index 61e8862..40a399f 100644 --- a/dtmsvr/storage/sql.go +++ b/dtmsvr/storage/sql.go @@ -16,12 +16,14 @@ type SqlStore struct { } func (s *SqlStore) Ping() error { - dbr := dbGet().Exec("select 1") - return dbr.Error + db, err := dtmimp.StandaloneDB(config.Store.GetDBConf()) + dtmimp.E2P(err) + _, err = db.Exec("select 1") + return err } func (s *SqlStore) PopulateData(skipDrop bool) { - file := fmt.Sprintf("%s/storage.%s.sql", common.GetCallerCodeDir(), config.Store.Driver) + file := fmt.Sprintf("%s/dtmsvr.storage.%s.sql", common.GetSqlDir(), config.Store.Driver) common.RunSQLScript(config.Store.GetDBConf(), file, skipDrop) } diff --git a/examples/data.go b/examples/data.go index f7ad10b..b0459c4 100644 --- a/examples/data.go +++ b/examples/data.go @@ -34,9 +34,9 @@ func resetXaData() { // PopulateDB populate example mysql data func PopulateDB(skipDrop bool) { resetXaData() - file := fmt.Sprintf("%s/examples.%s.sql", common.GetCallerCodeDir(), config.ExamplesDB.Driver) + file := fmt.Sprintf("%s/examples.%s.sql", common.GetSqlDir(), config.ExamplesDB.Driver) common.RunSQLScript(config.ExamplesDB, file, skipDrop) - file = fmt.Sprintf("%s/../dtmcli/barrier.%s.sql", common.GetCallerCodeDir(), config.ExamplesDB.Driver) + file = fmt.Sprintf("%s/dtmcli.barrier.%s.sql", common.GetSqlDir(), config.ExamplesDB.Driver) common.RunSQLScript(config.ExamplesDB, file, skipDrop) } diff --git a/helper/Dockerfile-release b/helper/Dockerfile-release index b922185..7d83ed6 100644 --- a/helper/Dockerfile-release +++ b/helper/Dockerfile-release @@ -10,6 +10,7 @@ RUN CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -ldflags="-s -w" ap FROM --platform=$TARGETPLATFORM alpine:3.14 COPY --from=builder /app/dtm/main /app/dtm/ +COPY --from=builder /app/dtm/sqls/*.sql /app/dtm/sqls/ ENV IS_DOCKER=1 WORKDIR /app/dtm CMD ["/app/dtm/main", "dtmsvr"] diff --git a/helper/compose.store.yml b/helper/compose.store.yml index 75a8868..48eaff1 100644 --- a/helper/compose.store.yml +++ b/helper/compose.store.yml @@ -14,6 +14,17 @@ services: ] ports: - '3306:3306' + postgres: + image: 'postgres:13' + command: postgres --max_prepared_transactions=1000 + volumes: + - /etc/localtime:/etc/localtime:ro + - /etc/timezone:/etc/timezone:ro + environment: + POSTGRES_PASSWORD: mysecretpassword + + ports: + - '5432:5432' redis: image: 'redis' volumes: diff --git a/dtmcli/barrier.mysql.sql b/sqls/dtmcli.barrier.mysql.sql similarity index 100% rename from dtmcli/barrier.mysql.sql rename to sqls/dtmcli.barrier.mysql.sql diff --git a/dtmcli/barrier.postgres.sql b/sqls/dtmcli.barrier.postgres.sql similarity index 100% rename from dtmcli/barrier.postgres.sql rename to sqls/dtmcli.barrier.postgres.sql diff --git a/dtmsvr/storage/storage.mysql.sql b/sqls/dtmsvr.storage.mysql.sql similarity index 100% rename from dtmsvr/storage/storage.mysql.sql rename to sqls/dtmsvr.storage.mysql.sql diff --git a/dtmsvr/storage/storage.postgres.sql b/sqls/dtmsvr.storage.postgres.sql similarity index 100% rename from dtmsvr/storage/storage.postgres.sql rename to sqls/dtmsvr.storage.postgres.sql diff --git a/examples/examples.mysql.sql b/sqls/examples.mysql.sql similarity index 100% rename from examples/examples.mysql.sql rename to sqls/examples.mysql.sql diff --git a/examples/examples.postgres.sql b/sqls/examples.postgres.sql similarity index 100% rename from examples/examples.postgres.sql rename to sqls/examples.postgres.sql