#!/bin/bash
OGDB_CODE_PATH=$(cd $(dirname $(dirname $(dirname $0))); pwd)
GTEST_RESULT_PATH=${OGDB_CODE_PATH}/gtest_result
echo "gtest_result_path: ${GTEST_RESULT_PATH}/"
if [[ ! -d "${GTEST_RESULT_PATH}" ]]; then
mkdir -p ${GTEST_RESULT_PATH}
fi
GTEST_RUN_LOG=${OGDB_CODE_PATH}/cms_gtest_run.log
rm -rf ${GTEST_RUN_LOG}
echo "cms_gtest_run_log: ${GTEST_RUN_LOG}"
LCOV_OUTPUT_PATH=${OGDB_CODE_PATH}/lcov_output
echo "lcov_output_path: ${LCOV_OUTPUT_PATH}/"
if [[ ! -d "${LCOV_OUTPUT_PATH}" ]]; then
mkdir -p ${LCOV_OUTPUT_PATH}
fi
function dots(){
seconds=${1:-5}
while true
do
sleep $seconds
echo -n '.'
done
}
function error(){
echo $1
echo $1 >> ${GTEST_RUN_LOG} 2>&1
kill -9 ${DOTS_BG_PID}
exit 1
}
echo -n "make cms_test ..."
dots 5 &
DOTS_BG_PID=$!
trap "kill -9 $DOTS_BG_PID" INT
cd ${OGDB_CODE_PATH}/build/
sh Makefile.sh clean
sh Makefile.sh make_regress_test lcov=1
cd ${OGDB_CODE_PATH}/build/pkg/test/unit_test/ut
make -sj 8 2>&1
if [ "$?" != "0" ]; then
error "make cms test error!"
fi
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${OGDB_CODE_PATH}/output/lib/
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${OGDB_CODE_PATH}/library/gtest/lib/
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${OGDB_CODE_PATH}/library/dbstor/lib/
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${OGDB_CODE_PATH}/library/dbstor/lib/nomlnx/
UNAME=$(uname -a)
if [[ "${UNAME}" =~ .*aarch64.* ]];then
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${OGDB_CODE_PATH}/library/xnet/lib_arm/
elif [[ "${UNAME}" =~ .*x86_64.* ]];then
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${OGDB_CODE_PATH}/library/xnet/lib/
else
error "error: unknown arch!"
fi
chmod 777 ${OGDB_CODE_PATH}/pkg/test/unit_test/ut/cms_test/cfg
echo
echo -n "run cms_test ..."
${OGDB_CODE_PATH}/output/bin/cms_test --gtest_output=xml:${GTEST_RESULT_PATH}/
if [ "$?" != "0" ]; then
error "run cms_test error!"
fi
echo
echo "run cms_test success!"
echo -n "collect coverage data ..."
coverage_info_name="${LCOV_OUTPUT_PATH}/cms_ut_test_coverage.info"
coverage_report_name="${LCOV_OUTPUT_PATH}/cms_ut_test_coverage.report"
find ${OGDB_CODE_PATH}/ -name "*.gcno" | xargs touch
lcov --capture --directory ${OGDB_CODE_PATH}/ --rc lcov_branch_coverage=1 --output-file ${coverage_info_name} >> ${GTEST_RUN_LOG} 2>&1
lcov --directory ${OGDB_CODE_PATH}/ -z >> ${GTEST_RUN_LOG} 2>&1
lcov -l --rc lcov_branch_coverage=1 "${coverage_info_name}" > "${coverage_report_name}"
echo
echo "cms_ut_test lcov report successfully!"
kill -9 ${DOTS_BG_PID}