aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToni <matzeton@googlemail.com>2022-02-28 14:58:45 +0100
committerGitHub <noreply@github.com>2022-02-28 14:58:45 +0100
commit00d9a16b6a7e3c5ca90930e3991ac3476bd48780 (patch)
treef99a46599ccb85f0a3f0b7c577cf8ee30cc2124d
parent61a3c2eb5b3cac0f36a1bfadc5261b7694d3bfab (diff)
Added `--enable-code-coverage' build using lcov for coverage generation. (#1430)
* CI job generates a coverage report Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
-rw-r--r--.github/workflows/build.yml33
-rw-r--r--configure.ac7
2 files changed, 40 insertions, 0 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 3a8214849..adcf7fe6b 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -10,6 +10,39 @@ on:
release:
types: [created]
jobs:
+ coverage:
+ name: Coverage (ubuntu-latest)
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+ - name: Install Ubuntu Prerequisites
+ run: |
+ sudo apt-get update
+ sudo apt-get install autoconf automake libtool pkg-config gettext libjson-c-dev flex bison libpcap-dev
+ sudo apt-get install rrdtool librrd-dev
+ sudo apt-get install libgcrypt20-dev libpcre3-dev libmaxminddb-dev lcov
+ - name: Configure
+ run: env CC=gcc CFLAGS='-Werror' ./autogen.sh --enable-debug-messages --enable-code-coverage --with-pcre --with-maxminddb
+ - name: Build
+ run: make all
+ - name: Test
+ run: |
+ ./tests/do.sh
+ ./tests/do-unit.sh
+ ./tests/do-dga.sh
+ - name: Generate Coverage Report
+ run: |
+ mkdir -p coverage_report/ndpi_coverage_report
+ lcov --directory . --capture --output-file lcov.info
+ genhtml -o coverage_report/ndpi_coverage_report lcov.info
+ - uses: actions/upload-artifact@v2
+ with:
+ name: ndpi-coverage-report
+ path: coverage_report
+ retention-days: 7
+
test:
name: ${{ matrix.os }} ${{ matrix.arch }} ${{ matrix.gcrypt }} ${{ matrix.compiler }} ${{ matrix.pcre }} ${{ matrix.maxminddb }} ${{ matrix.msan }}
runs-on: ${{ matrix.os }}
diff --git a/configure.ac b/configure.ac
index 2a732efe2..462847387 100644
--- a/configure.ac
+++ b/configure.ac
@@ -15,6 +15,8 @@ AS_IF([test "${with_only_libndpi+set}" = set],[
AC_ARG_WITH(sanitizer, AS_HELP_STRING([--with-sanitizer], [Build with support for address, undefined and leak sanitizer]))
AC_ARG_ENABLE(fuzztargets, AS_HELP_STRING([--enable-fuzztargets], [Enable fuzz targets]),[enable_fuzztargets=$enableval],[enable_fuzztargets=no])
+AC_ARG_ENABLE(code-coverage, AS_HELP_STRING([--enable-code-coverage], [Generate Code Coverage report]))
+
AS_IF([test "x$enable_fuzztargets" = "xyes"], [BUILD_FUZZTARGETS=1], [BUILD_FUZZTARGETS=0])
AM_CONDITIONAL([BUILD_FUZZTARGETS], [test "x$enable_fuzztargets" = "xyes"])
@@ -23,6 +25,11 @@ AS_IF([test "${with_sanitizer+set}" = set],[
LDFLAGS="${LDFLAGS} -fsanitize=address -fsanitize=undefined -fno-sanitize=alignment -fsanitize=leak"
])
+AS_IF([test "x$enable_code_coverage" = "xyes"],[
+ CFLAGS="${CFLAGS} -fprofile-arcs -ftest-coverage"
+ LDFLAGS="${LDFLAGS} --coverage"
+])
+
LT_INIT
LT_LIB_M
PKG_PROG_PKG_CONFIG