From 70279eeb3f4f3a8aaee5582e2c44d912d5916761 Mon Sep 17 00:00:00 2001 From: Xiaoyu Wang Date: Sun, 19 Dec 2021 22:02:08 -0500 Subject: [PATCH] TD-12194 pull-in cpp-stub --- cmake/stub_CMakeLists.txt.in | 12 ++++++++++ contrib/CMakeLists.txt | 6 +++++ source/libs/parser/test/mockCatalog.cpp | 27 +++++++++++++++++++++-- source/libs/parser/test/mockCatalog.h | 4 ++-- source/libs/planner/test/plannerTests.cpp | 8 +++---- 5 files changed, 49 insertions(+), 8 deletions(-) create mode 100644 cmake/stub_CMakeLists.txt.in diff --git a/cmake/stub_CMakeLists.txt.in b/cmake/stub_CMakeLists.txt.in new file mode 100644 index 0000000000..e227e820d6 --- /dev/null +++ b/cmake/stub_CMakeLists.txt.in @@ -0,0 +1,12 @@ + +# stub +ExternalProject_Add(stub + GIT_REPOSITORY https://github.com/coolxv/cpp-stub.git + GIT_SUBMODULES "src" + SOURCE_DIR "${CMAKE_CONTRIB_DIR}/cpp-stub" + BINARY_DIR "${CMAKE_CONTRIB_DIR}/cpp-stub/src" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "" +) diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index 0aadaccfa1..9b4612c492 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -12,6 +12,7 @@ configure_file("${CMAKE_SUPPORT_DIR}/deps_CMakeLists.txt.in" ${CONTRIB_TMP_FILE} # googletest if(${BUILD_TEST}) cat("${CMAKE_SUPPORT_DIR}/gtest_CMakeLists.txt.in" ${CONTRIB_TMP_FILE}) + cat("${CMAKE_SUPPORT_DIR}/stub_CMakeLists.txt.in" ${CONTRIB_TMP_FILE}) endif(${BUILD_TEST}) # lz4 @@ -73,6 +74,11 @@ execute_process(COMMAND "${CMAKE_COMMAND}" --build . # googletest if(${BUILD_TEST}) add_subdirectory(googletest) + target_include_directories( + gtest + PUBLIC $ + PUBLIC $ + ) endif(${BUILD_TEST}) # cJson diff --git a/source/libs/parser/test/mockCatalog.cpp b/source/libs/parser/test/mockCatalog.cpp index 4e6b94081b..dc341f6af7 100644 --- a/source/libs/parser/test/mockCatalog.cpp +++ b/source/libs/parser/test/mockCatalog.cpp @@ -17,6 +17,9 @@ #include +#include "stub.h" +#include "addr_any.h" + namespace { void generateTestT1(MockCatalogService* mcs) { @@ -38,16 +41,36 @@ void generateTestST1(MockCatalogService* mcs) { } -int32_t catalogGetHandle(const char *clusterId, struct SCatalog** catalogHandle) { +int32_t __catalogGetHandle(const char *clusterId, struct SCatalog** catalogHandle) { return mockCatalogService->catalogGetHandle(clusterId, catalogHandle); } -int32_t catalogGetTableMeta(struct SCatalog* pCatalog, void *pRpc, const SEpSet* pMgmtEps, const char* pDBName, const char* pTableName, STableMeta** pTableMeta) { +int32_t __catalogGetTableMeta(struct SCatalog* pCatalog, void *pRpc, const SEpSet* pMgmtEps, const char* pDBName, const char* pTableName, STableMeta** pTableMeta) { return mockCatalogService->catalogGetTableMeta(pCatalog, pRpc, pMgmtEps, pDBName, pTableName, pTableMeta); } void initMetaDataEnv() { mockCatalogService.reset(new MockCatalogService()); + + static Stub stub; + stub.set(catalogGetHandle, __catalogGetHandle); + stub.set(catalogGetTableMeta, __catalogGetTableMeta); + { + AddrAny any("libcatalog.so"); + std::map result; + any.get_global_func_addr_dynsym("^catalogGetHandle$", result); + for (const auto& f : result) { + stub.set(f.second, __catalogGetHandle); + } + } + { + AddrAny any("libcatalog.so"); + std::map result; + any.get_global_func_addr_dynsym("^catalogGetTableMeta$", result); + for (const auto& f : result) { + stub.set(f.second, __catalogGetTableMeta); + } + } } void generateMetaData() { diff --git a/source/libs/parser/test/mockCatalog.h b/source/libs/parser/test/mockCatalog.h index c9812d5b94..35eb1ddcd9 100644 --- a/source/libs/parser/test/mockCatalog.h +++ b/source/libs/parser/test/mockCatalog.h @@ -23,7 +23,7 @@ void generateMetaData(); void destroyMetaDataEnv(); // mock -int32_t catalogGetHandle(const char *clusterId, struct SCatalog** catalogHandle); -int32_t catalogGetTableMeta(struct SCatalog* pCatalog, void *pRpc, const SEpSet* pMgmtEps, const char* pDBName, const char* pTableName, STableMeta** pTableMeta); +// int32_t catalogGetHandle(const char *clusterId, struct SCatalog** catalogHandle); +// int32_t catalogGetTableMeta(struct SCatalog* pCatalog, void *pRpc, const SEpSet* pMgmtEps, const char* pDBName, const char* pTableName, STableMeta** pTableMeta); #endif // MOCK_CATALOG_H diff --git a/source/libs/planner/test/plannerTests.cpp b/source/libs/planner/test/plannerTests.cpp index 9379b06ac8..11a31d15eb 100644 --- a/source/libs/planner/test/plannerTests.cpp +++ b/source/libs/planner/test/plannerTests.cpp @@ -28,7 +28,7 @@ #pragma GCC diagnostic ignored "-Wunused-variable" #pragma GCC diagnostic ignored "-Wsign-compare" -class ParserEnv : public testing::Environment { +class PlannerEnv : public testing::Environment { public: virtual void SetUp() { initMetaDataEnv(); @@ -39,12 +39,12 @@ public: destroyMetaDataEnv(); } - ParserEnv() {} - virtual ~ParserEnv() {} + PlannerEnv() {} + virtual ~PlannerEnv() {} }; int main(int argc, char* argv[]) { - testing::AddGlobalTestEnvironment(new ParserEnv()); + testing::AddGlobalTestEnvironment(new PlannerEnv()); testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }