From c133ffc00b0e6029e84051ca2bcb423e9dcbd28f Mon Sep 17 00:00:00 2001 From: fumingwei Date: Tue, 14 Mar 2023 20:22:26 +0800 Subject: feature:构建gtest使用环境 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 5 +++ ctest/CMakeLists.txt | 12 +++++++ test/fieldstat_test.cpp | 2 +- test/src/CMakeLists.txt | 11 +++++++ test/src/gtest_fieldstat.cpp | 54 ++++++++++++++++++++++++++++++++ vendor/CMakeLists.txt | 20 ++++++++++++ vendor/googletest-release-1.10.0.tar.gz | Bin 0 -> 904349 bytes 7 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 ctest/CMakeLists.txt create mode 100644 test/src/CMakeLists.txt create mode 100644 test/src/gtest_fieldstat.cpp create mode 100644 vendor/CMakeLists.txt create mode 100644 vendor/googletest-release-1.10.0.tar.gz diff --git a/CMakeLists.txt b/CMakeLists.txt index a48d527..78df60d 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,6 +40,11 @@ file(GLOB SRC "src/*.cpp" ) +add_subdirectory(vendor) +add_subdirectory(test/src) +enable_testing() +add_subdirectory(./ctest) + # Shared Library Output add_library(${lib_name}_shared SHARED ${SRC}) set_target_properties(${lib_name}_shared PROPERTIES LINK_FLAGS diff --git a/ctest/CMakeLists.txt b/ctest/CMakeLists.txt new file mode 100644 index 0000000..f755124 --- /dev/null +++ b/ctest/CMakeLists.txt @@ -0,0 +1,12 @@ +cmake_minimum_required (VERSION 2.8) + +project(fieldstat_ctest) + +add_test(NAME COPY_CREATE_DIR COMMAND sh -c "mkdir -p ${CMAKE_BINARY_DIR}/testing/ ") + +add_test(NAME COPY_GTEST_BINARY COMMAND sh -c "cp ${CMAKE_BINARY_DIR}/test/src/gtest_fieldstat ${CMAKE_BINARY_DIR}/testing/") + +set(GTEST_RUN_DIR ${CMAKE_BINARY_DIR}/testing) +#add_test(NAME GTEST_RULE COMMAND gtest_rule WORKING_DIRECTORY ${GTEST_RUN_DIR}) +add_test(NAME GTEST_FIELDSTAT COMMAND gtest_fieldstat WORKING_DIRECTORY ${GTEST_RUN_DIR}) + diff --git a/test/fieldstat_test.cpp b/test/fieldstat_test.cpp index 4765298..eefc224 100644 --- a/test/fieldstat_test.cpp +++ b/test/fieldstat_test.cpp @@ -282,7 +282,7 @@ int main(int argc, char *argv[]) { int ret = 0; - struct fieldstat_instance *test_instance = fieldstat_instance_create("test");; + struct fieldstat_instance *test_instance = fieldstat_instance_create("test"); if(test_instance == NULL) { diff --git a/test/src/CMakeLists.txt b/test/src/CMakeLists.txt new file mode 100644 index 0000000..fae7312 --- /dev/null +++ b/test/src/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 2.8) + +include_directories(${PROJECT_SOURCE_DIR}/inc/) +include_directories(${PROJECT_SOURCE_DIR}/src/) + + +#add_executable(gtest_rule ${PROJECT_SOURCE_DIR}/src/tsg_rule.cpp ${PROJECT_SOURCE_DIR}/src/tsg_bridge.cpp ${PROJECT_SOURCE_DIR}/src/tsg_leaky_bucket.cpp gtest_common.cpp gtest_rule.cpp) +#target_link_libraries(gtest_rule gtest-static ctemplate-static cjson MESA_prof_load MESA_handle_logger MESA_jump_layer MESA_field_stat2 maatframe) + +add_executable(gtest_fieldstat ${SRC} gtest_fieldstat.cpp) +target_link_libraries(gtest_fieldstat gtest-static) diff --git a/test/src/gtest_fieldstat.cpp b/test/src/gtest_fieldstat.cpp new file mode 100644 index 0000000..9850d7f --- /dev/null +++ b/test/src/gtest_fieldstat.cpp @@ -0,0 +1,54 @@ +#include +#include +#include +#include +#include "fieldstat.h" +#include "fieldstat_internal.h" + +extern struct prometheus_endpoint_instance g_prometheus_endpoint_instance; + +TEST(FeildStatAPI, CreateFieldStatInstance) +{ + struct fieldstat_instance *instance = fieldstat_instance_create("test"); + EXPECT_NE(nullptr, instance); + EXPECT_STREQ("test", instance->name); +} + +TEST(FeildStatAPI, FieldStatEnablePrometheusEndpoint) +{ + int ret_enable_prometheus_endpoint = 0; + int ret_req_prometheus_endpoint = 0; + + ret_enable_prometheus_endpoint = fieldstat_global_enable_prometheus_endpoint(9020, "/metrcis"); + EXPECT_EQ(0, ret_enable_prometheus_endpoint); + + ret_req_prometheus_endpoint = system("curl http://127.0.0.1:9020/metrics"); + EXPECT_EQ(0,ret_req_prometheus_endpoint); +} + +TEST(FeildStatAPI, FieldStatSetPrometheusOutput) +{ + struct fieldstat_instance *instance = NULL; + int ret_enable_prometheus_endpoint = 0; + int ret_set_prometheus_output = 0; + + instance = fieldstat_instance_create("test"); + EXPECT_STREQ("test", instance->name); + + ret_enable_prometheus_endpoint = fieldstat_global_enable_prometheus_endpoint(9020, "/metrcis"); + EXPECT_EQ(0, ret_enable_prometheus_endpoint); + + ret_set_prometheus_output = fieldstat_set_prometheus_output(instance); + EXPECT_EQ(0, ret_set_prometheus_output); + + EXPECT_EQ(1, g_prometheus_endpoint_instance.running); + EXPECT_EQ(instance, g_prometheus_endpoint_instance.fs_instance[0]); + EXPECT_EQ(1, g_prometheus_endpoint_instance.fs_instance_cnt); +} + +int main(int argc, char *argv[]) +{ + testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); + return 0; +} \ No newline at end of file diff --git a/vendor/CMakeLists.txt b/vendor/CMakeLists.txt new file mode 100644 index 0000000..b754ac3 --- /dev/null +++ b/vendor/CMakeLists.txt @@ -0,0 +1,20 @@ +# CMakeFiles for 3rd vendor library + +include(ExternalProject) +# libgtest +ExternalProject_Add(libgtest PREFIX libgtest + URL ${CMAKE_SOURCE_DIR}/vendor/googletest-release-1.10.0.tar.gz + URL_MD5 ecd1fa65e7de707cd5c00bdac56022cd + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX= -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}) +ExternalProject_Get_Property(libgtest INSTALL_DIR) +file(MAKE_DIRECTORY ${INSTALL_DIR}/include) +add_library(gtest-static STATIC IMPORTED GLOBAL) +add_dependencies(gtest-static libgtest) +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set_property(TARGET gtest-static PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/lib64/libgtestd.a) +else() + set_property(TARGET gtest-static PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/lib64/libgtest.a) +endif() +set_property(TARGET gtest-static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include) +set_property(TARGET gtest-static PROPERTY INTERFACE_LINK_LIBRARIES pthread) + diff --git a/vendor/googletest-release-1.10.0.tar.gz b/vendor/googletest-release-1.10.0.tar.gz new file mode 100644 index 0000000..ab10868 Binary files /dev/null and b/vendor/googletest-release-1.10.0.tar.gz differ -- cgit v1.2.3