123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- #!/usr/bin/env bash
- # Licensed to the LF AI & Data foundation under one
- # or more contributor license agreements. See the NOTICE file
- # distributed with this work for additional information
- # regarding copyright ownership. The ASF licenses this file
- # to you under the Apache License, Version 2.0 (the
- # "License"); you may not use this file except in compliance
- # with the License. You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- # Exit immediately for non zero status
- 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 )"
- source ${ROOT_DIR}/scripts/setenv.sh
- MILVUS_CORE_DIR="${ROOT_DIR}/internal/core"
- MILVUS_CORE_UNITTEST_DIR="${MILVUS_CORE_DIR}/output/unittest"
- echo "ROOT_DIR = ${ROOT_DIR}"
- echo "MILVUS_CORE_DIR = ${MILVUS_CORE_DIR}"
- echo "MILVUS_CORE_UNITTEST_DIR = ${MILVUS_CORE_UNITTEST_DIR}"
- LCOV_CMD="lcov"
- LCOV_GEN_CMD="genhtml"
- 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"
- DIR_LCOV_OUTPUT="${ROOT_DIR}/cpp_coverage"
- DIR_GCNO="${ROOT_DIR}/cmake_build/"
- # delete old code coverage info files
- 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}
- if [ $? -ne 0 ]; then
- echo "Failed to generate coverage baseline"
- exit -1
- fi
- # starting the timer
- beginTime=`date +%s`
- # run unittest
- for test in `ls ${MILVUS_CORE_UNITTEST_DIR}`; do
- echo "Running cpp unittest: ${MILVUS_CORE_UNITTEST_DIR}/$test"
- # run unittest
- ${MILVUS_CORE_UNITTEST_DIR}/${test}
- if [ $? -ne 0 ]; then
- echo ${args}
- echo "${MILVUS_CORE_UNITTEST_DIR}/${test} run failed"
- exit -1
- fi
- done
- # generate ut file
- ${LCOV_CMD} -c -d ${DIR_GCNO} -o ${FILE_INFO_UT}
- # 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}" \
- "/usr/*" \
- "*/llvm/*" \
- "*/src/pb/*" \
- "*/src/core/bench/*" \
- "*/unittest/*" \
- "*/thirdparty/*" \
- "*/3rdparty_download/*" \
- "*/.conan/data/*"
- # generate html report
- ${LCOV_GEN_CMD} ${FILE_INFO_OUTPUT} --output-directory ${DIR_LCOV_OUTPUT}/
- echo "Generate cpp code coverage report to ${DIR_LCOV_OUTPUT}"
- endTime=`date +%s`
- echo "Total time for cpp unittest:" $(($endTime-$beginTime)) "s"
|