Support gcov TC coverage 38/241038/1
authorSangwan Kwon <sangwan.kwon@samsung.com>
Fri, 14 Aug 2020 04:53:20 +0000 (13:53 +0900)
committerSangwan Kwon <sangwan.kwon@samsung.com>
Fri, 14 Aug 2020 04:53:20 +0000 (13:53 +0900)
Change-Id: I898ba40c63b208a80cce5bd52dd1bf3cce3a563b
Signed-off-by: Sangwan Kwon <sangwan.kwon@samsung.com>
CMakeLists.txt
packaging/vist.spec
src/vist/main/main.cpp
src/vist/main/tests.cpp
src/vist/rmi/impl/connection.cpp

index a188cc18393958a77d63dcb584b65972d8ea9fc3..986186457a8d4d6bdc9c3de5a6409f761ac719d7 100644 (file)
@@ -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:
index e481820dc41c5e33c23a8cc0c680a4c5f510f2f2..589a7920867f947e475d29825cd3c4253366ab02 100644 (file)
@@ -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}
 
index fe6cd500981da91a7bc76017f35b5fe616e3aece..a631d2b40220c5de1e07decf622facc572c60977 100644 (file)
@@ -33,6 +33,10 @@ int main() try
        LogStream::Init(std::make_shared<Dlog>());
 #endif
 
+#ifdef TIZEN_TEST_GCOV
+       ::setenv("GCOV_PREFIX", "/tmp", 1);
+#endif
+
        Vistd::Instance().Start();
 
        return EXIT_SUCCESS;
index 52b238643610c95a514db7f107c55f9c9ba6ccfa..10cc1d1efdb69571bc84275c73bbb195832a4386 100644 (file)
 
 int main(int argc, char* argv[])
 {
+#ifdef TIZEN_TEST_GCOV
+       ::setenv("GCOV_PREFIX", "/tmp", 1);
+#endif
+
        testing::InitGoogleTest(&argc, argv);
        return RUN_ALL_TESTS();
 }
index eeaf76166d61066825f86da682a5d709b5fb86ac..fe930e1280c01903c6632ffcebacf79bc0e3040e 100644 (file)
 
 #include <utility>
 
+#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<std::mutex> lock(this->sendMutex);
 
        message.header.id = this->sequence++;