diff --git a/source/dnode/mgmt/exe/dmMain.c b/source/dnode/mgmt/exe/dmMain.c index 6a03ff1bba5d01f201baeb3d824cbb9384f2825b..1a04e83f8127c0c71570c2cef4f300f05da11e67 100644 --- a/source/dnode/mgmt/exe/dmMain.c +++ b/source/dnode/mgmt/exe/dmMain.c @@ -188,13 +188,14 @@ int main(int argc, char const *argv[]) { } if (dmInitLog() != 0) { - printf("failed to start since init log error"); + printf("failed to start since init log error\n"); taosCleanupArgs(); return -1; } if (taosInitCfg(configDir, global.envCmd, global.envFile, global.apolloUrl, global.pArgs, 0) != 0) { dError("failed to start since read config error"); + taosCloseLog(); taosCleanupArgs(); return -1; } diff --git a/tests/test/c/CMakeLists.txt b/tests/test/c/CMakeLists.txt index 41e93823797bf66853491430b81317349b1b46a6..8ddfbd1655ab502b45c93aba7a2c267a523a7f8a 100644 --- a/tests/test/c/CMakeLists.txt +++ b/tests/test/c/CMakeLists.txt @@ -1,6 +1,7 @@ -add_executable(create_table create_table.c) +add_executable(create_table createTable.c) add_executable(tmq_demo tmqDemo.c) add_executable(tmq_sim tmqSim.c) +add_executable(sdbDump sdbDump.c) target_link_libraries( create_table PUBLIC taos_static @@ -22,3 +23,17 @@ target_link_libraries( PUBLIC common PUBLIC os ) +target_link_libraries( + sdbDump + PUBLIC dnode + PUBLIC mnode + PUBLIC sdb + PUBLIC os +) +target_include_directories( + sdbDump + PUBLIC "${TD_SOURCE_DIR}/include/dnode/mnode" + PRIVATE "${TD_SOURCE_DIR}/source/dnode/mnode/impl/inc" + PRIVATE "${TD_SOURCE_DIR}/source/dnode/mnode/sdb/inc" + PRIVATE "${TD_SOURCE_DIR}/source/dnode/mgmt/node_mgmt/inc" +) \ No newline at end of file diff --git a/tests/test/c/create_table.c b/tests/test/c/createTable.c similarity index 100% rename from tests/test/c/create_table.c rename to tests/test/c/createTable.c diff --git a/tests/test/c/sdbDump.c b/tests/test/c/sdbDump.c new file mode 100644 index 0000000000000000000000000000000000000000..e9e0df24ee93a7968b3349825305edebe096bf76 --- /dev/null +++ b/tests/test/c/sdbDump.c @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#define _DEFAULT_SOURCE +#include "dmMgmt.h" +#include "tconfig.h" + +int32_t main(int32_t argc, char *argv[]) { + char datafile[PATH_MAX] = {0}; + + for (int32_t i = 1; i < argc; ++i) { + if (strcmp(argv[i], "-c") == 0) { + if (i < argc - 1) { + if (strlen(argv[++i]) >= PATH_MAX) { + printf("config file path overflow"); + return -1; + } + tstrncpy(configDir, argv[i], PATH_MAX); + } else { + printf("'-c' requires a parameter, default is %s\n", configDir); + return -1; + } + } else if (strcmp(argv[i], "-f") == 0) { + if (i < argc - 1) { + if (strlen(argv[++i]) >= PATH_MAX) { + printf("file path overflow"); + return -1; + } + tstrncpy(datafile, argv[i], PATH_MAX); + } else { + printf("'-f' requires a parameter, default is %s\n", configDir); + return -1; + } + } + } + + if (taosCreateLog("dumplog", 1, configDir, NULL, NULL, NULL, NULL, 1) != 0) { + printf("failed to dump since init log error\n"); + return -1; + } + + if (taosInitCfg(configDir, NULL, NULL, NULL, NULL, 0) != 0) { + uError("failed to dump since read config error"); + taosCloseLog(); + return -1; + } + + if (datafile[0] == 0) { + snprintf(datafile, sizeof(datafile), "%s%sdata%smnode%sdata%ssdb.data", tsDataDir, TD_DIRSEP, TD_DIRSEP, TD_DIRSEP, + TD_DIRSEP); + } + + dInfo("dump %s to sdb.json", datafile); + + taosCleanupCfg(); + taosCloseLog(); + return 0; +}