From ed6001d5cacffe87043d7964d6c346b6b2931119 Mon Sep 17 00:00:00 2001 From: Minghao Li Date: Fri, 8 Jul 2022 15:31:50 +0800 Subject: [PATCH] refactor(sync): add syncRestoreFromSnapshot --- source/libs/sync/test/CMakeLists.txt | 14 ++++ .../sync/test/syncRestoreFromSnapshot.cpp | 78 +++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 source/libs/sync/test/syncRestoreFromSnapshot.cpp diff --git a/source/libs/sync/test/CMakeLists.txt b/source/libs/sync/test/CMakeLists.txt index 37d9707cfd..e1f3a2b2fc 100644 --- a/source/libs/sync/test/CMakeLists.txt +++ b/source/libs/sync/test/CMakeLists.txt @@ -54,6 +54,7 @@ add_executable(syncRaftLogTest2 "") add_executable(syncRaftLogTest3 "") add_executable(syncLeaderTransferTest "") add_executable(syncReconfigFinishTest "") +add_executable(syncRestoreFromSnapshot "") target_sources(syncTest @@ -280,6 +281,10 @@ target_sources(syncReconfigFinishTest PRIVATE "syncReconfigFinishTest.cpp" ) +target_sources(syncRestoreFromSnapshot + PRIVATE + "syncRestoreFromSnapshot.cpp" +) target_include_directories(syncTest @@ -562,6 +567,11 @@ target_include_directories(syncReconfigFinishTest "${TD_SOURCE_DIR}/include/libs/sync" "${CMAKE_CURRENT_SOURCE_DIR}/../inc" ) +target_include_directories(syncRestoreFromSnapshot + PUBLIC + "${TD_SOURCE_DIR}/include/libs/sync" + "${CMAKE_CURRENT_SOURCE_DIR}/../inc" +) target_link_libraries(syncTest @@ -788,6 +798,10 @@ target_link_libraries(syncReconfigFinishTest sync gtest_main ) +target_link_libraries(syncRestoreFromSnapshot + sync + gtest_main +) enable_testing() diff --git a/source/libs/sync/test/syncRestoreFromSnapshot.cpp b/source/libs/sync/test/syncRestoreFromSnapshot.cpp new file mode 100644 index 0000000000..97f3aa8220 --- /dev/null +++ b/source/libs/sync/test/syncRestoreFromSnapshot.cpp @@ -0,0 +1,78 @@ +#include +#include +#include "syncEnv.h" +#include "syncIO.h" +#include "syncInt.h" +#include "syncRaftLog.h" +#include "syncRaftStore.h" +#include "syncUtil.h" +#include "wal.h" + +void logTest() { + sTrace("--- sync log test: trace"); + sDebug("--- sync log test: debug"); + sInfo("--- sync log test: info"); + sWarn("--- sync log test: warn"); + sError("--- sync log test: error"); + sFatal("--- sync log test: fatal"); +} + +void init() { + int code = walInit(); + assert(code == 0); +} + +void cleanup() { walCleanUp(); } + +SWal* createWal(char* path, int32_t vgId) { + SWalCfg walCfg; + memset(&walCfg, 0, sizeof(SWalCfg)); + walCfg.vgId = vgId; + walCfg.fsyncPeriod = 1000; + walCfg.retentionPeriod = 1000; + walCfg.rollPeriod = 1000; + walCfg.retentionSize = 1000; + walCfg.segSize = 1000; + walCfg.level = TAOS_WAL_FSYNC; + SWal* pWal = walOpen(path, &walCfg); + assert(pWal != NULL); + return pWal; +} + +SSyncNode* createSyncNode(SWal* pWal) { + SSyncNode* pSyncNode = (SSyncNode*)taosMemoryMalloc(sizeof(SSyncNode)); + memset(pSyncNode, 0, sizeof(SSyncNode)); + pSyncNode->pWal = pWal; + return pSyncNode; +} + +void usage(char* exe) { printf("usage: %s path vgId snapshotIndex \n", exe); } + +int main(int argc, char** argv) { + if (argc != 3) { + usage(argv[0]); + exit(-1); + } + char* path = argv[1]; + int32_t vgId = atoi(argv[2]); + int64_t snapshotIndex = atoll(argv[3]); + + init(); + SWal* pWal = createWal(path, vgId); + assert(pWal != NULL); + SSyncNode* pSyncNode = createSyncNode(pWal); + assert(pSyncNode != NULL); + + SSyncLogStore* pLog = logStoreCreate(pSyncNode); + assert(pLog != NULL); + + int32_t code = pLog->syncLogRestoreFromSnapshot(pLog, snapshotIndex); + assert(code == 0); + + walClose(pWal); + logStoreDestory(pLog); + taosMemoryFree(pSyncNode); + + cleanup(); + return 0; +} -- GitLab