BuildRequires: pkgconfig(libdrm)
BuildRequires: pkgconfig(tinyxml2)
-# test coverage dependency
-%if 0%{?test_coverage}
-BuildRequires: gcovr
-%endif
-
-# NPU emulation dependency (used in unittests only)
-%if 0%{?unit_test}
-%define enable_npu_emul true
-BuildRequires: npu-engine-emul
-BuildRequires: npu-engine-testdata > 1.2
-
-# valgrind requires the same arch with host (x86_64)
-%if 0%{?use_valgrind}
-%ifarch x86_64
-BuildRequires: valgrind
-BuildRequires: glibc-debuginfo
-%else
-%undefine use_valgrind
-%endif
-%endif
-
-%else
-%define enable_npu_emul false
-%endif
-
%global debug_package %{nil}
%global __debug_install_post %{nil}
cp %{SOURCE1001} .
%build
-# @todo (NYI) build three times for the three different transport plugins for npu-engine
-
-%if 0%{?test_coverage}
-# Disable Optimizations (should unset _FORTIFY_SOURCE to use -O0)
-CFLAGS=`echo $CFLAGS | sed -e "s|-O[1-9]|-O0|g"`
-CFLAGS=`echo $CFLAGS | sed -e "s|-Wp,-D_FORTIFY_SOURCE=[1-9]||g"`
-CXXFLAGS=`echo $CXXFLAGS | sed -e "s|-O[1-9]|-O0|g"`
-CXXFLAGS=`echo $CXXFLAGS | sed -e "s|-Wp,-D_FORTIFY_SOURCE=[1-9]||g"`
-# also, use the meson's base option, -Db_coverage, instead of --coverage/-fprofile-arcs and -ftest-coverage
-%define enable_test_coverage -Db_coverage=true
-%else
-%define enable_test_coverage -Db_coverage=false
-%endif
-
-meson --buildtype=plain --bindir=%{neexampledir} \
- --prefix=%{_prefix} --sysconfdir=%{_sysconfdir} --libdir=%{_libdir} --includedir=%{_includedir} \
- -Denable_npu_emul=%{enable_npu_emul} -Denable_data_manip=true %{enable_test_coverage} \
+meson --buildtype=plain --bindir=%{neexampledir} --prefix=%{_prefix} \
+ --sysconfdir=%{_sysconfdir} --libdir=%{_libdir} --includedir=%{_includedir} \
+ -Denable_npu_emul=false -Denable_data_manip=true \
build
ninja -C build %{?_smp_mflags}
# Install Core (NPU-Engine)
DESTDIR=%{buildroot} ninja install -C build %{?_smp_mflags}
-# Perform unit tests
-%check
-%if 0%{?unit_test}
- pushd build/tests
-
- # Run unittests
- find unittests -maxdepth 1 -type f -perm 0755 -print0 | while IFS= read -r -d $'\0' unittest_exec; do
- %if 0%{?use_valgrind}
- valgrind ./${unittest_exec}
- %else
- ./${unittest_exec} --gtest_output="xml:${unittest_exec}.xml"
- %endif
- done
-
- # Run apptests
- find apptests -maxdepth 1 -type f -perm 0755 -print0 | while IFS= read -r -d $'\0' apptest_exec; do
- %if 0%{?use_valgrind}
- valgrind ./${apptest_exec}
- %else
- ./${apptest_exec}
- %endif
- done
-
- # Run example_visa with a few sample models (due to performance issues)
- mkdir -p sample_models_v1
- mkdir -p sample_models_v2
- mkdir -p sample_models_v3
-
- cp -rf /usr/share/npu-engine/testdata/npubinfmt_v1/testcase* sample_models_v1/
- cp -rf /usr/share/npu-engine/testdata/npubinfmt_v2/testcase* sample_models_v2/
- cp -rf /usr/share/npu-engine/testdata/npubinfmt_v3/CONV* sample_models_v3/
-
- ./apptests/apptest_tvn_triv_bulk sample_models_v1 > /dev/null
- ./apptests/apptest_tvn_triv_bulk sample_models_v2 > /dev/null
- ./apptests/apptest_tvn_triv2_bulk sample_models_v3 > /dev/null
- ./apptests/apptest_tvn_triv2_dmabuf sample_models_v3/CONV_I8_013 > /dev/null
-
- rm -rf sample_models_*
-
- popd
-
- python3 tests/count_test_cases.py build/tests/unittests
-
-%endif
-
-# Analyze test coverage
-%if 0%{?test_coverage}
- # 'lcov' generates the date format with UTC time zone by default. Let's replace UTC with KST
- TZ='Asia/Seoul'; export TZ
-
- pushd build
-
- # Collect coverage statistics using gcovr (excluding some files used only in FastModel)
- gcovr -r .. --html --html-details \
- --html-title "NPU SystemService Coverage" \
- --filter ../src/ --exclude ".*\.h" \
- --exclude ../src/core/npu/NPUdrvAPI_triv.cc \
- --exclude ../src/core/npu/NPUdrvAPI_triv2.cc \
- --exclude ../src/core/npu/NPUdrvAPI_tria.cc \
- -o index.html
-
- # Copy the coverage results
- mkdir -p %{buildroot}%{_datadir}/unittest/
- mv *.html %{buildroot}%{_datadir}/unittest/
-
- popd
-%endif
-
%files
%manifest npu-engine.manifest
%defattr(-,root,root,-)
%defattr(-,root,root,-)
%{neexampledir}/utils/*
-%package unittest-coverage
-Summary: NPU Engine UnitTest Coverage Analysis Result
-%description unittest-coverage
-HTML pages of lcov results of NPU Engine generated during rpmbuild
-%if 0%{?test_coverage}
-%files unittest-coverage
-%manifest npu-engine.manifest
-%defattr(-,root,root,-)
-%{_datadir}/unittest/*
-%endif
-
%changelog
* Wed Oct 21 2020 Dongju Chae <dongju.chae@samsung.com>
- Release of 2.2.4
--- /dev/null
+#!/bin/bash
+
+##
+# @file gcovr_coverage.sh
+# @brief generate the line coverage report from gcovr
+# @see https://github.sec.samsung.net/AIP/NPU_SystemService
+# @author Dongju Chae <dongju.chae@samsung.com>
+#
+
+export UTIL_HOME=$(readlink -f $0)
+export UTIL_HOME=$(dirname ${UTIL_HOME})
+export SOURCE_ROOT=${UTIL_HOME}/../..
+
+export INSTALL_PREFIX=/opt/trinity
+export PKG_CONFIG_PATH=${INSTALL_PREFIX}/lib/pkgconfig
+
+pushd $UTIL_HOME
+pushd $SOURCE_ROOT
+
+rm -rf build
+
+# 1. build project
+CFLGAS="-g -O0" meson --buildtype=plain --prefix=${INSTALL_PREFIX} --sysconfdir=${INSTALL_PREFIX}/etc --libdir=lib --bindir=bin --includedir=include build -Denable_npu_emul=true -Denable_data_manip=true -Db_coverage=true
+ninja -C build
+
+pushd build
+
+# 2. run unit tests
+
+# 2-1. Without arguments
+find tests/unittests -maxdepth 1 -type f -exec basename {} \; |\
+ xargs -I{} sh -c tests/unittests/{}
+find tests/apptests -maxdepth 1 -type f -exec basename {} \; |\
+ xargs -I{} sh -c tests/apptests/{}
+
+# 2-2. With valid arguments for some apptests
+mkdir -p sample_models_v1
+mkdir -p sample_models_v2
+mkdir -p sample_models_v3
+
+cp -rf ${INSTALL_PREFIX}/share/npu-engine/testdata/npubinfmt_v1/testcase* sample_models_v1/
+cp -rf ${INSTALL_PREFIX}/share/npu-engine/testdata/npubinfmt_v2/testcase* sample_models_v2/
+cp -rf ${INSTALL_PREFIX}/share/npu-engine/testdata/npubinfmt_v3/CONV* sample_models_v3/
+
+./tests/apptests/apptest_tvn_triv_bulk sample_models_v1 > /dev/null
+./tests/apptests/apptest_tvn_triv_bulk sample_models_v2 > /dev/null
+./tests/apptests/apptest_tvn_triv2_bulk sample_models_v3 > /dev/null
+./tests/apptests/apptest_tvn_triv2_dmabuf sample_models_v3/CONV_I8_013 > /dev/null
+
+rm -rf sample_models_*
+
+# 3. run gcovr
+gcovr -r .. --html --html-details \
+ --html-title "NPU SystemService Coverage" \
+ --filter ../src/ --exclude ".*\.h" \
+ --exclude ../src/core/npu/NPUdrvAPI_triv.cc \
+ --exclude ../src/core/npu/NPUdrvAPI_triv2.cc \
+ --exclude ../src/core/npu/NPUdrvAPI_tria.cc \
+ -o index.html
+
+popd
+popd
+
+# 4. extract results
+mv ${SOURCE_ROOT}/build/*.html .
+popd