summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xCMakeLists.txt5
-rw-r--r--ctest/CMakeLists.txt12
-rw-r--r--test/fieldstat_test.cpp2
-rw-r--r--test/src/CMakeLists.txt11
-rw-r--r--test/src/gtest_fieldstat.cpp54
-rw-r--r--vendor/CMakeLists.txt20
-rw-r--r--vendor/googletest-release-1.10.0.tar.gzbin0 -> 904349 bytes
7 files changed, 103 insertions, 1 deletions
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 <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <gtest/gtest.h>
+#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=<INSTALL_DIR> -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
--- /dev/null
+++ b/vendor/googletest-release-1.10.0.tar.gz
Binary files differ