diff --git a/.gitignore b/.gitignore index 0d58cab..63b3612 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,5 @@ build*/ src/inc src/lib64 cmake-build-*/ -.vscode/ \ No newline at end of file +.vscode/ +.cache/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ad95b54..61626a3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,7 +7,7 @@ variables: libMESA_prof_load-devel libbreakpad_mini-devel libMESA_htable-devel stellar-on-sapp-devel stellar-on-sapp systemd-devel libfieldstat3-devel libfieldstat3 libMESA_field_stat2 libMESA_jump_layer libMESA_htable libMESA_handle_logger - INSTALL_PREFIX: "/home/mesasoft/sapp_run/" + INSTALL_PREFIX: "/opt/tsg/" stages: - build @@ -34,15 +34,6 @@ stages: tags: - share -run_test_for_centos8: - stage: test - extends: .build_by_travis_for_centos8 - script: - - yum makecache - - ./ci/travis.sh - - cd build - - ctest3 --verbose - branch_build_debug_for_centos8: stage: build extends: .build_by_travis_for_centos8 @@ -134,3 +125,48 @@ release_build_release_for_centos8: - build/*.rpm only: - tags + +############################################################################### +# test +############################################################################### + +.install_rpm_package: &install_rpm_package + - rpm -e sapp || true + - rpm -e sapp-devel || true + - rpm -e stellar-on-sapp || true + - rpm -e stellar-on-sapp-devel || true + - rpm -ivh /tmp/sapp.x86_64.rpm --prefix=${INSTALL_PREFIX}/sapp --force --nodeps + - rpm -ivh /tmp/sapp-devel.x86_64.rpm --prefix=${INSTALL_PREFIX}/sapp --force --nodeps + - rpm -ivh /tmp/stellar-on-sapp.x86_64.rpm --prefix=${INSTALL_PREFIX} --force --nodeps + - rpm -qa | grep sapp + - rpm -qa | grep stellar-on-sapp + - ls -l /opt/MESA/lib && echo "/opt/MESA/lib" >> /etc/ld.so.conf + + +history_version_test: + stage: test + extends: .build_by_travis_for_centos8 + script: + - yum makecache + - ./ci/travis.sh + - cp -f ./support/stellar-on-sapp*.rpm /tmp/stellar-on-sapp.x86_64.rpm + - cp -f ./support/sapp-devel*.rpm /tmp/sapp-devel.x86_64.rpm + - cp -f ./support/sapp-4*.rpm /tmp/sapp.x86_64.rpm + - *install_rpm_package + - cd build + - ctest3 --verbose + +latest_version_test: + stage: test + extends: .build_by_travis_for_centos8 + script: + - yum makecache + - ./ci/travis.sh + - rm -f stellar-on-sapp*.rpm sapp*.rpm + - yumdownloader stellar-on-sapp sapp-devel sapp + - cp -f stellar-on-sapp*.rpm /tmp/stellar-on-sapp.x86_64.rpm + - cp -f sapp-devel*.rpm /tmp/sapp-devel.x86_64.rpm + - cp -f sapp-4*.rpm /tmp/sapp.x86_64.rpm + - *install_rpm_package + - cd build + - ctest3 --verbose \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 3eba420..60a65c6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,7 +28,7 @@ elseif(ASAN_OPTION MATCHES "THREAD") endif() # end of for ASAN -set(CMAKE_INSTALL_PREFIX /home/mesasoft/sapp_run) +set(CMAKE_INSTALL_PREFIX /opt/tsg) include_directories(include) include_directories(/opt/MESA/include/MESA/) @@ -39,12 +39,12 @@ add_subdirectory(src) enable_testing() add_subdirectory(test) -set(CPACK_RPM_USER_FILELIST "%config(noreplace) ${CMAKE_INSTALL_PREFIX}/conf/quic/quic.conf" +set(CPACK_RPM_USER_FILELIST "%config(noreplace) ${CMAKE_INSTALL_PREFIX}/sapp/conf/quic/quic.conf" "%config(noreplace) ${CMAKE_INSTALL_PREFIX}/conf/quic/main.conf") -install(FILES bin/quic.inf DESTINATION ${CMAKE_INSTALL_PREFIX}/plug/protocol/quic COMPONENT PROFILE) -install(FILES bin/quic.conf DESTINATION ${CMAKE_INSTALL_PREFIX}/conf/quic COMPONENT PROFILE) -install(FILES bin/main.conf DESTINATION ${CMAKE_INSTALL_PREFIX}/conf/quic COMPONENT PROFILE) -install(FILES include/quic.h DESTINATION /opt/MESA/include/MESA COMPONENT HEADER) +# install(FILES bin/quic.inf DESTINATION ${CMAKE_INSTALL_PREFIX}/sapp/ COMPONENT PROFILE) +install(FILES bin/quic.conf DESTINATION ${CMAKE_INSTALL_PREFIX}/sapp/conf/quic COMPONENT PROFILE) +install(FILES bin/main.conf DESTINATION ${CMAKE_INSTALL_PREFIX}/sapp/conf/quic COMPONENT PROFILE) +install(FILES include/quic.h DESTINATION ${CMAKE_INSTALL_PREFIX}/framework/include/quic COMPONENT HEADER) include(Package) diff --git a/bin/quic.inf b/bin/quic.inf index 684de9b..cccf5e1 100755 --- a/bin/quic.inf +++ b/bin/quic.inf @@ -1,9 +1,9 @@ [[plugin]] -path = "./stellar_plugin/quic.so" +path = "./stellar_plugin/quic/quic.so" init = "QUIC_ONLOAD" exit = "QUIC_UNLOAD" [[plugin]] -path = "./stellar_plugin/quic_test_plug.so" +path = "./stellar_plugin/quic/quic_test_plug.so" init = "QUIC_TEST_PLUG_INIT" -exit = "QUIC_TEST_PLUG_DESTROY" \ No newline at end of file +exit = "QUIC_TEST_PLUG_DESTROY" diff --git a/cmake/preInstall.sh b/cmake/preInstall.sh index d060bc9..be8feb2 100644 --- a/cmake/preInstall.sh +++ b/cmake/preInstall.sh @@ -13,3 +13,20 @@ fi if [[ -z `grep -rn 'QUIC' ${DST}/etc/entrylist.conf` ]];then echo "QUIC" >> ${DST}/etc/entrylist.conf fi + + +DST=${RPM_INSTALL_PREFIX}/sapp/ + +mkdir -p ${DST}/stellar_plugin +touch ${DST}/stellar_plugin/spec.toml + +if ! grep -q '^\./plug/stellar_plugin/quic.so' "${DST}/stellar_plugin/spec.toml"; then + echo -e "\n" >> "${DST}/stellar_plugin/spec.toml" + echo -e "[[plugin]]" >> "${DST}/stellar_plugin/spec.toml" + echo -e "path = \"./stellar_plugin/quic/quic.so\"" >> "${DST}/stellar_plugin/spec.toml" + echo -e "init = \"QUIC_ONLOAD\"" >> "${DST}/stellar_plugin/spec.toml" + echo -e "exit = \"QUIC_UNLOAD\"" >> "${DST}/stellar_plugin/spec.toml" + echo -e "\n" >> "${DST}/stellar_plugin/spec.toml" +fi + + diff --git a/cmake/preUninstall.sh b/cmake/preUninstall.sh index 377a0f5..3142b27 100644 --- a/cmake/preUninstall.sh +++ b/cmake/preUninstall.sh @@ -1,17 +1,7 @@ -#!/bin/sh if [ $1 == 0 ]; then - DST=${RPM_INSTALL_PREFIX} - mkdir -p ${DST}/plug/business/ - touch ${DST}/plug/conflist.inf - - mkdir -p ${DST}/etc/ - touch ${DST}/etc/entrylist.conf - - if [[ -f ${DST}/plug/conflist.inf ]];then - sed -i '/quic.inf/d' ${DST}/plug/conflist.inf - fi - - if [[ -f ${DST}/etc/entrylist.conf ]];then - sed -i '/QUIC/d' ${DST}/etc/entrylist.conf - fi + DST=${RPM_INSTALL_PREFIX}/sapp/stellar_plugin + sed -i -n '$!N;/quic.so/!P;D' ${DST}/spec.toml + sed -i '/QUIC_ONLOAD/d' ${DST}/spec.toml + sed -i '/QUIC_UNLOAD/d' ${DST}/spec.toml fi + diff --git a/include/quic.h b/include/quic.h index bd112aa..986502b 100644 --- a/include/quic.h +++ b/include/quic.h @@ -4,6 +4,9 @@ extern "C" { #endif +#include + +typedef struct iovec qstring; enum quic_message_type { @@ -23,16 +26,10 @@ enum quic_message_type struct quic_message; enum quic_message_type quic_message_type_get(const struct quic_message *msg); -struct qstring -{ - const char *str; - size_t str_len; -}; - void quic_message_get_version(const struct quic_message *msg, unsigned int *result); -void quic_message_get_sni(const struct quic_message *msg, struct qstring *result); -void quic_message_get_user_agent(const struct quic_message *msg, struct qstring *result); -void quic_message_get_payload(const struct quic_message *msg, struct qstring *result); +void quic_message_get_sni(const struct quic_message *msg, struct iovec *result); +void quic_message_get_user_agent(const struct quic_message *msg, struct iovec *result); +void quic_message_get_payload(const struct quic_message *msg, struct iovec *result); int quic_version_int2string(unsigned int version, char *buff, int buff_len); diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5875ef9..b1b0477 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -12,4 +12,4 @@ set_target_properties(${lib_name} PROPERTIES PREFIX "") target_link_libraries(${lib_name} ${DNS_DEPEND_DYN_LIB} pthread -Wl,--no-whole-archive openssl-crypto-static -Wl,--no-whole-archive openssl-ssl-static) set_target_properties(${lib_name} PROPERTIES OUTPUT_NAME ${lib_name}) -install(TARGETS ${lib_name} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/plug/protocol/quic COMPONENT LIBRARIES) \ No newline at end of file +install(TARGETS ${lib_name} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/sapp/stellar_plugin/quic COMPONENT LIBRARIES) diff --git a/src/quic_entry.cpp b/src/quic_entry.cpp index f7f3bb4..52d3ccd 100644 --- a/src/quic_entry.cpp +++ b/src/quic_entry.cpp @@ -112,11 +112,11 @@ static int parse_quic_port(char *port_list, unsigned short *quic_port, int quic_ static void free_quicinfo(struct quic_info *quic_info) { - if(quic_info->sni.str) - FREE(quic_info->sni.str); + if(quic_info->sni.iov_base) + FREE(quic_info->sni.iov_base); - if(quic_info->user_agent.str) - FREE(quic_info->user_agent.str); + if(quic_info->user_agent.iov_base) + FREE(quic_info->user_agent.iov_base); return ; } diff --git a/src/quic_process.cpp b/src/quic_process.cpp index 946a486..95778dc 100644 --- a/src/quic_process.cpp +++ b/src/quic_process.cpp @@ -122,18 +122,18 @@ static int gquic_pkn_bit2length(unsigned char bit_value) return 1; } -static int copy_extension_tag(const char *tag_start_pos, int tag_len, struct qstring *out, int thread_seq) +static int copy_extension_tag(const char *tag_start_pos, int tag_len, qstring *out, int thread_seq) { if(tag_start_pos!=NULL && tag_len>0) { - if(out->str!=NULL) + if(out->iov_base!=NULL) { - FREE(out->str); + FREE(out->iov_base); } - out->str=(char *)CALLOC(1, tag_len+1); - memcpy((void *)out->str, tag_start_pos, tag_len); - out->str_len = tag_len; + out->iov_base=CALLOC(1, tag_len+1); + memcpy((void *)out->iov_base, tag_start_pos, tag_len); + out->iov_len = tag_len; return tag_len; } @@ -810,8 +810,8 @@ void quic_analyze_entry(struct session *sess, const struct quic_param *g_quic_pl if(0 == qcontext->msg_state[QUIC_VERSION] || 0 == qcontext->msg_state[QUIC_SNI] || 0 == qcontext->msg_state[QUIC_USER_AGENT]){ - if(NULL == qcontext->quic_info.sni.str - || NULL == qcontext->quic_info.user_agent.str){ + if(NULL == qcontext->quic_info.sni.iov_base + || NULL == qcontext->quic_info.user_agent.iov_base){ parse_res = parse_quic_all_version(g_quic_plugin_env, &(qcontext->quic_info), payload, payload_len, thread_seq); if(PARSE_RESULT_VERSION == parse_res){ push_payload = 1; @@ -823,12 +823,12 @@ void quic_analyze_entry(struct session *sess, const struct quic_param *g_quic_pl quic_session_mq_publish_message_safe(sess, g_quic_plugin_env->quic_topic_id, qmsg); qcontext->msg_state[QUIC_VERSION] = 1; } - if((0 == qcontext->msg_state[QUIC_SNI]) && qcontext->quic_info.sni.str){ + if((0 == qcontext->msg_state[QUIC_SNI]) && qcontext->quic_info.sni.iov_base){ qmsg = quic_create_message(QUIC_SNI, qcontext); quic_session_mq_publish_message_safe(sess, g_quic_plugin_env->quic_topic_id, qmsg); qcontext->msg_state[QUIC_SNI] = 1; } - if((0 == qcontext->msg_state[QUIC_USER_AGENT]) && qcontext->quic_info.user_agent.str){ + if((0 == qcontext->msg_state[QUIC_USER_AGENT]) && qcontext->quic_info.user_agent.iov_base){ qmsg = quic_create_message(QUIC_USER_AGENT, qcontext); quic_session_mq_publish_message_safe(sess, g_quic_plugin_env->quic_topic_id, qmsg); qcontext->msg_state[QUIC_USER_AGENT] =1; @@ -837,8 +837,8 @@ void quic_analyze_entry(struct session *sess, const struct quic_param *g_quic_pl } if(push_payload){ - qcontext->quic_info.payload.str = payload; - qcontext->quic_info.payload.str_len = payload_len; + qcontext->quic_info.payload.iov_base = (void *)payload; + qcontext->quic_info.payload.iov_len = payload_len; qmsg = quic_create_message(QUIC_PAYLOAD, qcontext); quic_session_mq_publish_message_safe(sess, g_quic_plugin_env->quic_topic_id, qmsg); } @@ -883,29 +883,29 @@ void quic_message_get_version(const struct quic_message *msg, unsigned int *resu *result = msg->qctx->quic_info.quic_version; } } -void quic_message_get_sni(const struct quic_message *msg, struct qstring *result) +void quic_message_get_sni(const struct quic_message *msg, qstring *result) { assert(QUIC_MSG_HDR_MAGIC == msg->magic); if(result){ - result->str = msg->qctx->quic_info.sni.str; - result->str_len = msg->qctx->quic_info.sni.str_len; + result->iov_base = msg->qctx->quic_info.sni.iov_base; + result->iov_len = msg->qctx->quic_info.sni.iov_len; } } -void quic_message_get_user_agent(const struct quic_message *msg, struct qstring *result) +void quic_message_get_user_agent(const struct quic_message *msg, qstring *result) { assert(QUIC_MSG_HDR_MAGIC == msg->magic); if(result){ - result->str = msg->qctx->quic_info.user_agent.str; - result->str_len = msg->qctx->quic_info.user_agent.str_len; + result->iov_base = msg->qctx->quic_info.user_agent.iov_base; + result->iov_len = msg->qctx->quic_info.user_agent.iov_len; } } -void quic_message_get_payload(const struct quic_message *msg, struct qstring *result) +void quic_message_get_payload(const struct quic_message *msg, qstring *result) { assert(QUIC_MSG_HDR_MAGIC == msg->magic); if(result){ - result->str = msg->qctx->quic_info.payload.str; - result->str_len = msg->qctx->quic_info.payload.str_len; + result->iov_base = msg->qctx->quic_info.payload.iov_base; + result->iov_len = msg->qctx->quic_info.payload.iov_len; } } diff --git a/src/quic_process.h b/src/quic_process.h index 26c7f8b..6bca878 100644 --- a/src/quic_process.h +++ b/src/quic_process.h @@ -288,9 +288,9 @@ enum QUIC_VERSION_T struct quic_info { unsigned int quic_version; - struct qstring sni; - struct qstring user_agent; - struct qstring payload; + qstring sni; + qstring user_agent; + qstring payload; // struct quic_client_hello *client_hello; }; diff --git a/stellar-on-sapp-2.1.1.7875675-1.el8.x86_64.rpm b/stellar-on-sapp-2.1.1.7875675-1.el8.x86_64.rpm new file mode 100644 index 0000000..695d6bc Binary files /dev/null and b/stellar-on-sapp-2.1.1.7875675-1.el8.x86_64.rpm differ diff --git a/support/sapp-4.3.56.a47b3b5-1.el8.x86_64.rpm b/support/sapp-4.3.56.a47b3b5-1.el8.x86_64.rpm new file mode 100644 index 0000000..58e3f92 Binary files /dev/null and b/support/sapp-4.3.56.a47b3b5-1.el8.x86_64.rpm differ diff --git a/support/sapp-devel-4.3.56.a47b3b5-1.el8.x86_64.rpm b/support/sapp-devel-4.3.56.a47b3b5-1.el8.x86_64.rpm new file mode 100644 index 0000000..9affbf6 Binary files /dev/null and b/support/sapp-devel-4.3.56.a47b3b5-1.el8.x86_64.rpm differ diff --git a/support/stellar-on-sapp-2.1.1.7875675-1.el8.x86_64.rpm b/support/stellar-on-sapp-2.1.1.7875675-1.el8.x86_64.rpm new file mode 100644 index 0000000..695d6bc Binary files /dev/null and b/support/stellar-on-sapp-2.1.1.7875675-1.el8.x86_64.rpm differ diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 990cd1c..4e6df7e 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -2,61 +2,46 @@ cmake_minimum_required (VERSION 2.8...3.10) project(${lib_name}_test) -include(ExternalProject) -#### Protoco_test_run - - -ExternalProject_Add(ProtoTest PREFIX ProtoTest - URL ${CMAKE_CURRENT_SOURCE_DIR}/test_protocol_run.zip - URL_MD5 4b181e88dccdd1ec59a22a16ab8c5051 - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX= -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - INSTALL_COMMAND "" - COMMAND ${CMAKE_COMMAND} -E make_directory /conf/${lib_name}/ - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/bin/main.conf /conf/${lib_name}/main.conf - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/bin/${lib_name}.conf /conf/${lib_name}) - -ExternalProject_Get_Property(ProtoTest INSTALL_DIR) -ExternalProject_Get_Property(ProtoTest SOURCE_DIR) -set(PROTO_TEST_RUN_DIR ${SOURCE_DIR}) - -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) +set(proto_test_main plugin_test_main) +set(PROTO_TEST_RUN_DIR ${CMAKE_INSTALL_PREFIX}/sapp) add_library(${lib_name}_test_plug SHARED ${lib_name}_test_plug.cpp) target_link_libraries(${lib_name}_test_plug MESA_prof_load cjson) set_target_properties(${lib_name}_test_plug PROPERTIES PREFIX "") -add_test(NAME COPY_QUIC_SO COMMAND sh -c "cp ${CMAKE_BINARY_DIR}/src/${lib_name}.so ${PROTO_TEST_RUN_DIR}/stellar_plugin/${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}/stellar_plugin/${lib_name}_test_plug.so") +add_test(NAME COPY_QUIC_SO COMMAND sh -c "mkdir -p ${PROTO_TEST_RUN_DIR}/stellar_plugin/${lib_name} && cp ${CMAKE_BINARY_DIR}/src/${lib_name}.so ${PROTO_TEST_RUN_DIR}/stellar_plugin/${lib_name}/${lib_name}.so") +add_test(NAME COPY_TEST_SO COMMAND sh -c "mkdir -p ${PROTO_TEST_RUN_DIR}/stellar_plugin/${lib_name} && cp ${CMAKE_CURRENT_BINARY_DIR}/${lib_name}_test_plug.so ${PROTO_TEST_RUN_DIR}/stellar_plugin/${lib_name}/${lib_name}_test_plug.so") +add_test(NAME COPY_TEST_SPEC COMMAND sh -c "cp ${CMAKE_SOURCE_DIR}/bin/quic.inf ${PROTO_TEST_RUN_DIR}/stellar_plugin/spec.toml") +add_test(NAME COPY_PLUGIN_TEST_MAIN COMMAND sh -c "rpm -ql sapp | grep plugin_test_main | xargs -i cp -f {} ${PROTO_TEST_RUN_DIR}/") +add_test(NAME COPY_MAIN_CFG COMMAND sh -c "mkdir -p ${PROTO_TEST_RUN_DIR}/conf/quic && cp ${CMAKE_SOURCE_DIR}/bin/main.conf ${PROTO_TEST_RUN_DIR}/conf/quic/") +add_test(NAME COPY_QUIC_CFG COMMAND sh -c "mkdir -p ${PROTO_TEST_RUN_DIR}/conf/quic && cp ${CMAKE_SOURCE_DIR}/bin/quic.conf ${PROTO_TEST_RUN_DIR}/conf/quic/") +add_test(NAME UPDATE_SAPP_LOG_LEVEL COMMAND bash -c "sed -i 's/sapp_log.fatal/sapp_log.info/' ${PROTO_TEST_RUN_DIR}/etc/sapp_log.conf") -set_tests_properties(COPY_QUIC_SO COPY_TEST_SO +set_tests_properties(COPY_QUIC_SO COPY_TEST_SO COPY_TEST_SPEC COPY_PLUGIN_TEST_MAIN COPY_MAIN_CFG COPY_QUIC_CFG UPDATE_SAPP_LOG_LEVEL PROPERTIES FIXTURES_SETUP TestFixture) -add_test(NAME IQUIC_29_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/iquic/29//${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/iquic/29/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) -add_test(NAME GQUIC_23_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/23/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/23/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) -add_test(NAME GQUIC_25_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/25/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/25/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) -add_test(NAME GQUIC_33_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/33/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/33/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) -add_test(NAME GQUIC_34_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/34/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/34/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) -add_test(NAME GQUIC_35_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/35/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/35/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) -add_test(NAME GQUIC_37_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/37/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/37/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) -add_test(NAME GQUIC_39_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/39/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/39/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) -add_test(NAME GQUIC_41_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/41/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/41/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) -add_test(NAME GQUIC_43_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/43/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/43/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) -add_test(NAME GQUIC_44_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/44/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/44/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) -add_test(NAME GQUIC_46_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/46/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/46/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) -add_test(NAME GQUIC_50_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/50/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/50/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) -add_test(NAME MVFST_01_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/mvfst/01/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/mvfst/01/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) -add_test(NAME MVFST_02_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/mvfst/02/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/mvfst/02/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) -add_test(NAME TQUIC_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/tquic/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/tquic/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) -add_test(NAME IQUIC_PORT_8443_TEST COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/port-8443/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/port-8443/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) -add_test(NAME QUIC_RFC9000 COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/rfc9000/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/rfc9000/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) -add_test(NAME QUIC_RFC9000_FRAGMENT COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/rfc9000-fragment/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/rfc9000-fragment/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) -add_test(NAME QUIC_RFC9000_SPECIAL COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/rfc9000-special/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/rfc9000-special/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) -add_test(NAME QUIC_AIRPORT COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/airport/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/airport -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) -add_test(NAME QUIC_SPECIAL COMMAND proto_test_main ${CMAKE_CURRENT_SOURCE_DIR}/pcap/special/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/special/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) +add_test(NAME IQUIC_29_TEST COMMAND ./${proto_test_main} ${CMAKE_CURRENT_SOURCE_DIR}/pcap/iquic/29//${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/iquic/29/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) +add_test(NAME GQUIC_23_TEST COMMAND ./${proto_test_main} ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/23/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/23/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) +add_test(NAME GQUIC_25_TEST COMMAND ./${proto_test_main} ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/25/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/25/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) +add_test(NAME GQUIC_33_TEST COMMAND ./${proto_test_main} ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/33/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/33/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) +add_test(NAME GQUIC_34_TEST COMMAND ./${proto_test_main} ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/34/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/34/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) +add_test(NAME GQUIC_35_TEST COMMAND ./${proto_test_main} ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/35/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/35/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) +add_test(NAME GQUIC_37_TEST COMMAND ./${proto_test_main} ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/37/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/37/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) +add_test(NAME GQUIC_39_TEST COMMAND ./${proto_test_main} ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/39/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/39/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) +add_test(NAME GQUIC_41_TEST COMMAND ./${proto_test_main} ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/41/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/41/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) +add_test(NAME GQUIC_43_TEST COMMAND ./${proto_test_main} ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/43/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/43/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) +add_test(NAME GQUIC_44_TEST COMMAND ./${proto_test_main} ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/44/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/44/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) +add_test(NAME GQUIC_46_TEST COMMAND ./${proto_test_main} ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/46/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/46/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) +add_test(NAME GQUIC_50_TEST COMMAND ./${proto_test_main} ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/50/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/gquic/50/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) +add_test(NAME MVFST_01_TEST COMMAND ./${proto_test_main} ${CMAKE_CURRENT_SOURCE_DIR}/pcap/mvfst/01/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/mvfst/01/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) +add_test(NAME MVFST_02_TEST COMMAND ./${proto_test_main} ${CMAKE_CURRENT_SOURCE_DIR}/pcap/mvfst/02/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/mvfst/02/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) +add_test(NAME TQUIC_TEST COMMAND ./${proto_test_main} ${CMAKE_CURRENT_SOURCE_DIR}/pcap/tquic/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/tquic/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) +add_test(NAME IQUIC_PORT_8443_TEST COMMAND ./${proto_test_main} ${CMAKE_CURRENT_SOURCE_DIR}/pcap/port-8443/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/port-8443/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) +add_test(NAME QUIC_RFC9000 COMMAND ./${proto_test_main} ${CMAKE_CURRENT_SOURCE_DIR}/pcap/rfc9000/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/rfc9000/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) +add_test(NAME QUIC_RFC9000_FRAGMENT COMMAND ./${proto_test_main} ${CMAKE_CURRENT_SOURCE_DIR}/pcap/rfc9000-fragment/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/rfc9000-fragment/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) +add_test(NAME QUIC_RFC9000_SPECIAL COMMAND ./${proto_test_main} ${CMAKE_CURRENT_SOURCE_DIR}/pcap/rfc9000-special/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/rfc9000-special/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) +add_test(NAME QUIC_AIRPORT COMMAND ./${proto_test_main} ${CMAKE_CURRENT_SOURCE_DIR}/pcap/airport/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/airport -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) +add_test(NAME QUIC_SPECIAL COMMAND ./${proto_test_main} ${CMAKE_CURRENT_SOURCE_DIR}/pcap/special/${lib_name}_result.json -f "find ${CMAKE_CURRENT_SOURCE_DIR}/pcap/special/ -name *.pcap|sort -V" WORKING_DIRECTORY ${PROTO_TEST_RUN_DIR}) set_tests_properties(IQUIC_29_TEST GQUIC_23_TEST @@ -81,4 +66,5 @@ set_tests_properties(IQUIC_29_TEST QUIC_RFC9000_SPECIAL QUIC_AIRPORT QUIC_SPECIAL - PROPERTIES FIXTURES_REQUIRED TestFixture) \ No newline at end of file + PROPERTIES FIXTURES_REQUIRED TestFixture) + \ No newline at end of file diff --git a/test/quic_test_plug.cpp b/test/quic_test_plug.cpp index 2d93e7f..2c2ff6b 100644 --- a/test/quic_test_plug.cpp +++ b/test/quic_test_plug.cpp @@ -36,10 +36,10 @@ struct quic_gtest_context cJSON *json_root; }; -static void cJSON_Add_QStringToObject(cJSON * object, const char *name, const struct qstring * qstring) +static void cJSON_Add_QStringToObject(cJSON * object, const char *name, const qstring * qstring) { - char *tmp = (char *)calloc(1, qstring->str_len + 1); - memcpy(tmp, qstring->str, qstring->str_len); + char *tmp = (char *)calloc(1, qstring->iov_len + 1); + memcpy(tmp, qstring->iov_base, qstring->iov_len); cJSON_AddStringToObject(object, name, tmp); } @@ -71,7 +71,7 @@ extern "C" void QUIC_TEST_PLUG_ENTRY(struct session *sess, int topic_id, const v case QUIC_SNI: { - struct qstring result = {}; + qstring result = {}; quic_message_get_sni(qmsg, &result); cJSON_Add_QStringToObject(qctx->json_root, "SNI", &result); DEBUG_PRINT("### QUIC_TEST_PLUG_ENTRY: len=%d, SNI=%p, %.*s\n", (int)result.str_len, result.str, (int)result.str_len, result.str); @@ -80,7 +80,7 @@ extern "C" void QUIC_TEST_PLUG_ENTRY(struct session *sess, int topic_id, const v case QUIC_USER_AGENT: { - struct qstring result = {}; + qstring result = {}; quic_message_get_user_agent(qmsg, &result); cJSON_Add_QStringToObject(qctx->json_root, "UA", &result); DEBUG_PRINT("### QUIC_TEST_PLUG_ENTRY: len=%d, UA=%p, %.*s\n", (int)result.str_len, result.str, (int)result.str_len, result.str); diff --git a/test/test_protocol_run.zip b/test/test_protocol_run.zip deleted file mode 100644 index ff84974..0000000 Binary files a/test/test_protocol_run.zip and /dev/null differ