mirror of
https://github.com/optim-enterprises-bv/nDPId.git
synced 2025-11-01 18:57:48 +00:00
Code coverage generation using LCOV.
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
This commit is contained in:
5
.github/workflows/build.yml
vendored
5
.github/workflows/build.yml
vendored
@@ -36,7 +36,7 @@ jobs:
|
|||||||
- name: Configure nDPI
|
- name: Configure nDPI
|
||||||
run: |
|
run: |
|
||||||
mkdir build && cd build
|
mkdir build && cd build
|
||||||
env CMAKE_C_FLAGS='-Werror' cmake .. -DBUILD_EXAMPLES=ON -DBUILD_NDPI=ON -DENABLE_SANITIZER=ON -DENABLE_ZLIB=ON ${{ matrix.ndpid_gcrypt }}
|
env CMAKE_C_FLAGS='-Werror' cmake .. -DENABLE_COVERAGE=ON -DBUILD_EXAMPLES=ON -DBUILD_NDPI=ON -DENABLE_SANITIZER=ON -DENABLE_ZLIB=ON ${{ matrix.ndpid_gcrypt }}
|
||||||
- name: Build nDPI
|
- name: Build nDPI
|
||||||
run: |
|
run: |
|
||||||
make -C build all VERBOSE=1
|
make -C build all VERBOSE=1
|
||||||
@@ -52,6 +52,9 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
make -C ./build daemon VERBOSE=1
|
make -C ./build daemon VERBOSE=1
|
||||||
make -C ./build daemon VERBOSE=1
|
make -C ./build daemon VERBOSE=1
|
||||||
|
- name: Coverage
|
||||||
|
run: |
|
||||||
|
make -C ./build coverage
|
||||||
- name: Dist
|
- name: Dist
|
||||||
run: |
|
run: |
|
||||||
make -C ./build dist
|
make -C ./build dist
|
||||||
|
@@ -23,7 +23,7 @@ build_and_test:
|
|||||||
# static linked build
|
# static linked build
|
||||||
- mkdir build-cmake-submodule
|
- mkdir build-cmake-submodule
|
||||||
- cd build-cmake-submodule
|
- cd build-cmake-submodule
|
||||||
- env CMAKE_C_FLAGS='-Werror' cmake .. -DBUILD_EXAMPLES=ON -DBUILD_NDPI=ON -DENABLE_SANITIZER=ON -DENABLE_ZLIB=ON
|
- env CMAKE_C_FLAGS='-Werror' cmake .. -DENABLE_COVERAGE=ON -DBUILD_EXAMPLES=ON -DBUILD_NDPI=ON -DENABLE_SANITIZER=ON -DENABLE_ZLIB=ON
|
||||||
- make libnDPI
|
- make libnDPI
|
||||||
- tree libnDPI
|
- tree libnDPI
|
||||||
- make install VERBOSE=1 DESTDIR="$(realpath ../_install)"
|
- make install VERBOSE=1 DESTDIR="$(realpath ../_install)"
|
||||||
@@ -37,7 +37,7 @@ build_and_test:
|
|||||||
- mkdir build
|
- mkdir build
|
||||||
- cd build
|
- cd build
|
||||||
- export PKG_CONFIG_PATH="$(realpath ../build-cmake-submodule/libnDPI/lib/pkgconfig)"
|
- export PKG_CONFIG_PATH="$(realpath ../build-cmake-submodule/libnDPI/lib/pkgconfig)"
|
||||||
- env CMAKE_C_FLAGS='-Werror' cmake .. -DBUILD_EXAMPLES=ON -DENABLE_SANITIZER=ON -DENABLE_MEMORY_PROFILING=ON -DENABLE_ZLIB=ON
|
- env CMAKE_C_FLAGS='-Werror' cmake .. -DENABLE_COVERAGE=ON -DBUILD_EXAMPLES=ON -DENABLE_SANITIZER=ON -DENABLE_MEMORY_PROFILING=ON -DENABLE_ZLIB=ON
|
||||||
- make all VERBOSE=1
|
- make all VERBOSE=1
|
||||||
- cd ..
|
- cd ..
|
||||||
- ./build/nDPId-test || test $? -eq 1
|
- ./build/nDPId-test || test $? -eq 1
|
||||||
@@ -45,6 +45,8 @@ build_and_test:
|
|||||||
# dameon start/stop test
|
# dameon start/stop test
|
||||||
- NUSER=nobody make -C ./build daemon VERBOSE=1
|
- NUSER=nobody make -C ./build daemon VERBOSE=1
|
||||||
- NUSER=nobody make -C ./build daemon VERBOSE=1
|
- NUSER=nobody make -C ./build daemon VERBOSE=1
|
||||||
|
# generate coverage report
|
||||||
|
- make -C ./build coverage
|
||||||
# make dist
|
# make dist
|
||||||
- make -C ./build dist
|
- make -C ./build dist
|
||||||
artifacts:
|
artifacts:
|
||||||
|
@@ -40,6 +40,7 @@ else()
|
|||||||
set(LIBM_LIB "")
|
set(LIBM_LIB "")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
option(ENABLE_COVERAGE "Generate a code coverage report using lcov/genhtml." OFF)
|
||||||
option(ENABLE_SANITIZER "Enable ASAN/LSAN/UBSAN." OFF)
|
option(ENABLE_SANITIZER "Enable ASAN/LSAN/UBSAN." OFF)
|
||||||
option(ENABLE_SANITIZER_THREAD "Enable TSAN (does not work together with ASAN)." OFF)
|
option(ENABLE_SANITIZER_THREAD "Enable TSAN (does not work together with ASAN)." OFF)
|
||||||
option(ENABLE_MEMORY_PROFILING "Enable dynamic memory tracking." OFF)
|
option(ENABLE_MEMORY_PROFILING "Enable dynamic memory tracking." OFF)
|
||||||
@@ -110,6 +111,16 @@ if(BUILD_NDPI AND NDPI_WITH_GCRYPT)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(ENABLE_COVERAGE)
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage")
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage")
|
||||||
|
add_custom_target(coverage)
|
||||||
|
add_custom_command(
|
||||||
|
TARGET coverage
|
||||||
|
COMMAND "${CMAKE_SOURCE_DIR}/scripts/code-coverage.sh"
|
||||||
|
DEPENDS nDPId nDPIsrvd nDPId-test
|
||||||
|
)
|
||||||
|
endif()
|
||||||
if(ENABLE_SANITIZER)
|
if(ENABLE_SANITIZER)
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fsanitize=undefined -fno-sanitize=alignment -fsanitize=enum -fsanitize=leak")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fsanitize=undefined -fno-sanitize=alignment -fsanitize=enum -fsanitize=leak")
|
||||||
endif()
|
endif()
|
||||||
@@ -303,6 +314,10 @@ if(BUILD_EXAMPLES)
|
|||||||
"${pkgcfg_lib_PCRE_pcre}" "${pkgcfg_lib_MAXMINDDB_maxminddb}"
|
"${pkgcfg_lib_PCRE_pcre}" "${pkgcfg_lib_MAXMINDDB_maxminddb}"
|
||||||
"${GCRYPT_LIBRARY}" "${GCRYPT_ERROR_LIBRARY}" "${PCAP_LIBRARY}")
|
"${GCRYPT_LIBRARY}" "${GCRYPT_ERROR_LIBRARY}" "${PCAP_LIBRARY}")
|
||||||
|
|
||||||
|
if(ENABLE_COVERAGE)
|
||||||
|
add_dependencies(coverage nDPIsrvd-collectd nDPIsrvd-captured nDPIsrvd-json-dump nDPIsrvd-simple)
|
||||||
|
endif()
|
||||||
|
|
||||||
install(TARGETS nDPIsrvd-collectd nDPIsrvd-captured nDPIsrvd-json-dump nDPIsrvd-simple DESTINATION bin)
|
install(TARGETS nDPIsrvd-collectd nDPIsrvd-captured nDPIsrvd-json-dump nDPIsrvd-simple DESTINATION bin)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -337,6 +352,7 @@ message(STATUS "CROSS_COMPILE_TRIPLET....: ${CROSS_COMPILE_TRIPLET}")
|
|||||||
message(STATUS "CMAKE_BUILD_TYPE.........: ${CMAKE_BUILD_TYPE}")
|
message(STATUS "CMAKE_BUILD_TYPE.........: ${CMAKE_BUILD_TYPE}")
|
||||||
message(STATUS "CMAKE_C_FLAGS............: ${CMAKE_C_FLAGS}")
|
message(STATUS "CMAKE_C_FLAGS............: ${CMAKE_C_FLAGS}")
|
||||||
message(STATUS "NDPID_DEFS...............: ${NDPID_DEFS}")
|
message(STATUS "NDPID_DEFS...............: ${NDPID_DEFS}")
|
||||||
|
message(STATUS "ENABLE_COVERAGE..........: ${ENABLE_COVERAGE}")
|
||||||
message(STATUS "ENABLE_SANITIZER.........: ${ENABLE_SANITIZER}")
|
message(STATUS "ENABLE_SANITIZER.........: ${ENABLE_SANITIZER}")
|
||||||
message(STATUS "ENABLE_SANITIZER_THREAD..: ${ENABLE_SANITIZER_THREAD}")
|
message(STATUS "ENABLE_SANITIZER_THREAD..: ${ENABLE_SANITIZER_THREAD}")
|
||||||
message(STATUS "ENABLE_MEMORY_PROFILING..: ${ENABLE_MEMORY_PROFILING}")
|
message(STATUS "ENABLE_MEMORY_PROFILING..: ${ENABLE_MEMORY_PROFILING}")
|
||||||
|
8
scripts/code-coverage.sh
Executable file
8
scripts/code-coverage.sh
Executable file
@@ -0,0 +1,8 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
cd "$(dirname "${0}")/.."
|
||||||
|
mkdir -p coverage_report
|
||||||
|
lcov --directory . --capture --output-file lcov.info
|
||||||
|
genhtml -o coverage_report lcov.info
|
Reference in New Issue
Block a user