diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b50d8c2..cf10c59 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,21 +2,70 @@ variables: GIT_STRATEGY: "clone" BUILD_PADDING_PREFIX: /tmp/padding_for_CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX_PREFIX_PREFIX_PREFIX_PREFIX_PREFIX/ INSTALL_PREFIX: "/opt/tsg/stellar" + INSTALL_DEPENDENCY_LIBRARY: mrzcpd-corei7 framework_env libfieldstat4-devel TESTING_VERSION_BUILD: 0 - 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-stellar" stages: +- cppcheck - build +- test +- upload -.build_by_travis_for_centos8: - image: $BUILD_IMAGE_CENTOS8 - before_script: +.everything_before_script: &everything_before_script - mkdir -p $BUILD_PADDING_PREFIX/$CI_PROJECT_NAMESPACE/ - ln -s $CI_PROJECT_DIR $BUILD_PADDING_PREFIX/$CI_PROJECT_PATH - cd $BUILD_PADDING_PREFIX/$CI_PROJECT_PATH + - yum makecache --disablerepo="*" --enablerepo="framework,platform" + - yum install -y $INSTALL_DEPENDENCY_LIBRARY + - source /etc/profile.d/mrzcpd.sh + - source /etc/profile.d/framework.sh - chmod +x ./ci/travis.sh + +############################################################################### +# cppcheck +############################################################################### +.cppcheck_script: + variables: + BUILD_TYPE: Debug + stage: cppcheck + script: + - mkdir build; cd build; cmake3 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. + - > + cppcheck --project=compile_commands.json + --enable=all + --std=c++11 + --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=funcArgOrderDifferent + --suppress=unreachableCode + --suppress=internalAstError + tags: + - share + +run_cppcheck_for_centos8: + extends: .cppcheck_script + image: $BUILD_IMAGE_CENTOS8 + +############################################################################### +# build +############################################################################### + +.build_by_travis_for_centos8: + image: $BUILD_IMAGE_CENTOS8 + before_script: *everything_before_script script: - - yum makecache - ./ci/travis.sh tags: - share @@ -36,6 +85,10 @@ branch_build_release_for_centos8: variables: BUILD_TYPE: RelWithDebInfo extends: .build_by_travis_for_centos8 + artifacts: + name: "stellar-branch-$CI_COMMIT_REF_NAME-release" + paths: + - build/* except: - /^develop-.*$/i - /^release-.*$/i @@ -46,16 +99,8 @@ develop_build_debug_for_centos8: extends: .build_by_travis_for_centos8 variables: TESTING_VERSION_BUILD: 1 - #UPLOAD_SYMBOL_FILES: 1 BUILD_TYPE: Debug #ASAN_OPTION: ADDRESS - PACKAGE: 1 - PULP3_REPO_NAME: stellar-stable-x86_64.el8 - PULP3_DIST_NAME: stellar-stable-x86_64.el8 - artifacts: - name: "stellar-develop-$CI_COMMIT_REF_NAME-debug" - paths: - - build/*.rpm only: - /^develop-.*$/i - /^release-.*$/i @@ -65,16 +110,12 @@ develop_build_release_for_centos8: extends: .build_by_travis_for_centos8 variables: TESTING_VERSION_BUILD: 1 - #UPLOAD_SYMBOL_FILES: 1 #ASAN_OPTION: ADDRESS BUILD_TYPE: RelWithDebInfo - PACKAGE: 1 - PULP3_REPO_NAME: stellar-stable-x86_64.el8 - PULP3_DIST_NAME: stellar-stable-x86_64.el8 artifacts: name: "stellar-develop-$CI_COMMIT_REF_NAME-release" paths: - - build/*.rpm + - build/* only: - /^develop-.*$/i - /^release-.*$/i @@ -82,16 +123,8 @@ develop_build_release_for_centos8: release_build_debug_for_centos8: stage: build variables: - #UPLOAD_SYMBOL_FILES: 1 BUILD_TYPE: Debug - PACKAGE: 1 - PULP3_REPO_NAME: tsg-stable-x86_64.el8 - PULP3_DIST_NAME: tsg-stable-x86_64.el8 extends: .build_by_travis_for_centos8 - artifacts: - name: "stellar-install-$CI_COMMIT_REF_NAME-debug" - paths: - - build/*.rpm only: - tags @@ -99,14 +132,51 @@ release_build_release_for_centos8: stage: build variables: BUILD_TYPE: RelWithDebInfo - #UPLOAD_SYMBOL_FILES: 1 - PACKAGE: 1 - PULP3_REPO_NAME: tsg-stable-x86_64.el8 - PULP3_DIST_NAME: tsg-stable-x86_64.el8 extends: .build_by_travis_for_centos8 artifacts: name: "stellar-install-$CI_COMMIT_REF_NAME-release" paths: - - build/*.rpm + - build/* only: - - tags \ No newline at end of file + - tags + +############################################################################### +# test +############################################################################### +test_in_centos8: + stage: test + image: $BUILD_IMAGE_CENTOS8 + allow_failure: false + script: + - *everything_before_script + - cd build; ctest -V + dependencies: + - branch_build_release_for_centos8 + - develop_build_release_for_centos8 + - release_build_release_for_centos8 + tags: + - share + +############################################################################### +# upload +############################################################################### +.define_before_upload_centos8: + stage: upload + image: $BUILD_IMAGE_CENTOS8 + before_script: + - pwd; ls -l ; cd build ; ls -l + - cp /root/rpm_upload_tools.py ./ + variables: + PULP3_REPO_NAME: stellar-stable-x86_64.el8 + PULP3_DIST_NAME: stellar-stable-x86_64.el8 + only: + - tags + tags: + - share + +rpm_upload_for_centos8: + extends: .define_before_upload_centos8 + dependencies: + - release_build_release_for_centos8 + script: + - python3 rpm_upload_tools.py $PULP3_REPO_NAME $PULP3_DIST_NAME *.rpm \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index efdec6f..97fff68 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,16 +39,9 @@ if (CMAKE_CXX_CPPCHECK) "--suppress=uselessAssignmentArg" "--suppress=uninitvar" "--suppress=unusedStructMember" + "--suppress=funcArgOrderDifferent" "--suppress=unreachableCode" "--suppress=internalAstError" - "--suppress=nullPointerRedundantCheck" - "--suppress=ctunullpointer" - "--suppress=redundantAssignment" - "--suppress=duplicateValueTernary" - "--suppress=funcArgOrderDifferent" - "--suppress=*:${PROJECT_SOURCE_DIR}/vendors/*" - "--suppress=*:${PROJECT_SOURCE_DIR}/deps/toml/*" - "--suppress=*:${PROJECT_SOURCE_DIR}/deps/rbtree/*" ) set(CMAKE_C_CPPCHECK ${CMAKE_CXX_CPPCHECK}) else() diff --git a/ci/travis.sh b/ci/travis.sh index f5aebec..fc6efc3 100644 --- a/ci/travis.sh +++ b/ci/travis.sh @@ -32,21 +32,6 @@ env | sort : "${NO_RTTI:=OFF}" : "${COMPILER_IS_GNUCXX:=OFF}" -# Install dependency from YUM -yum install -y mrzcpd-corei7 -yum install -y numactl-libs # required by mrzcpd -yum install -y libibverbs # required by mrzcpd -yum install -y libfieldstat4-devel -yum install -y tcpdump -dnf install -y epel-release -dnf install -y wireshark wireshark-cli -dnf install -y libpcap-devel -dnf install -y jq - -if [ $ASAN_OPTION ] && [ -f "/opt/rh/devtoolset-7/enable" ]; then - source /opt/rh/devtoolset-7/enable -fi - mkdir build || true cd build @@ -56,17 +41,11 @@ cmake3 -DCMAKE_CXX_FLAGS=$CXX_FLAGS \ -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX \ -DVERSION_DAILY_BUILD=$TESTING_VERSION_BUILD \ .. -make -j 4 -ctest --output-on-failure + +make -j $NPROCESSORS if [ -n "${PACKAGE}" ]; then make package cp ~/rpm_upload_tools.py ./ python3 rpm_upload_tools.py ${PULP3_REPO_NAME} ${PULP3_DIST_NAME} *.rpm fi - -if [ -n "${UPLOAD_SYMBOL_FILES}" ]; then - rpm -i stellar*debuginfo*.rpm - cp /usr/lib/debug/opt/tsg/stellar/bin/stellar*debug /tmp/stellar.debuginfo.${CI_COMMIT_SHORT_SHA} - sentry-cli upload-dif -t elf /tmp/stellar.debuginfo.${CI_COMMIT_SHORT_SHA} -fi diff --git a/deps/rbtree/rbtree.h b/deps/rbtree/rbtree.h index 25bd4da..f474b68 100644 --- a/deps/rbtree/rbtree.h +++ b/deps/rbtree/rbtree.h @@ -342,7 +342,7 @@ rb_find_first(const void *key, const struct rb_root *tree, match = node; node = node->rb_left; } - else if (c > 0) + else { node = node->rb_right; } diff --git a/deps/toml/toml.cpp b/deps/toml/toml.cpp index d8df2cd..fef21a1 100644 --- a/deps/toml/toml.cpp +++ b/deps/toml/toml.cpp @@ -2502,32 +2502,32 @@ int toml_rtos(toml_raw_t src, char **ret) toml_datum_t toml_string_at(const toml_array_t *arr, int idx) { - toml_datum_t ret; - memset(&ret, 0, sizeof(ret)); + toml_datum_t ret={}; + //memset(&ret, 0, sizeof(ret)); ret.ok = (0 == toml_rtos(toml_raw_at(arr, idx), &ret.u.s)); return ret; } toml_datum_t toml_bool_at(const toml_array_t *arr, int idx) { - toml_datum_t ret; - memset(&ret, 0, sizeof(ret)); + toml_datum_t ret={}; + //memset(&ret, 0, sizeof(ret)); ret.ok = (0 == toml_rtob(toml_raw_at(arr, idx), &ret.u.b)); return ret; } toml_datum_t toml_int_at(const toml_array_t *arr, int idx) { - toml_datum_t ret; - memset(&ret, 0, sizeof(ret)); + toml_datum_t ret={}; + //memset(&ret, 0, sizeof(ret)); ret.ok = (0 == toml_rtoi(toml_raw_at(arr, idx), &ret.u.i)); return ret; } toml_datum_t toml_double_at(const toml_array_t *arr, int idx) { - toml_datum_t ret; - memset(&ret, 0, sizeof(ret)); + toml_datum_t ret={}; + //memset(&ret, 0, sizeof(ret)); ret.ok = (0 == toml_rtod(toml_raw_at(arr, idx), &ret.u.d)); return ret; } @@ -2535,8 +2535,8 @@ toml_datum_t toml_double_at(const toml_array_t *arr, int idx) toml_datum_t toml_timestamp_at(const toml_array_t *arr, int idx) { toml_timestamp_t ts; - toml_datum_t ret; - memset(&ret, 0, sizeof(ret)); + toml_datum_t ret={}; + //memset(&ret, 0, sizeof(ret)); ret.ok = (0 == toml_rtots(toml_raw_at(arr, idx), &ts)); if (ret.ok) { @@ -2567,8 +2567,8 @@ toml_datum_t toml_timestamp_at(const toml_array_t *arr, int idx) toml_datum_t toml_string_in(const toml_table_t *arr, const char *key) { - toml_datum_t ret; - memset(&ret, 0, sizeof(ret)); + toml_datum_t ret={}; + //memset(&ret, 0, sizeof(ret)); toml_raw_t raw = toml_raw_in(arr, key); if (raw) { @@ -2579,24 +2579,24 @@ toml_datum_t toml_string_in(const toml_table_t *arr, const char *key) toml_datum_t toml_bool_in(const toml_table_t *arr, const char *key) { - toml_datum_t ret; - memset(&ret, 0, sizeof(ret)); + toml_datum_t ret={}; + //memset(&ret, 0, sizeof(ret)); ret.ok = (0 == toml_rtob(toml_raw_in(arr, key), &ret.u.b)); return ret; } toml_datum_t toml_int_in(const toml_table_t *arr, const char *key) { - toml_datum_t ret; - memset(&ret, 0, sizeof(ret)); + toml_datum_t ret={}; + //memset(&ret, 0, sizeof(ret)); ret.ok = (0 == toml_rtoi(toml_raw_in(arr, key), &ret.u.i)); return ret; } toml_datum_t toml_double_in(const toml_table_t *arr, const char *key) { - toml_datum_t ret; - memset(&ret, 0, sizeof(ret)); + toml_datum_t ret={}; + //memset(&ret, 0, sizeof(ret)); ret.ok = (0 == toml_rtod(toml_raw_in(arr, key), &ret.u.d)); return ret; } @@ -2604,8 +2604,8 @@ toml_datum_t toml_double_in(const toml_table_t *arr, const char *key) toml_datum_t toml_timestamp_in(const toml_table_t *arr, const char *key) { toml_timestamp_t ts; - toml_datum_t ret; - memset(&ret, 0, sizeof(ret)); + toml_datum_t ret={}; + //memset(&ret, 0, sizeof(ret)); ret.ok = (0 == toml_rtots(toml_raw_in(arr, key), &ts)); if (ret.ok) { diff --git a/src/packet_io/CMakeLists.txt b/src/packet_io/CMakeLists.txt index a4a183a..b2e55fc 100644 --- a/src/packet_io/CMakeLists.txt +++ b/src/packet_io/CMakeLists.txt @@ -1,4 +1,4 @@ add_library(packet_io dumpfile_io.cpp marsio_io.cpp lock_free_queue.cpp packet_io.cpp) target_include_directories(packet_io PUBLIC ${CMAKE_CURRENT_LIST_DIR}) target_include_directories(packet_io PUBLIC ${CMAKE_SOURCE_DIR}/src/stellar) -target_link_libraries(packet_io mrzcpd pcap packet) \ No newline at end of file +target_link_libraries(packet_io marsio pcap packet) \ No newline at end of file diff --git a/src/session/session_table.cpp b/src/session/session_table.cpp index e396996..651ef60 100644 --- a/src/session/session_table.cpp +++ b/src/session/session_table.cpp @@ -166,7 +166,7 @@ void session_table_del(struct session_table *table, struct session *sess) HASH_DELETE(hh1, table->root_tuple6, sess); HASH_DELETE(hh2, table->root_tuple4, sess); HASH_DELETE(hh3, table->root_sessid, sess); - if (table->free_cb && sess) + if (table->free_cb) { table->free_cb(sess, table->arg); } diff --git a/vendor/CMakeLists.txt b/vendor/CMakeLists.txt index e0751a7..857bcb5 100644 --- a/vendor/CMakeLists.txt +++ b/vendor/CMakeLists.txt @@ -23,16 +23,3 @@ add_library(gmock STATIC IMPORTED GLOBAL) add_dependencies(gmock googletest) set_property(TARGET gmock PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/lib/libgmock.a) set_property(TARGET gmock PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include) - -# MRZCPD -set(MRZCPD_LIB_DIR /opt/tsg/mrzcpd/corei7/lib) -set(MRZCPD_INCLUDE_DIR /opt/tsg/mrzcpd/corei7/include) - -add_library(mrzcpd SHARED IMPORTED GLOBAL) -set_property(TARGET mrzcpd PROPERTY IMPORTED_LOCATION ${MRZCPD_LIB_DIR}/libmarsio.so) -set_property(TARGET mrzcpd PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${MRZCPD_INCLUDE_DIR}) - -# FIELDSTAT -add_library(fieldstat4 SHARED IMPORTED GLOBAL) -set_property(TARGET fieldstat4 PROPERTY IMPORTED_LOCATION /opt/MESA/lib/libfieldstat4.so) -set_property(TARGET fieldstat4 PROPERTY INTERFACE_INCLUDE_DIRECTORIES /opt/MESA/include) \ No newline at end of file