From f9f033651d4e44d0ec462cbd12403cef249aa8bc Mon Sep 17 00:00:00 2001 From: Sangwan Kwon Date: Fri, 14 Aug 2020 13:53:20 +0900 Subject: [PATCH] Support gcov TC coverage Change-Id: I898ba40c63b208a80cce5bd52dd1bf3cce3a563b Signed-off-by: Sangwan Kwon --- CMakeLists.txt | 4 ++++ packaging/vist.spec | 10 +++++++++- src/vist/main/main.cpp | 4 ++++ src/vist/main/tests.cpp | 4 ++++ src/vist/rmi/impl/connection.cpp | 8 ++++++++ 5 files changed, 29 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a188cc1..9861864 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,6 +45,10 @@ SET(TARGET_VIST_POLICY_LIB vist-policy) ADD_DEFINITIONS("-fPIC") +IF (BUILD_GCOV) + ADD_DEFINITIONS("-DTIZEN_TEST_GCOV") +ENDIF (BUILD_GCOV) + INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}") INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/src") # Suppresse SYSTEM header's warnings: diff --git a/packaging/vist.spec b/packaging/vist.spec index e481820..589a792 100644 --- a/packaging/vist.spec +++ b/packaging/vist.spec @@ -58,6 +58,13 @@ cp %SOURCE1 . CXXFLAGS="$CXXFLAGS -Wp,-U_FORTIFY_SOURCE" %endif +%if 0%{?gcov:1} +export CFLAGS+=" -fprofile-arcs -ftest-coverage" +export CXXFLAGS+=" -fprofile-arcs -ftest-coverage" +export FFLAGS+=" -fprofile-arcs -ftest-coverage" +export LDFLAGS+=" -lgcov" +%endif + %cmake . -DCMAKE_BUILD_TYPE=%{build_type} \ -DVERSION=%{version} \ -DOSQUERY_VERSION=%{osquery_version} \ @@ -70,7 +77,8 @@ cp %SOURCE1 . -DPLUGIN_INSTALL_DIR:PATH=%{vist_plugin_dir} \ -DTABLE_INSTALL_DIR:PATH=%{vist_table_dir} \ -DSCRIPT_INSTALL_DIR:PATH=%{vist_script_dir} \ - -DSYSTEMD_UNIT_DIR:PATH=%{_unitdir} + -DSYSTEMD_UNIT_DIR:PATH=%{_unitdir} \ + -DBUILD_GCOV=%{?gcov:1}%{!?gcov:0} make %{?jobs:-j%jobs} diff --git a/src/vist/main/main.cpp b/src/vist/main/main.cpp index fe6cd50..a631d2b 100644 --- a/src/vist/main/main.cpp +++ b/src/vist/main/main.cpp @@ -33,6 +33,10 @@ int main() try LogStream::Init(std::make_shared()); #endif +#ifdef TIZEN_TEST_GCOV + ::setenv("GCOV_PREFIX", "/tmp", 1); +#endif + Vistd::Instance().Start(); return EXIT_SUCCESS; diff --git a/src/vist/main/tests.cpp b/src/vist/main/tests.cpp index 52b2386..10cc1d1 100644 --- a/src/vist/main/tests.cpp +++ b/src/vist/main/tests.cpp @@ -18,6 +18,10 @@ int main(int argc, char* argv[]) { +#ifdef TIZEN_TEST_GCOV + ::setenv("GCOV_PREFIX", "/tmp", 1); +#endif + testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } diff --git a/src/vist/rmi/impl/connection.cpp b/src/vist/rmi/impl/connection.cpp index eeaf761..fe930e1 100644 --- a/src/vist/rmi/impl/connection.cpp +++ b/src/vist/rmi/impl/connection.cpp @@ -20,6 +20,10 @@ #include +#ifdef TIZEN_TEST_GCOV +extern "C" void __gcov_flush(); +#endif + namespace vist { namespace rmi { namespace impl { @@ -36,6 +40,10 @@ Connection::Connection(const std::string& path) : void Connection::send(Message& message) { +#ifdef TIZEN_TEST_GCOV + __gcov_flush(); +#endif + std::lock_guard lock(this->sendMutex); message.header.id = this->sequence++; -- 2.34.1