summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x.gitignore3
-rw-r--r--.gitlab-ci.yml233
-rw-r--r--CMakeLists.txt10
-rw-r--r--src/HTTP_Common.c244
-rw-r--r--src/HTTP_Message.c10
-rw-r--r--src/HTTP_Message_Entry.c9
-rw-r--r--src/lib/http-parser-2.9.0.tar.gzbin51324 -> 0 bytes
-rw-r--r--src/lib/libhttp_parser.abin56424 -> 0 bytes
-rw-r--r--test/CMakeLists.txt72
-rw-r--r--test/http_test_plug.cpp3
-rw-r--r--test/test_protocol_run.zipbin795325 -> 0 bytes
-rw-r--r--vendor/CMakeLists.txt17
-rw-r--r--vendor/http-parser-2.9.0.tar.gzbin0 -> 51272 bytes
13 files changed, 355 insertions, 246 deletions
diff --git a/.gitignore b/.gitignore
index bbf96e4..85596f0 100755
--- a/.gitignore
+++ b/.gitignore
@@ -4,8 +4,9 @@ SI/
*.so
*.si4project/
*.d
-build*/
+build/*
.vscode
.idea
core.*
version.txt
+.cache/
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index be9c9f2..c3220ec 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,17 +1,69 @@
variables:
GIT_STRATEGY: "clone"
- BUILD_IMAGE_CENTOS7: "git.mesalab.cn:7443/mesa_platform/build-env:master"
- BUILD_IMAGE_CENTOS8: "git.mesalab.cn:7443/mesa_platform/build-env:rockylinux"
+ BUILD_IMAGE_CENTOS8: "git.mesalab.cn:7443/mesa_platform/build-env:rocky8-for-sapp"
+ BUILD_IMAGE_AARCH64_ROCKY9: "git.mesalab.cn:7443/mesa_platform/build-env:rocky9-aarch64"
BUILD_PADDING_PREFIX: /tmp/padding_for_CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX_PREFIX_PREFIX_PREFIX_PREFIX_PREFIX/
- INSTALL_DEPENDENCY_PLATFORM: sapp-devel libasan systemd-devel libnsl
- INSTALL_DEPENDENCY_FRAMEWORK: libMESA_handle_logger-devel libcjson-devel libMESA_field_stat2-devel framework_env libMESA_prof_load-devel libbreakpad_mini-devel libMESA_htable-devel libMESA_field_stat-devel libdocumentanalyze-devel
- INSTALL_PREFIX: "/home/mesasoft/sapp_run/"
+ INSTALL_DEPENDENCY_PLATFORM: sapp-devel libasan systemd-devel libnsl libmnl-devel libnfnetlink-devel
+ INSTALL_DEPENDENCY_FRAMEWORK: libMESA_handle_logger-devel libcjson-devel libMESA_field_stat2 libMESA_field_stat2-devel framework_env libMESA_prof_load-devel libbreakpad_mini-devel libMESA_htable-devel libMESA_field_stat-devel libdocumentanalyze-devel libfieldstat3 libfieldstat4
+ INSTALL_PREFIX: "/opt/tsg/sapp/"
stages:
+- cppcheck
- build
- test
- package
+###############################################################################
+# cppcheck
+###############################################################################
+.cppcheck_script:
+ variables:
+ BUILD_TYPE: Debug
+ stage: cppcheck
+ script:
+ - mkdir -p build; cd build; cmake3 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..
+ - >
+ cppcheck --project=compile_commands.json
+ --enable=all
+ --error-exitcode=1
+ --suppress=unusedFunction
+ --suppress=missingInclude
+ --suppress=uselessAssignmentPtrArg
+ --suppress=unmatchedSuppression
+ --suppress=variableScope
+ --suppress=unreadVariable
+ --suppress=cstyleCast
+ --suppress=memleakOnRealloc
+ --suppress=constParameter
+ --suppress=uselessAssignmentArg
+ --suppress=uninitvar
+ --suppress=unusedStructMember
+ --suppress=preprocessorErrorDirective
+ --suppress=syntaxError
+ --suppress=alidscanf
+ --suppress=knownConditionTrueFalse
+ --suppress=invalidscanf
+ --suppress=nullPointerRedundantCheck
+ --suppress=shiftNegativeLHS
+ --suppress=unsignedLessThanZero
+ --suppress=arithOperationsOnVoidPointer
+
+run_cppcheck_for_x86_64_rocky8:
+ extends: .cppcheck_script
+ image: $BUILD_IMAGE_CENTOS8
+ tags:
+ - tsg-os-builder-el8
+
+run_cppcheck_for_aarch64_rocky9:
+ extends: .cppcheck_script
+ image: $BUILD_IMAGE_AARCH64_ROCKY9
+ tags:
+ - tsg-os-builder-aarch64
+
+###############################################################################
+# build for rocky8
+###############################################################################
+
.build_before_script:
before_script:
- mkdir -p $BUILD_PADDING_PREFIX/$CI_PROJECT_NAMESPACE/
@@ -21,53 +73,18 @@ stages:
- yum makecache
- yum install -y elfutils-libelf-devel
-
-.build_by_travis_for_centos7:
- stage: build
- image: $BUILD_IMAGE_CENTOS7
- extends: .build_before_script
- script:
- - yum install -y libmnl-devel
- - yum install -y libnfnetlink-devel
- - ./ci/travis.sh
- - cd build
- tags:
- - share
-
.build_by_travis_for_centos8:
stage: build
image: $BUILD_IMAGE_CENTOS8
extends: .build_before_script
script:
- - dnf --enablerepo=powertools install -y libmnl-devel
- - dnf --enablerepo=powertools install -y libnfnetlink-devel
- ./ci/travis.sh
tags:
- - share
-
-run_test_for_centos7:
- stage: test
- extends: .build_by_travis_for_centos7
- script:
- - yum makecache
- - ./ci/travis.sh
- - cd build
- - ./test/HTTPUintTest
- - ctest --verbose
-
-run_test_for_centos8:
- stage: test
- extends: .build_by_travis_for_centos8
- script:
- - yum makecache
- - ./ci/travis.sh
- - cd build
- - ./test/HTTPUintTest
- - ctest3 --verbose
+ - tsg-os-builder-el8
-branch_build_debug_for_centos7:
+branch_build_debug_for_centos8:
stage: build
- extends: .build_by_travis_for_centos7
+ extends: .build_by_travis_for_centos8
variables:
BUILD_TYPE: Debug
except:
@@ -75,27 +92,27 @@ branch_build_debug_for_centos7:
- /^master.*$/i
- tags
-branch_build_release_for_centos7:
+branch_build_release_for_centos8:
stage: build
variables:
BUILD_TYPE: RelWithDebInfo
- extends: .build_by_travis_for_centos7
+ extends: .build_by_travis_for_centos8
except:
- /^develop.*$/i
- /^master.*$/i
- tags
-develop_build_debug_for_centos7:
+develop_build_debug_for_centos8:
stage: build
- extends: .build_by_travis_for_centos7
+ extends: .build_by_travis_for_centos8
variables:
BUILD_TYPE: Debug
PACKAGE: 1
UPLOAD_RPM: 1
ASAN_OPTION: ADDRESS
TESTING_VERSION_BUILD: 1
- PULP3_REPO_NAME: protocol-testing-x86_64.el7
- PULP3_DIST_NAME: protocol-testing-x86_64.el7
+ PULP3_REPO_NAME: protocol-testing-x86_64.el8
+ PULP3_DIST_NAME: protocol-testing-x86_64.el8
artifacts:
name: "http-$CI_COMMIT_REF_NAME-debug"
paths:
@@ -104,16 +121,16 @@ develop_build_debug_for_centos7:
- /^develop.*$/i
- /^master.*$/i
-develop_build_release_for_centos7:
+develop_build_release_for_centos8:
stage: build
- extends: .build_by_travis_for_centos7
+ extends: .build_by_travis_for_centos8
variables:
BUILD_TYPE: RelWithDebInfo
PACKAGE: 1
UPLOAD_RPM: 1
TESTING_VERSION_BUILD: 1
- PULP3_REPO_NAME: protocol-testing-x86_64.el7
- PULP3_DIST_NAME: protocol-testing-x86_64.el7
+ PULP3_REPO_NAME: protocol-testing-x86_64.el8
+ PULP3_DIST_NAME: protocol-testing-x86_64.el8
artifacts:
name: "http-$CI_COMMIT_REF_NAME-release"
paths:
@@ -122,16 +139,16 @@ develop_build_release_for_centos7:
- /^develop.*$/i
- /^master.*$/i
-release_build_debug_for_centos7:
+release_build_debug_for_centos8:
stage: package
variables:
BUILD_TYPE: Debug
PACKAGE: 1
UPLOAD_RPM: 1
ASAN_OPTION: ADDRESS
- PULP3_REPO_NAME: protocol-stable-x86_64.el7
- PULP3_DIST_NAME: protocol-stable-x86_64.el7
- extends: .build_by_travis_for_centos7
+ PULP3_REPO_NAME: protocol-stable-x86_64.el8
+ PULP3_DIST_NAME: protocol-stable-x86_64.el8
+ extends: .build_by_travis_for_centos8
artifacts:
name: "http-$CI_COMMIT_REF_NAME-debug"
paths:
@@ -139,7 +156,7 @@ release_build_debug_for_centos7:
only:
- tags
-release_build_release_for_centos7:
+release_build_release_for_centos8:
stage: package
variables:
BUILD_TYPE: RelWithDebInfo
@@ -147,9 +164,9 @@ release_build_release_for_centos7:
UPLOAD_RPM: 1
UPLOAD_SYMBOL_FILES: 0
SYMBOL_TARGET: http
- PULP3_REPO_NAME: protocol-stable-x86_64.el7
- PULP3_DIST_NAME: protocol-stable-x86_64.el7
- extends: .build_by_travis_for_centos7
+ PULP3_REPO_NAME: protocol-stable-x86_64.el8
+ PULP3_DIST_NAME: protocol-stable-x86_64.el8
+ extends: .build_by_travis_for_centos8
artifacts:
name: "http-$CI_COMMIT_REF_NAME-release"
paths:
@@ -157,9 +174,21 @@ release_build_release_for_centos7:
only:
- tags
-branch_build_debug_for_centos8:
+###############################################################################
+# build for rocky9
+###############################################################################
+.build_by_travis_for_rocky9:
stage: build
- extends: .build_by_travis_for_centos8
+ image: $BUILD_IMAGE_AARCH64_ROCKY9
+ extends: .build_before_script
+ script:
+ - ./ci/travis.sh
+ tags:
+ - tsg-os-builder-aarch64
+
+branch_build_debug_for_rocky9:
+ stage: build
+ extends: .build_by_travis_for_rocky9
variables:
BUILD_TYPE: Debug
except:
@@ -167,27 +196,27 @@ branch_build_debug_for_centos8:
- /^master.*$/i
- tags
-branch_build_release_for_centos8:
+branch_build_release_for_rocky9:
stage: build
variables:
BUILD_TYPE: RelWithDebInfo
- extends: .build_by_travis_for_centos8
+ extends: .build_by_travis_for_rocky9
except:
- /^develop.*$/i
- /^master.*$/i
- tags
-develop_build_debug_for_centos8:
+develop_build_debug_for_rocky9:
stage: build
- extends: .build_by_travis_for_centos8
+ extends: .build_by_travis_for_rocky9
variables:
BUILD_TYPE: Debug
PACKAGE: 1
UPLOAD_RPM: 1
ASAN_OPTION: ADDRESS
TESTING_VERSION_BUILD: 1
- PULP3_REPO_NAME: protocol-testing-x86_64.el8
- PULP3_DIST_NAME: protocol-testing-x86_64.el8
+ PULP3_REPO_NAME: protocol-testing-aarch64.el9
+ PULP3_DIST_NAME: protocol-testing-aarch64.el9
artifacts:
name: "http-$CI_COMMIT_REF_NAME-debug"
paths:
@@ -196,16 +225,16 @@ develop_build_debug_for_centos8:
- /^develop.*$/i
- /^master.*$/i
-develop_build_release_for_centos8:
+develop_build_release_for_rocky9:
stage: build
- extends: .build_by_travis_for_centos8
+ extends: .build_by_travis_for_rocky9
variables:
BUILD_TYPE: RelWithDebInfo
PACKAGE: 1
UPLOAD_RPM: 1
TESTING_VERSION_BUILD: 1
- PULP3_REPO_NAME: protocol-testing-x86_64.el8
- PULP3_DIST_NAME: protocol-testing-x86_64.el8
+ PULP3_REPO_NAME: protocol-testing-aarch64.el9
+ PULP3_DIST_NAME: protocol-testing-aarch64.el9
artifacts:
name: "http-$CI_COMMIT_REF_NAME-release"
paths:
@@ -214,16 +243,16 @@ develop_build_release_for_centos8:
- /^develop.*$/i
- /^master.*$/i
-release_build_debug_for_centos8:
+release_build_debug_for_rocky9:
stage: package
variables:
BUILD_TYPE: Debug
PACKAGE: 1
UPLOAD_RPM: 1
ASAN_OPTION: ADDRESS
- PULP3_REPO_NAME: protocol-stable-x86_64.el8
- PULP3_DIST_NAME: protocol-stable-x86_64.el8
- extends: .build_by_travis_for_centos8
+ PULP3_REPO_NAME: protocol-stable-aarch64.el9
+ PULP3_DIST_NAME: protocol-stable-aarch64.el9
+ extends: .build_by_travis_for_rocky9
artifacts:
name: "http-$CI_COMMIT_REF_NAME-debug"
paths:
@@ -231,7 +260,7 @@ release_build_debug_for_centos8:
only:
- tags
-release_build_release_for_centos8:
+release_build_release_for_rocky9:
stage: package
variables:
BUILD_TYPE: RelWithDebInfo
@@ -239,12 +268,54 @@ release_build_release_for_centos8:
UPLOAD_RPM: 1
UPLOAD_SYMBOL_FILES: 0
SYMBOL_TARGET: http
- PULP3_REPO_NAME: protocol-stable-x86_64.el8
- PULP3_DIST_NAME: protocol-stable-x86_64.el8
- extends: .build_by_travis_for_centos8
+ PULP3_REPO_NAME: protocol-stable-aarch64.el9
+ PULP3_DIST_NAME: protocol-stable-aarch64.el9
+ extends: .build_by_travis_for_rocky9
artifacts:
name: "http-$CI_COMMIT_REF_NAME-release"
paths:
- build/*.rpm
only:
- tags
+
+###############################################################################
+# test
+###############################################################################
+.download_rpm_package: &download_rpm_package
+ - yumdownloader sapp-4.3.69.6dd815e
+ - yumdownloader sapp-devel-4.3.69.6dd815e
+ - mv sapp-4.3.69.6dd815e*.rpm /tmp/sapp.rpm
+ - mv sapp-devel-4.3.69.6dd815e*.rpm /tmp/sapp-devel.rpm
+
+.install_rpm_package: &install_rpm_package
+ - rpm -e sapp || true
+ - rpm -e sapp-devel || true
+ - rpm -ivh /tmp/sapp.rpm --prefix=${INSTALL_PREFIX} --force --nodeps
+ - rpm -ivh /tmp/sapp-devel.rpm --prefix=${INSTALL_PREFIX} --force --nodeps
+ - rpm -qa | grep sapp
+ - ls -l ${INSTALL_PREFIX}
+ - ldd ${INSTALL_PREFIX}/sapp
+
+run_test_for_centos8:
+ stage: test
+ extends: .build_by_travis_for_centos8
+ script:
+ - yum makecache
+ - ./ci/travis.sh
+ - cd build
+ - ./test/HTTPUintTest
+ - *download_rpm_package
+ - *install_rpm_package
+ - ctest3 --verbose
+
+run_test_for_rocky9:
+ stage: test
+ extends: .build_by_travis_for_rocky9
+ script:
+ - yum makecache
+ - ./ci/travis.sh
+ - cd build
+ - ./test/HTTPUintTest
+ - *download_rpm_package
+ - *install_rpm_package
+ - ctest3 --verbose
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a1d07f0..3bd2125 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,6 +4,8 @@ set(lib_name http)
project (${lib_name})
+add_subdirectory(vendor)
+
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
include(Version)
@@ -35,20 +37,22 @@ include_directories(./src/inc/)
include_directories(./src/)
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
- set(CMAKE_INSTALL_PREFIX "/home/mesasoft/sapp_run" CACHE PATH "default install path" FORCE)
+ set(CMAKE_INSTALL_PREFIX "/opt/tsg/sapp" CACHE PATH "default install path" FORCE)
+ message(STATUS "CMAKE_INSTALL_PREFIX='${CMAKE_INSTALL_PREFIX}'")
endif()
file(GLOB SRC
"src/*.c"
)
-
set(HTTP_DEPEND_DYN_LIB MESA_handle_logger MESA_field_stat MESA_prof_load documentanalyze MESA_htable)
# Shared Library Output
add_library(http SHARED ${SRC})
set_target_properties(http PROPERTIES PREFIX "")
-target_link_libraries(http ${HTTP_DEPEND_DYN_LIB} ${PROJECT_SOURCE_DIR}/src/lib/libhttp_parser.a)
+# target_link_libraries(http ${HTTP_DEPEND_DYN_LIB} ${PROJECT_SOURCE_DIR}/src/lib/libhttp_parser.a)
+target_link_libraries(http ${HTTP_DEPEND_DYN_LIB} http_parser-static)
+
if(DEFINED MESA_SHARED_INSTALL_DIR)
set_target_properties(http PROPERTIES OUTPUT_NAME ${lib_name} LIBRARY_OUTPUT_DIRECTORY ${MESA_SHARED_INSTALL_DIR})
else()
diff --git a/src/HTTP_Common.c b/src/HTTP_Common.c
index 358da91..578d452 100644
--- a/src/HTTP_Common.c
+++ b/src/HTTP_Common.c
@@ -1,84 +1,87 @@
#include <stdio.h>
-#include <string.h>
+#include <stdlib.h>
+#include <string.h>
#include <ctype.h>
#include "HTTP_Common.h"
#include "HTTP_Message.h"
-
void http_freeBuf(int thread_seq, char **buf, uint32 *buflen)
{
- if(*buf!=NULL)
+ if (*buf != NULL)
{
- dictator_free(thread_seq,*buf);
+ dictator_free(thread_seq, *buf);
*buf = NULL;
*buflen = 0;
- }
+ }
return;
}
-char* double_memchr(const char* before, uint32 before_len, const char* this_data, uint32 this_len, char c)
+char *double_memchr(const char *before, uint32 before_len, const char *this_data, uint32 this_len, char c)
{
/*before only find last two char*/
- if(before_len>=1)
+ if (before_len >= 1)
{
- if(*(before+(before_len-1))==c) return (char*)(before+(before_len-1));
+ if (*(before + (before_len - 1)) == c)
+ return (char *)(before + (before_len - 1));
}
- if(before_len>=2)
+ if (before_len >= 2)
{
- if(*(before+(before_len-2))==c) return (char*)(before+(before_len-2));
+ if (*(before + (before_len - 2)) == c)
+ return (char *)(before + (before_len - 2));
}
- return (char*)memchr(this_data,c,this_len);
+ return (char *)memchr(this_data, c, this_len);
}
/*
char* double_memchr(const char* before, uint32 before_len, const char* this_data, uint32 this_len, char c)
{
- char*pos=(char*)memchr(before,c,before_len);
- if(pos!=NULL)
- {
- return pos;
- }
- pos=(char*)memchr(this_data,c,this_len);
- return pos;
+ char*pos=(char*)memchr(before,c,before_len);
+ if(pos!=NULL)
+ {
+ return pos;
+ }
+ pos=(char*)memchr(this_data,c,this_len);
+ return pos;
}
*/
-char* double_memread(const char*before,uint32 before_len,const char* this_data,uint32 this_len,const char*pos,uint32 offset)
+char *double_memread(const char *before, uint32 before_len, const char *this_data, uint32 this_len, const char *pos, uint32 offset)
{
- const char* v_target=pos+offset;
- if((pos>=before&&pos<before+before_len)||(pos>=this_data&&pos<this_data+this_len))
+ const char *v_target = pos + offset;
+ if ((pos >= before && pos < before + before_len) || (pos >= this_data && pos < this_data + this_len))
{
- if(before<=v_target&&v_target<before+before_len)
+ if (before <= v_target && v_target < before + before_len)
{
- return (char*)v_target;
- }
- if(this_data<=v_target&&v_target<this_data+this_len)
+ return (char *)v_target;
+ }
+ if (this_data <= v_target && v_target < this_data + this_len)
{
- return (char*)v_target;
+ return (char *)v_target;
}
- if(this_data<=(this_data+offset-(before+before_len-pos))&&(this_data+offset-(before+before_len-pos))<this_data+this_len)
+ if (this_data <= (this_data + offset - (before + before_len - pos)) && (this_data + offset - (before + before_len - pos)) < this_data + this_len)
{
- return (char*)(this_data+offset-(before+before_len-pos));
- }
- }
+ return (char *)(this_data + offset - (before + before_len - pos));
+ }
+ }
return NULL;
}
-uint32 double_mem_offset(const char*before,uint32 before_len,const char* this_data,uint32 this_len,const char* p)
+uint32 double_mem_offset(const char *before, uint32 before_len, const char *this_data, uint32 this_len, const char *p)
{
- if(p>=this_data&&p<this_data+this_len)
+ if (p >= this_data && p < this_data + this_len)
{
- return before_len+(p-this_data);
+ return before_len + (p - this_data);
}
- if(p>=before&&p<before+before_len)
+ if (p >= before && p < before + before_len)
{
- return p-before;
- }
+ return p - before;
+ }
return -1;
}
char A_to_a(char ch)
{
- if(ch>='A'&&ch<='Z') return ch+'a'-'A';
+ if (ch >= 'A' && ch <= 'Z')
+ return ch + 'a' - 'A';
return ch;
}
@@ -87,27 +90,29 @@ char A_to_a(char ch)
* offset:����ֵ����һ�����ǿ��У��ո��Ʊ��������ڵ�ǰ���ݵ�ƫ������
* data����ǰ���ݡ�
* data_len:��ǰ���ݵij��ȡ�
-***********************************************************/
-void http_deleteEmptyRow(uint32 *offset, char* data, uint32 data_len)
-{
- if(NULL==data||data_len==0) return;
- while(*offset<data_len && (int)*offset>=0)
+ ***********************************************************/
+void http_deleteEmptyRow(uint32 *offset, char *data, uint32 data_len)
+{
+ if (NULL == data || data_len == 0)
+ return;
+ while (*offset < data_len && (int)*offset >= 0)
{
- if(HTTP_CR!=*(data+(*offset)) && HTTP_NULL!=*(data+(*offset)) && HTTP_LF!=*(data+(*offset)) && HTTP_SP!=*(data+(*offset)) && HTTP_HT!=*(data+(*offset)))
+ if (HTTP_CR != *(data + (*offset)) && HTTP_NULL != *(data + (*offset)) && HTTP_LF != *(data + (*offset)) && HTTP_SP != *(data + (*offset)) && HTTP_HT != *(data + (*offset)))
break;
- if(HTTP_CR==*(data+(*offset)) || HTTP_NULL==*(data+(*offset)) || HTTP_LF==*(data+(*offset)) || HTTP_SP==*(data+(*offset)) || HTTP_HT==*(data+(*offset)))
+ if (HTTP_CR == *(data + (*offset)) || HTTP_NULL == *(data + (*offset)) || HTTP_LF == *(data + (*offset)) || HTTP_SP == *(data + (*offset)) || HTTP_HT == *(data + (*offset)))
(*offset)++;
}
}
-void http_deleteEmptyRow_chunk(uint32 *offset, char* data, uint32 data_len)
-{
- if(NULL==data||data_len==0) return;
- while(*offset<data_len && (int)*offset>=0)
+void http_deleteEmptyRow_chunk(uint32 *offset, char *data, uint32 data_len)
+{
+ if (NULL == data || data_len == 0)
+ return;
+ while (*offset < data_len && (int)*offset >= 0)
{
- if(HTTP_CR!=*(data+(*offset)) && HTTP_LF!=*(data+(*offset))&& HTTP_SP!=*(data+(*offset)) && HTTP_HT!=*(data+(*offset)) && 0!=*(data+(*offset)))
+ if (HTTP_CR != *(data + (*offset)) && HTTP_LF != *(data + (*offset)) && HTTP_SP != *(data + (*offset)) && HTTP_HT != *(data + (*offset)) && 0 != *(data + (*offset)))
break;
- if(HTTP_CR==*(data+(*offset)) || HTTP_LF==*(data+(*offset))|| HTTP_SP==*(data+(*offset)) || HTTP_HT==*(data+(*offset)) || 0==*(data+(*offset)))
+ if (HTTP_CR == *(data + (*offset)) || HTTP_LF == *(data + (*offset)) || HTTP_SP == *(data + (*offset)) || HTTP_HT == *(data + (*offset)) || 0 == *(data + (*offset)))
(*offset)++;
}
return;
@@ -118,40 +123,42 @@ void http_deleteEmptyRow_chunk(uint32 *offset, char* data, uint32 data_len)
* offset:����ֵ����һ�����ǿ��У��ո��Ʊ��������ڵ�ǰ���ݵ�ƫ������
* data����ǰ���ݡ�
* data_len����ǰ���ݵij��ȡ�
-***********************************************************/
-void http_deleteSPHT(uint32 *offset, char* data, uint32 data_len)
+ ***********************************************************/
+void http_deleteSPHT(uint32 *offset, char *data, uint32 data_len)
{
- while(*offset<data_len && (int)*offset>=0)
+ while (*offset < data_len && (int)*offset >= 0)
{
- if(HTTP_SP!=*(data+(*offset)) && HTTP_HT!=*(data+(*offset)))
+ if (HTTP_SP != *(data + (*offset)) && HTTP_HT != *(data + (*offset)))
break;
(*offset)++;
}
-}/*http_deleteSPHTCRLFAtLast*/
+} /*http_deleteSPHTCRLFAtLast*/
/**********************************************************
* ���ܣ�ɾ��data����Ŀո񣬿��У��Ʊ�����
* del_data_len��ɾ�������ݵij��ȡ�
* data����ǰ���ݡ�
* data_len����ǰ���ݵij��ȡ�
-***********************************************************/
-void http_deleteSPHTCRLFAtLast(uint32 *del_data_len, char* data, uint32 data_len)
+ ***********************************************************/
+void http_deleteSPHTCRLFAtLast(uint32 *del_data_len, char *data, uint32 data_len)
{
- if (data == NULL || data_len == 0 || del_data_len == NULL) {
- return;
- }
+ if (data == NULL || data_len == 0 || del_data_len == NULL)
+ {
+ return;
+ }
- // ��ʼ��Ҫɾ���ij���Ϊ���ݳ���
- *del_data_len = data_len;
+ // ��ʼ��Ҫɾ���ij���Ϊ���ݳ���
+ *del_data_len = data_len;
- // ������ĩβ��ǰ���ҷǿհ��ַ��ͻ��з�
- while (*del_data_len > 0 &&
- (data[*del_data_len - 1] == HTTP_CR ||
- data[*del_data_len - 1] == HTTP_HT ||
- data[*del_data_len - 1] == HTTP_SP ||
- data[*del_data_len - 1] == HTTP_LF)) {
- (*del_data_len)--;
- }
+ // ������ĩβ��ǰ���ҷǿհ��ַ��ͻ��з�
+ while (*del_data_len > 0 &&
+ (data[*del_data_len - 1] == HTTP_CR ||
+ data[*del_data_len - 1] == HTTP_HT ||
+ data[*del_data_len - 1] == HTTP_SP ||
+ data[*del_data_len - 1] == HTTP_LF))
+ {
+ (*del_data_len)--;
+ }
}
/**********************************************************
@@ -159,88 +166,91 @@ void http_deleteSPHTCRLFAtLast(uint32 *del_data_len, char* data, uint32 data_len
* res:���ֵ��ͨ���ò����ж��Ƿ����\r\n
* all_data:�������ݻ�������
**********************************************************/
-char* http_findCRLF(char *all_data, uint32 len)
+char *http_findCRLF(char *all_data, uint32 len)
{
- if(NULL==all_data||0==len) return NULL;
- char *s_cr=NULL;
- s_cr=(char*)memchr(all_data,'\r',len);
+ if (NULL == all_data || 0 == len)
+ return NULL;
+ char *s_cr = NULL;
+ s_cr = (char *)memchr(all_data, '\r', len);
/*����\r*/
- if(NULL!=s_cr)
- {
+ if (NULL != s_cr)
+ {
return s_cr;
}
- /*û����\r*/
+ /*û����\r*/
return NULL;
}
-char* http_findCRLF_Chunk(char *all_data, uint32 len, uint32* end_flag_size)
+char *http_findCRLF_Chunk(char *all_data, uint32 len, uint32 *end_flag_size)
{
- if(all_data==NULL || len==0) return NULL;
+ if (all_data == NULL || len == 0)
+ return NULL;
- char *s_cr=NULL;
- char *s_lf=NULL;
- char *p_ret=NULL;
- uint32 rf = 2;
- s_cr=(char*)memchr(all_data, '\r',len);
- s_lf=(char*)memmem(all_data, len, (void*)"\0\n", rf);
- if(NULL!=s_cr && NULL!=s_lf)
+ char *s_cr = NULL;
+ char *s_lf = NULL;
+ char *p_ret = NULL;
+ uint32 rf = 2;
+ s_cr = (char *)memchr(all_data, '\r', len);
+ s_lf = (char *)memmem(all_data, len, (void *)"\0\n", rf);
+ if (NULL != s_cr && NULL != s_lf)
{
p_ret = MIN(s_cr, s_lf);
- *end_flag_size = (p_ret == s_cr)? 1:2;
+ *end_flag_size = (p_ret == s_cr) ? 1 : 2;
}
- else if(NULL == s_cr && NULL == s_lf)
+ else if (NULL == s_cr && NULL == s_lf)
{
}
else
{
- p_ret = (s_lf != NULL)?s_lf:s_cr;
- *end_flag_size = (s_lf != NULL)? 2:1;
- }
+ p_ret = (s_lf != NULL) ? s_lf : s_cr;
+ *end_flag_size = (s_lf != NULL) ? 2 : 1;
+ }
return p_ret;
}
-void stringA_to_stringa(char* str, uint32 l_str)
+void stringA_to_stringa(char *str, uint32 l_str)
{
- uint16 m =0;
- for(m=0;m<l_str;m++)
+ uint16 m = 0;
+ for (m = 0; m < l_str; m++)
{
str[m] = A_to_a(str[m]);
}
}
/* this function is copy from other system. */
-char *memcasemem(const char *strsrc,int len1,const char *substr,int len2)
+char *memcasemem(const char *strsrc, int len1, const char *substr, int len2)
{
-
- char *p1,*p2,*pend;
+
+ char *p1, *p2, *pend;
char *p;
char *substrS;
- int i,lenth;
+ int i, lenth;
- if((strsrc==NULL)||substr==NULL)
+ if ((strsrc == NULL) || substr == NULL)
+ return NULL;
+ if (len1 < len2)
return NULL;
- if(len1<len2) return NULL;
- lenth=len2;
- substrS=(char *)malloc(sizeof(char)*(lenth+1));
- if(substrS==NULL)
+ lenth = len2;
+ substrS = (char *)malloc(sizeof(char) * (lenth + 1));
+ if (substrS == NULL)
return NULL;
- for(i=0;i<lenth;i++)
+ for (i = 0; i < lenth; i++)
{
- substrS[i]=tolower(*(substr+i));
+ substrS[i] = tolower(*(substr + i));
}
- substrS[lenth]=0;
+ substrS[lenth] = 0;
- lenth=len1;
- pend =(char *)strsrc + lenth;
- for(p1 =(char *) strsrc; p1 != pend;p1++)
+ lenth = len1;
+ pend = (char *)strsrc + lenth;
+ for (p1 = (char *)strsrc; p1 != pend; p1++)
{
- for(p2 = p1,p = substrS;*p != '\0'&& p2 != pend;p++,p2++)
+ for (p2 = p1, p = substrS; *p != '\0' && p2 != pend; p++, p2++)
{
- if(tolower(*p2) != *p)
+ if (tolower(*p2) != *p)
break;
}
- if(*p == '\0')
+ if (*p == '\0')
{
free(substrS);
return p1;
@@ -249,14 +259,20 @@ char *memcasemem(const char *strsrc,int len1,const char *substr,int len2)
free(substrS);
return NULL;
-}
+}
+#include <time.h>
long long rdtsc(void)
{
+#if 0 // adapt for x86 and AArch64
long long l;
long long h;
__asm__ volatile("rdtsc" : "=a"(l), "=d"(h));
return (long long )l | ((long long )h<<32);
+#else
+ struct timespec curtime;
+ clock_gettime(CLOCK_MONOTONIC, &curtime);
+ return (long long)curtime.tv_sec * 1000 * 1000 * 1000 + (long long)curtime.tv_nsec;
+#endif
}
-
diff --git a/src/HTTP_Message.c b/src/HTTP_Message.c
index 41ce708..5ffeb6b 100644
--- a/src/HTTP_Message.c
+++ b/src/HTTP_Message.c
@@ -40,7 +40,7 @@ int is_absolute_uri(void* app_info)
int http_line2region(const char *line, uint32 line_len, char** region, uint32* region_len)
{
- /*line����ҵ��㣬��append,����lineǰ��Ŀո��Ѿ�ɾ����ֻ��Ҫɾ��: ֮��Ŀո�*/
+ /*line����ҵ��㣬��append,����lineǰ��Ŀո��Ѿ�ɾ����ֻ��Ҫɾ��?: ֮��Ŀո�?*/
uint32 del_data_len=0;
char* colon_pos = (char*)memchr(line, ':', line_len);
if(NULL==colon_pos) return -1;
@@ -52,7 +52,7 @@ int http_line2region(const char *line, uint32 line_len, char** region, uint32* r
int http_line2value(const char *line, uint32 line_len, char** value, uint32* value_len)
{
- /*line����ҵ��㣬��append,����lineǰ��Ŀո��Ѿ�ɾ����ֻ��Ҫɾ��: ֮��Ŀո�*/
+ /*line����ҵ��㣬��append,����lineǰ��Ŀո��Ѿ�ɾ����ֻ��Ҫɾ��?: ֮��Ŀո�?*/
uint32 vlen=0, sp_offset=0;
char* colon_pos = (char*)memchr(line, ':', line_len);
if(NULL==colon_pos) return -1;
@@ -272,7 +272,7 @@ int http_readHttpConf(const char* filename)
MESA_handle_runtime_log(g_http_prog_para.http_log_handle, RLOG_LV_FATAL, HTTP_PLUGIN_NAME, "http.conf bigger than %d", MAX_REGION_NUM);
return -1;
}
- strncpy(g_http_prog_para.http_conf_regionname[region_id], region_name, strlen(region_name));
+ strncpy(g_http_prog_para.http_conf_regionname[region_id], region_name, REGION_NAME_LEN);
g_http_prog_para.http_region_cnt++;
memset(region_name, 0, sizeof(region_name));
}
@@ -685,8 +685,8 @@ long long HTTP_FLAG_CHANGE(char* flag_str)
}
/**********************************************************
- * ���ܣ��ж���Ϣͷ�Ƿ������
- * buffer:��洢��������
+ * ���ܣ��ж���Ϣͷ�Ƿ������?
+ * buffer:��洢��������?
* data����ǰ���ݡ�
* data_len:��ǰ���ݵij��ȡ�
* proc_offset:��ǰ�����Ѵ������ݵ�ƫ������
diff --git a/src/HTTP_Message_Entry.c b/src/HTTP_Message_Entry.c
index 3e8b7f4..df65ab7 100644
--- a/src/HTTP_Message_Entry.c
+++ b/src/HTTP_Message_Entry.c
@@ -1,4 +1,5 @@
#include <stdio.h>
+#include <string.h>
#include <ctype.h>
#include "HTTP_Message_Entry.h"
#include "HTTP_Message_Header.h"
@@ -87,7 +88,7 @@ void http_doWithGzipData(http_parser_t *cur_http_node, struct streaminfo *a_tcp,
break;
}
- memcpy(unzip_content->buf+unzip_content->buflen, result_array->result_buff[k].presult, min_len);
+ memcpy((char *)unzip_content->buf+unzip_content->buflen, result_array->result_buff[k].presult, min_len);
unzip_content->buflen+=min_len;
}
@@ -252,7 +253,7 @@ uchar http_doWithProxyData(http_parser_t *a_http, http_stream *a_http_stream, st
*offset += len;
rec = GO_BACK;
}
- /*����һ��pkt��ʼ�ص��������������������HTTP�����������ѭ��*/
+ /*����һ��pkt��ʼ�ص��������������������HTTP�����������ѭ��?*/
if(len==0)
{
a_http->proxy_cb_flag = 1;
@@ -267,7 +268,7 @@ uchar http_doWithProxyData(http_parser_t *a_http, http_stream *a_http_stream, st
/**********************************************************
* ���ܣ�Ѱ��chunked�����ݿ�ʼλ��.
- * a_http_node:��Ϣ�ڵ�,�������������Ҳ�Ƿ��ز�����
+ * a_http_node:��Ϣ�ڵ�,�������������Ҳ�Ƿ��ز�����?
* cur_half����ǰ���ݡ�
* ע��after_cr_data_len<1����û�ҵ���ʼλ��
* (*a_http_node)->crlf_offset<1����û�õ����ȡ�
@@ -340,7 +341,7 @@ uchar http_readChunkedData(http_parser_t *a_http, struct streaminfo *a_tcp, int
/**********************************************************
* ���ܣ���ȡchunked�ij���.
- * a_http_node:��Ϣ�ڵ�,�������������Ҳ�Ƿ��ز�����
+ * a_http_node:��Ϣ�ڵ�,�������������Ҳ�Ƿ��ز�����?
* chunked_len:���ֵ��chunked���ݳ���.
* cur_half����ǰ���ݡ�
* return : HTTP_RETURN_SPAN_PACKET HTTP_RETURN_UNNORM
diff --git a/src/lib/http-parser-2.9.0.tar.gz b/src/lib/http-parser-2.9.0.tar.gz
deleted file mode 100644
index abc6d94..0000000
--- a/src/lib/http-parser-2.9.0.tar.gz
+++ /dev/null
Binary files differ
diff --git a/src/lib/libhttp_parser.a b/src/lib/libhttp_parser.a
deleted file mode 100644
index 40a1692..0000000
--- a/src/lib/libhttp_parser.a
+++ /dev/null
Binary files differ
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 98fa7f6..86b8cd7 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -2,7 +2,6 @@ cmake_minimum_required (VERSION 2.8...3.10)
project(${lib_name}_test)
-
include(ExternalProject)
#### GoogleTest
ExternalProject_Add(GoogleTest PREFIX GoogleTest
@@ -18,52 +17,51 @@ 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)
-
enable_testing()
add_executable(HTTPUintTest unit_test.cpp mock_sapp.cpp)
target_link_libraries(HTTPUintTest gtest http)
+if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+ set(CMAKE_INSTALL_PREFIX "/opt/tsg/sapp" CACHE PATH "default install path" FORCE)
+ message(STATUS "CMAKE_INSTALL_PREFIX='${CMAKE_INSTALL_PREFIX}'")
+endif()
+LINK_DIRECTORIES(${CMAKE_INSTALL_PREFIX}/lib)
+LINK_DIRECTORIES(/home/mesasoft/sapp_run/lib)
+LINK_DIRECTORIES(/opt/tsg/sapp/lib/)
+LINK_DIRECTORIES(/opt/MESA/lib/)
+LINK_DIRECTORIES(/opt/tsg/framework/lib/)
-include(ExternalProject)
-#### Protoco_test_run
+set(TEST_RUN_DIR ${CMAKE_INSTALL_PREFIX})
+set(PLUGIN_TEST_MAIN ${CMAKE_INSTALL_PREFIX}/plugin_test_main)
+message(STATUS "TEST_RUN_DIR='${TEST_RUN_DIR}'")
-ExternalProject_Add(ProtoTest PREFIX ProtoTest
- URL ${CMAKE_CURRENT_SOURCE_DIR}/test_protocol_run.zip
- URL_MD5 71d8284b59af0286b5f31f0a3160bc44
- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
- CONFIGURE_COMMAND ""
- BUILD_COMMAND ""
- INSTALL_COMMAND ""
- COMMAND ${CMAKE_COMMAND} -E make_directory <SOURCE_DIR>/conf/${lib_name}/
- COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/bin/http/${lib_name}.conf <SOURCE_DIR>/conf/${lib_name}/
- COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/bin/http/${lib_name}_main.conf <SOURCE_DIR>/conf/${lib_name}/
- COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/conflist.inf <SOURCE_DIR>/plug/
- COMMAND ${CMAKE_COMMAND} -E make_directory <SOURCE_DIR>/plug/protocol/${lib_name}/
- COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/bin/${lib_name}.inf <SOURCE_DIR>/plug/protocol/${lib_name}/
- COMMAND ${CMAKE_COMMAND} -E make_directory <SOURCE_DIR>/plug/business/${lib_name}_test_plug/
- COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/test/${lib_name}_test_plug.inf <SOURCE_DIR>/plug/business/${lib_name}_test_plug/)
+add_library(${lib_name}_test_plug SHARED ${lib_name}_test_plug.cpp md5.c)
+target_link_libraries(${lib_name}_test_plug MESA_prof_load cjson)
+set_target_properties(${lib_name}_test_plug PROPERTIES PREFIX "")
-ExternalProject_Get_Property(ProtoTest INSTALL_DIR)
-ExternalProject_Get_Property(ProtoTest SOURCE_DIR)
-set(PROTO_TEST_RUN_DIR ${SOURCE_DIR})
+# build test env
+add_test(NAME MKDIR COMMAND sh -c "mkdir -p ${TEST_RUN_DIR}/plug/protocol/${lib_name} && mkdir -p ${TEST_RUN_DIR}/plug/business/${lib_name}_test_plug && mkdir -p ${TEST_RUN_DIR}/conf/http")
+add_test(NAME COPY_PLUGIN_TEST_MAIN COMMAND sh -c "cp ${TEST_RUN_DIR}/tools/plugin_test_main ${TEST_RUN_DIR}/plugin_test_main")
+add_test(NAME COPY_CONFLIST COMMAND sh -c "mkdir -p ${TEST_RUN_DIR}/plug/ && cp ${CMAKE_CURRENT_SOURCE_DIR}/conflist.inf ${TEST_RUN_DIR}/plug/conflist.inf")
+add_test(NAME COPY_HTTP_DECODER_CONF COMMAND sh -c "cp ${CMAKE_SOURCE_DIR}/bin/http/http*.conf ${TEST_RUN_DIR}/conf/http/")
-add_executable(proto_test_main IMPORTED GLOBAL)
-add_dependencies(proto_test_main ProtoTest)
-set_property(TARGET proto_test_main PROPERTY IMPORTED_LOCATION ${SOURCE_DIR}/test_protocol_plug_main)
+add_test(NAME COPY_HTTP_INF COMMAND sh -c "cp ${CMAKE_SOURCE_DIR}/bin/http.inf ${TEST_RUN_DIR}/plug/protocol/${lib_name}/${lib_name}.inf")
+add_test(NAME COPY_HTTP_SO COMMAND sh -c "cp ${CMAKE_BINARY_DIR}/${lib_name}.so ${TEST_RUN_DIR}/plug/protocol/${lib_name}/${lib_name}.so")
+add_test(NAME COPY_TEST_INF COMMAND sh -c "cp ${CMAKE_CURRENT_SOURCE_DIR}/http_test_plug.inf ${TEST_RUN_DIR}/plug/business/${lib_name}_test_plug/${lib_name}_test_plug.inf")
+add_test(NAME COPY_TEST_SO COMMAND sh -c "cp ${CMAKE_CURRENT_BINARY_DIR}/${lib_name}_test_plug.so ${TEST_RUN_DIR}/plug/business/${lib_name}_test_plug/${lib_name}_test_plug.so")
-add_library(${lib_name}_test_plug SHARED ${lib_name}_test_plug.cpp md5.c)
-target_link_libraries(${lib_name}_test_plug MESA_prof_load cjson)
-set_target_properties(${lib_name}_test_plug PROPERTIES PREFIX "")
+# update sapp config files
+add_test(NAME UPDATE_SAPP_LOG_LEVEL COMMAND bash -c "sed -i 's/sapp_log.fatal/sapp_log.info/' ${TEST_RUN_DIR}/etc/sapp_log.conf")
+add_test(NAME UPDATE_SAPP_SYN_MODE COMMAND bash -c "sed -i 's/syn_mandatory=1/syn_mandatory=0/' ${TEST_RUN_DIR}/etc/sapp.toml")
+add_test(NAME ENABLE_SAPP_MONITOR COMMAND bash -c "sed -i 's/monitor_thread_enabled=0/monitor_thread_enabled=1/' ${TEST_RUN_DIR}/etc/sapp.toml")
-add_test(NAME COPY_SO COMMAND sh -c "cp ${CMAKE_BINARY_DIR}/${lib_name}.so ${PROTO_TEST_RUN_DIR}/plug/protocol/${lib_name}/${lib_name}.so")
-add_test(NAME COPY_TEST_SO COMMAND sh -c "cp ${CMAKE_CURRENT_BINARY_DIR}/${lib_name}_test_plug.so ${PROTO_TEST_RUN_DIR}/plug/business/${lib_name}_test_plug/${lib_name}_test_plug.so")
-add_test(NAME RUN_HTTP_GET_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/http_get/http_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/http_get/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR})
-add_test(NAME RUN_HTTP_POST_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/http_post/http_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/http_post/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR})
-add_test(NAME RUN_HTTP_GZIP_SMALL_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gzip_small/gzip_small.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gzip_small/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR})
-add_test(NAME RUN_HTTP_GZIP_LARGE_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gzip_large/gzip_large.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gzip_large/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR})
-add_test(NAME RUN_HTTP_DEFLATE_SMALL_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/deflate_small/deflate_small.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/deflate_small/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR})
-add_test(NAME RUN_HTTP_DEFLATE_LARGE_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/deflate_large/deflate_large.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/deflate_large/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR})
-add_test(NAME RUN_HTTP_CLEAR_TEXT_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/clear_text/clear_text.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/clear_text/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) \ No newline at end of file
+add_test(NAME RUN_HTTP_GET_TEST COMMAND ./plugin_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/http_get/http_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/http_get/ -name *.pcap|sort -V" WORKING_DIRECTORY ${TEST_RUN_DIR})
+add_test(NAME RUN_HTTP_POST_TEST COMMAND ./plugin_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/http_post/http_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/http_post/ -name *.pcap|sort -V" WORKING_DIRECTORY ${TEST_RUN_DIR})
+add_test(NAME RUN_HTTP_GZIP_SMALL_TEST COMMAND ./plugin_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gzip_small/gzip_small.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gzip_small/ -name *.pcap|sort -V" WORKING_DIRECTORY ${TEST_RUN_DIR})
+add_test(NAME RUN_HTTP_GZIP_LARGE_TEST COMMAND ./plugin_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gzip_large/gzip_large.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gzip_large/ -name *.pcap|sort -V" WORKING_DIRECTORY ${TEST_RUN_DIR})
+add_test(NAME RUN_HTTP_DEFLATE_SMALL_TEST COMMAND ./plugin_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/deflate_small/deflate_small.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/deflate_small/ -name *.pcap|sort -V" WORKING_DIRECTORY ${TEST_RUN_DIR})
+add_test(NAME RUN_HTTP_DEFLATE_LARGE_TEST COMMAND ./plugin_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/deflate_large/deflate_large.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/deflate_large/ -name *.pcap|sort -V" WORKING_DIRECTORY ${TEST_RUN_DIR})
+add_test(NAME RUN_HTTP_CLEAR_TEXT_TEST COMMAND ./plugin_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/clear_text/clear_text.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/clear_text/ -name *.pcap|sort -V" WORKING_DIRECTORY ${TEST_RUN_DIR}) \ No newline at end of file
diff --git a/test/http_test_plug.cpp b/test/http_test_plug.cpp
index 3e1435e..675eb3e 100644
--- a/test/http_test_plug.cpp
+++ b/test/http_test_plug.cpp
@@ -1,8 +1,9 @@
#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
#include <time.h>
#include <unistd.h>
#include <assert.h>
-
#include "cJSON.h"
#include "http.h"
#include "MESA_prof_load.h"
diff --git a/test/test_protocol_run.zip b/test/test_protocol_run.zip
deleted file mode 100644
index 996f3fa..0000000
--- a/test/test_protocol_run.zip
+++ /dev/null
Binary files differ
diff --git a/vendor/CMakeLists.txt b/vendor/CMakeLists.txt
new file mode 100644
index 0000000..5854ad7
--- /dev/null
+++ b/vendor/CMakeLists.txt
@@ -0,0 +1,17 @@
+include(ExternalProject)
+
+ExternalProject_Add(http_parser PREFIX http_parser
+ URL ${CMAKE_CURRENT_SOURCE_DIR}/http-parser-2.9.0.tar.gz
+ URL_MD5 030a4f637582de0461d47a1664e8ef62
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND make static-library
+ INSTALL_COMMAND ""
+ BUILD_IN_SOURCE 1)
+
+ExternalProject_Get_Property(http_parser INSTALL_DIR)
+file(MAKE_DIRECTORY ${INSTALL_DIR}/src/http_parser/)
+
+add_library(http_parser-static STATIC IMPORTED GLOBAL)
+add_dependencies(http_parser-static http_parser)
+set_property(TARGET http_parser-static PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/src/http_parser/libhttp_parser.a)
+set_property(TARGET http_parser-static PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/src/http_parser/)
diff --git a/vendor/http-parser-2.9.0.tar.gz b/vendor/http-parser-2.9.0.tar.gz
new file mode 100644
index 0000000..0c05064
--- /dev/null
+++ b/vendor/http-parser-2.9.0.tar.gz
Binary files differ