2021-09-14 19:05:52 +08:00
#!/usr/bin/env bash
set -e
SOURCE = " ${ BASH_SOURCE [0] } "
while [ -h " $SOURCE " ] ; do # resolve $SOURCE until the file is no longer a symlink
DIR = " $( cd -P " $( dirname " $SOURCE " ) " && pwd ) "
SOURCE = " $( readlink " $SOURCE " ) "
[ [ $SOURCE != /* ] ] && SOURCE = " $DIR / $SOURCE " # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
ROOT_DIR = " $( cd -P " $( dirname " $SOURCE " ) /.. " && pwd ) "
2021-09-17 18:21:52 +08:00
MILVUS_CORE_DIR = " ${ ROOT_DIR } /internal/core/ "
MILVUS_CORE_UNITTEST_DIR = " ${ MILVUS_CORE_DIR } /output/unittest/ "
2021-09-14 19:05:52 +08:00
echo " ROOT_DIR = ${ ROOT_DIR } "
echo " MILVUS_CORE_DIR = ${ MILVUS_CORE_DIR } "
2021-09-17 18:21:52 +08:00
echo " MILVUS_CORE_UNITTEST_DIR = ${ MILVUS_CORE_UNITTEST_DIR } "
2021-09-14 19:05:52 +08:00
LCOV_CMD = "lcov"
LCOV_GEN_CMD = "genhtml"
2021-09-17 18:21:52 +08:00
FILE_INFO_BASE = " ${ ROOT_DIR } /lcov_base.info "
FILE_INFO_UT = " ${ ROOT_DIR } /lcov_ut.info "
FILE_INFO_COMBINE = " ${ ROOT_DIR } /lcov_combine.info "
FILE_INFO_OUTPUT = " ${ ROOT_DIR } /lcov_output.info "
2021-09-22 16:01:53 +08:00
DIR_LCOV_OUTPUT = " ${ ROOT_DIR } /cpp_coverage "
2021-09-17 18:21:52 +08:00
DIR_GCNO = " ${ ROOT_DIR } /cmake_build/ "
2021-09-14 19:05:52 +08:00
# delete old code coverage info files
2021-09-17 18:21:52 +08:00
rm -f ${ FILE_INFO_BASE }
rm -f ${ FILE_INFO_UT }
rm -f ${ FILE_INFO_COMBINE }
rm -f ${ FILE_INFO_OUTPUT }
rm -rf ${ DIR_LCOV_OUTPUT }
# generate baseline
${ LCOV_CMD } -c -i -d ${ DIR_GCNO } -o ${ FILE_INFO_BASE }
2021-09-14 19:05:52 +08:00
if [ $? -ne 0 ] ; then
echo "gen baseline coverage run failed"
exit -1
fi
2021-09-17 18:21:52 +08:00
# run unittest
for test in ` ls ${ MILVUS_CORE_UNITTEST_DIR } ` ; do
echo " ${ MILVUS_CORE_UNITTEST_DIR } / $test "
2021-09-14 19:05:52 +08:00
# run unittest
2021-09-17 18:21:52 +08:00
${ MILVUS_CORE_UNITTEST_DIR } /${ test }
2021-09-14 19:05:52 +08:00
if [ $? -ne 0 ] ; then
echo ${ args }
2021-09-17 18:21:52 +08:00
echo ${ ${ MILVUS_CORE_UNITTEST_DIR } / } /${ test } "run failed"
2021-09-14 19:05:52 +08:00
exit -1
fi
done
2021-09-17 18:21:52 +08:00
# generate ut file
${ LCOV_CMD } -c -d ${ DIR_GCNO } -o ${ FILE_INFO_UT }
2021-09-14 19:05:52 +08:00
2021-09-17 18:21:52 +08:00
# merge baseline and ut file
${ LCOV_CMD } -a ${ FILE_INFO_BASE } -a ${ FILE_INFO_UT } -o ${ FILE_INFO_COMBINE }
# remove unnecessary info
${ LCOV_CMD } -r " ${ FILE_INFO_COMBINE } " -o " ${ FILE_INFO_OUTPUT } " \
2021-09-14 19:05:52 +08:00
"/usr/*" \
2021-09-17 18:21:52 +08:00
"*/src/pb/*" \
"*/src/core/bench/*" \
"*/faiss_ep-prefix/*" \
2021-09-14 19:05:52 +08:00
"*/boost/*" \
2021-09-17 18:21:52 +08:00
"*/unittest/*" \
2021-09-14 19:05:52 +08:00
"*/thirdparty/*"
2021-09-17 18:21:52 +08:00
# generate html report
${ LCOV_GEN_CMD } ${ FILE_INFO_OUTPUT } --output-directory ${ DIR_LCOV_OUTPUT } /
2021-09-14 19:05:52 +08:00