summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzhengchao <[email protected]>2018-09-26 19:30:15 +0800
committerzhengchao <[email protected]>2018-09-26 19:30:15 +0800
commita49222cc1d8a1902c8a42ab33014bc8277d34423 (patch)
tree26ddfc5d281e994e93508dd2e89ae2c72bf56712
parent4d5b5f1f4523b65ef9ce72e16fe816ac55838271 (diff)
1)hiredis-vip静态链接到maat;2)maat_redis_tool静态链接libmaatframe.a;3)增加文件删除的测试用例。
-rw-r--r--.gitignore51
-rw-r--r--CMakeLists.txt1
-rw-r--r--src/CMakeLists.txt7
-rw-r--r--src/entry/Maat_command.cpp2
-rw-r--r--src/entry/Maat_rule.cpp2
-rw-r--r--test/test_maatframe.cpp50
-rw-r--r--tools/CMakeLists.txt4
-rw-r--r--vendor/CMakeLists.txt30
-rw-r--r--vendor/googletest-release-1.8.0.tar.gzbin0 -> 1281617 bytes
-rw-r--r--vendor/hiredis-vip-0.3.0.tar.gzbin0 -> 89575 bytes
10 files changed, 110 insertions, 37 deletions
diff --git a/.gitignore b/.gitignore
index 65043fb..76c9938 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,9 +1,44 @@
-SI/
-*.I*
-*.P*
-*.S*
-*.W*
-*.[od]
-*.[1-9]*
-*.log
+# Created by https://www.gitignore.io/api/c++,clion
+
+### C++ ###
+# Prerequisites
+*.d
+
+# Compiled Object files
+*.slo
+*.lo
+*.o
+*.obj
+
+# Precompiled Headers
+*.gch
+*.pch
+
+# Compiled Dynamic libraries
+*.so
+*.dylib
+*.dll
+
+# Fortran module files
+*.mod
+*.smod
+
+# Compiled Static libraries
+*.lai
+*.la
*.a
+*.lib
+
+# Executables
+*.exe
+*.out
+*.app
+
+# CMake
+cmake-build-*/
+
+# Clion
+.idea/
+
+# Vscode
+.vscode/*
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3c60a47..acafaae 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,7 @@
cmake_minimum_required (VERSION 3.5)
project (maatframe)
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wall)
+set(MAAT_DEPEND_DYN_LIB MESA_handle_logger MESA_htable pcre rulescan pthread m pcre MESA_field_stat2 crypto)
include_directories(${PROJECT_SOURCE_DIR}/inc/)
include_directories(/opt/MESA/include/MESA/)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index dd69c40..ee1ce60 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.5)
project(maatframe)
set(MAAT_FRAME_MAJOR_VERSION 2)
-set(MAAT_FRAME_MINOR_VERSION 2)
+set(MAAT_FRAME_MINOR_VERSION 3)
set(MAAT_FRAME_PATCH_VERSION 20180926)
set(MAAT_FRAME_VERSION ${MAAT_FRAME_MAJOR_VERSION}.${MAAT_FRAME_MINOR_VERSION}.${MAAT_FRAME_PATCH_VERSION})
@@ -19,7 +19,8 @@ set_target_properties(maat_frame_static PROPERTIES LINKER_LANGUAGE CXX)
set_target_properties(maat_frame_static PROPERTIES OUTPUT_NAME maatframe)
set_target_properties(maat_frame_static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
target_include_directories(maat_frame_static PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/inc_internal/)
-target_include_directories(maat_frame_static PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/inc_internal/hiredis)
+#target_include_directories(maat_frame_static PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/inc_internal/hiredis)
+target_link_libraries(maat_frame_static hiredis-vip-static)
# Shared Library Output
add_library(maat_frame_shared SHARED ${MAAT_SRC})
@@ -30,7 +31,7 @@ set_target_properties(maat_frame_shared PROPERTIES VERSION ${MAAT_FRAME_MAJOR_VE
set_target_properties(maat_frame_shared PROPERTIES SOVERSION ${MAAT_FRAME_MAJOR_VERSION})
target_include_directories(maat_frame_shared PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/inc_internal/)
target_include_directories(maat_frame_shared PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/inc_internal/hiredis)
-target_link_libraries(maat_frame_shared MESA_handle_logger MESA_htable pcre rulescan pthread m pcre MESA_field_stat2 crypto hiredis_vip)
+target_link_libraries(maat_frame_shared hiredis-vip-static ${MAAT_DEPEND_DYN_LIB})
install(DIRECTORY ${PROJECT_SOURCE_DIR}/inc/ DESTINATION /opt/MESA/include/MESA/ FILES_MATCHING PATTERN "*.h")
install(TARGETS maat_frame_shared DESTINATION /opt/MESA/lib/)
diff --git a/src/entry/Maat_command.cpp b/src/entry/Maat_command.cpp
index 9e139a9..fb9f9c1 100644
--- a/src/entry/Maat_command.cpp
+++ b/src/entry/Maat_command.cpp
@@ -2054,7 +2054,7 @@ int Maat_cmd_set_file(Maat_feather_t feather,const char* key, const char* value,
return -1;
}
freeReplyObject(reply);
- return 0;
+ return 1;
}
void Maat_add_region2cmd(struct Maat_cmd_t* cmd,int which_group,const struct Maat_region_t* region)
{
diff --git a/src/entry/Maat_rule.cpp b/src/entry/Maat_rule.cpp
index 5f25c35..bbba76b 100644
--- a/src/entry/Maat_rule.cpp
+++ b/src/entry/Maat_rule.cpp
@@ -3009,6 +3009,8 @@ void garbage_bury(MESA_lqueue_head garbage_q,int timeout,void *logger)
"Foreign content file %s remove failed.",
bag->filename);
}
+ free(bag->filename);
+ bag->filename=NULL;
break;
default:
assert(0);
diff --git a/test/test_maatframe.cpp b/test/test_maatframe.cpp
index 70e9137..6edb1cd 100644
--- a/test/test_maatframe.cpp
+++ b/test/test_maatframe.cpp
@@ -664,8 +664,7 @@ protected:
const char* foregin_dir="./foreign_files/";
Maat_set_feather_opt(_shared_feather, MAAT_OPT_FOREIGN_CONT_DIR,foregin_dir, strlen(foregin_dir)+1);
-
- int linger_timeout=4;
+ linger_timeout=2;
Maat_set_feather_opt(_shared_feather, MAAT_OPT_FOREIGN_CONT_LINGER,&linger_timeout, sizeof(linger_timeout));
Maat_cmd_flushDB(_shared_feather);
@@ -678,10 +677,11 @@ protected:
}
// Some expensive resource shared by all tests.
- static Maat_feather_t _shared_feather;
+ static Maat_feather_t _shared_feather;
+ static int linger_timeout;
};
Maat_feather_t MaatCmdTest::_shared_feather;
-
+int MaatCmdTest::linger_timeout;
int test_add_expr_command(Maat_feather_t feather,const char* region_table,int config_id, int timeout,int label_id, const char* keywords)
{
struct Maat_cmd_t* cmd=NULL;
@@ -1043,7 +1043,9 @@ int is_same_file(const char* filename1, const char* filename2)
return 0;
}
}
-int g_test_foregin_read_OK=0;
+int g_test_foregin_read_OK=0, g_test_foreign_del_OK=0;
+char file1_to_del[256], file2_to_del[256];
+
void foreign_key_test_entry_cb(int table_id,const char* table_line,void* u_para)
{
int rule_id=-1, not_care=0, tag=0;
@@ -1060,10 +1062,19 @@ void foreign_key_test_entry_cb(int table_id,const char* table_line,void* u_para)
, file2_origin_name, file2_localname
, end);
EXPECT_STREQ(end, "End");
- EXPECT_TRUE(is_same_file(file1_origin_name, file1_localname));
- EXPECT_TRUE(is_same_file(file2_origin_name, file2_localname));
+ if(is_valid==1)
+ {
+ EXPECT_TRUE(is_same_file(file1_origin_name, file1_localname));
+ EXPECT_TRUE(is_same_file(file2_origin_name, file2_localname));
- g_test_foregin_read_OK=1;
+ g_test_foregin_read_OK=1;
+ }
+ else
+ {
+ strcpy(file1_to_del, file1_localname);
+ strcpy(file2_to_del, file2_localname);
+ g_test_foreign_del_OK=1;
+ }
return;
}
@@ -1085,12 +1096,14 @@ TEST_F(MaatCmdTest, SetFile)
size_t file_size=0;
prepare_file_to_set(file1_name, &file_buff, &file_size, file1_key, sizeof(file1_key));
- Maat_cmd_set_file(feather, file1_key, file_buff, file_size, MAAT_OP_ADD);
+ ret=Maat_cmd_set_file(feather, file1_key, file_buff, file_size, MAAT_OP_ADD);
+ EXPECT_EQ(ret, 1);
free(file_buff);
file_buff=NULL;
prepare_file_to_set(file2_name, &file_buff, &file_size, file2_key, sizeof(file2_key));
- Maat_cmd_set_file(feather, file2_key, file_buff, file_size, MAAT_OP_ADD);
+ ret=Maat_cmd_set_file(feather, file2_key, file_buff, file_size, MAAT_OP_ADD);
+ EXPECT_EQ(ret, 1);
free(file_buff);
file_buff=NULL;
g_test_foregin_read_OK=0;
@@ -1110,6 +1123,23 @@ TEST_F(MaatCmdTest, SetFile)
EXPECT_EQ(ret, 1);
usleep(WAIT_FOR_EFFECTIVE_US);//wait for callback triggered.
EXPECT_EQ(g_test_foregin_read_OK, 1);
+
+ g_test_foreign_del_OK=0;
+ ret=Maat_cmd_set_file(feather, file1_key, NULL, 0, MAAT_OP_DEL);
+ EXPECT_EQ(ret, 1);
+ ret=Maat_cmd_set_file(feather, file2_key, NULL, 0, MAAT_OP_DEL);
+ EXPECT_EQ(ret, 1);
+
+ ret=Maat_cmd_set_line(feather, &line_rule, MAAT_OP_DEL);
+ EXPECT_EQ(ret, 1);
+ sleep(MaatCmdTest::linger_timeout+1);
+
+ struct stat file_info;
+ ret=stat(file1_to_del, &file_info);
+ EXPECT_EQ(ret, -1);
+ ret=stat(file2_to_del, &file_info);
+ EXPECT_EQ(ret, -1);
+
return;
}
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
index 5cb7cc2..8cb7a2f 100644
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
@@ -4,8 +4,8 @@ target_link_libraries(digest_gen maat_frame_shared)
add_executable(maat_redis_tool maat_redis_tool.cpp)
add_dependencies(maat_redis_tool maat_frame_shared)
-target_link_libraries(maat_redis_tool maat_frame_shared)
+target_link_libraries(maat_redis_tool maat_frame_static ${MAAT_DEPEND_DYN_LIB})
target_include_directories(maat_redis_tool PRIVATE ${PROJECT_SOURCE_DIR}/src/inc_internal/)
-target_include_directories(maat_redis_tool PRIVATE ${PROJECT_SOURCE_DIR}/src/inc_internal/hiredis)
+target_include_directories(maat_redis_tool PRIVATE hiredis-vip-static)
diff --git a/vendor/CMakeLists.txt b/vendor/CMakeLists.txt
index 2d8dc72..52db358 100644
--- a/vendor/CMakeLists.txt
+++ b/vendor/CMakeLists.txt
@@ -2,12 +2,12 @@
include(ExternalProject)
#### GoogleTest
-ExternalProject_Add(googletest PREFIX googletest
+ExternalProject_Add(GoogleTest PREFIX GoogleTest
URL ${CMAKE_CURRENT_SOURCE_DIR}/googletest-release-1.8.0.tar.gz
URL_MD5 16877098823401d1bf2ed7891d7dce36
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE})
-ExternalProject_Get_Property(googletest INSTALL_DIR)
+ExternalProject_Get_Property(GoogleTest INSTALL_DIR)
file(MAKE_DIRECTORY ${INSTALL_DIR}/include)
add_library(gtest STATIC IMPORTED GLOBAL)
@@ -15,14 +15,18 @@ set_property(TARGET gtest PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/lib/libgtest
set_property(TARGET gtest PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include)
set_property(TARGET gtest PROPERTY INTERFACE_LINK_LIBRARIES pthread)
-#### hiredis-vip
-#ExternalProject_Add(hiredis-vip PREFIX hiredis-vip
-# URL ${CMAKE_CURRENT_SOURCE_DIR}/hiredis-vip-0.3.0.tar.gz
-# URL_MD5 e4d4a2928188b11f696d35ca1c52e9a4
-# CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE})
-#
-#ExternalProject_Get_Property(hiredis-vip INSTALL_DIR)
-#file(MAKE_DIRECTORY ${INSTALL_DIR}/include)
-#
-#add_library(hiredisv STATIC IMPORTED GLOBAL)
-#set_property(TARGET gtest PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/libhiredis_vip.a)
+ExternalProject_Add(hiredis-vip PREFIX hiredis-vip
+ URL ${CMAKE_CURRENT_SOURCE_DIR}/hiredis-vip-0.3.0.tar.gz
+ URL_MD5 e4d4a2928188b11f696d35ca1c52e9a4
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND make
+ INSTALL_COMMAND ""
+ BUILD_IN_SOURCE 1)
+
+ExternalProject_Get_Property(hiredis-vip SOURCE_DIR)
+set(HTTP_PARSER_INCLUDE_DIRECTORIES ${SOURCE_DIR})
+file(MAKE_DIRECTORY ${HTTP_PARSER_INCLUDE_DIRECTORIES})
+
+add_library(hiredis-vip-static STATIC IMPORTED GLOBAL)
+set_property(TARGET hiredis-vip-static PROPERTY IMPORTED_LOCATION ${SOURCE_DIR}/libhiredis_vip.a)
+set_property(TARGET hiredis-vip-static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${SOURCE_DIR})
diff --git a/vendor/googletest-release-1.8.0.tar.gz b/vendor/googletest-release-1.8.0.tar.gz
new file mode 100644
index 0000000..a40df33
--- /dev/null
+++ b/vendor/googletest-release-1.8.0.tar.gz
Binary files differ
diff --git a/vendor/hiredis-vip-0.3.0.tar.gz b/vendor/hiredis-vip-0.3.0.tar.gz
new file mode 100644
index 0000000..cf88a1b
--- /dev/null
+++ b/vendor/hiredis-vip-0.3.0.tar.gz
Binary files differ