Merge pull request #30585 from taosdata/main_cov2

test:alter coverage script
This commit is contained in:
WANG Xu 2025-04-03 11:36:16 +08:00 committed by GitHub
commit 337a4cebf1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 42 additions and 51 deletions

View File

@ -1,6 +1,5 @@
# Coverage test for taosd & taosc
name: TDengine Coverage
description: Coverage test for taosd & taosc
on:
workflow_dispatch:
@ -18,7 +17,7 @@ on:
schedule:
# - cron: '0 06 * * *'
# - cron: '0 18 * * *'
- cron: '0 */3 * * *'
- cron: '0 */4 * * *'
concurrency:
@ -34,5 +33,5 @@ jobs:
uses: taosdata/.github/.github/workflows/run-coverage-tests-on-linux.yml@test_coverage
if: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'}}
with:
specified_tdinternal_test_branch: ${{ github.event_name == 'schedule' && 'main_cov2' || github.event.inputs.specified_tdinternal_test_branch || '3.0' }}
specified_tdengine_test_branch: ${{ github.event_name == 'schedule' && 'main_cov2' || github.event.inputs.specified_tdengine_test_branch || '3.0' }}
specified_tdinternal_test_branch: ${{ github.event_name == 'schedule' && '3.0' || github.event.inputs.specified_tdinternal_test_branch || '3.0' }}
specified_tdengine_test_branch: ${{ github.event_name == 'schedule' && '3.0' || github.event.inputs.specified_tdengine_test_branch || '3.0' }}

View File

@ -52,7 +52,7 @@ ulimit -c unlimited
docker run \
--name taos_coverage \
-v /var/lib/jenkins/workspace/TDinternal/:/home/TDinternal/ \
-v /var/lib/jenkins/workspace/debugNoSan/:/home/TDinternal/debug \
-v /var/lib/jenkins/workspace/debugNoSan/:/home/TDinternal/community/debug \
--rm --ulimit core=-1 taos_test:v1.0 sh -c "bash ${CONTAINER_TESTDIR}/tests/run_workflow_coverage.sh -b ${branch_name_id} "

View File

@ -17,72 +17,54 @@ function printHelp() {
echo "Usage: $(basename $0) [options]"
echo
echo "Options:"
echo " -d [Project dir] Project directory (default: outermost project directory)"
echo " -d [TDengine dir] Project directory (default: outermost project directory)"
echo " e.g., -d /home/TDinternal/community"
echo " -f [Capture gcda dir] Capture gcda directory (default: <project dir>/debug)"
echo " -b [Coverage branch] Covevrage branch (default:3.0)"
exit 0
}
# Find the project/tdengine/build/capture directory
function get_DIR() {
today=`date +"%Y%m%d"`
if [ -z "$PROJECT_DIR" ]; then
CODE_DIR=$(dirname $0)
cd $CODE_DIR
CODE_DIR=$(pwd)
if [[ "$CODE_DIR" == *"/community/"* ]]; then
PROJECT_DIR=$(realpath ../..)
TDENGINE_DIR="$PROJECT_DIR"
BUILD_DIR="$PROJECT_DIR/debug"
CAPTURE_GCDA_DIR="$BUILD_DIR"
else
PROJECT_DIR=$(realpath ..)
TDENGINE_DIR="$PROJECT_DIR"
BUILD_DIR="$PROJECT_DIR/debug"
CAPTURE_GCDA_DIR="$BUILD_DIR"
fi
elif [[ "$PROJECT_DIR" == *"/TDinternal" ]]; then
TDENGINE_DIR="$PROJECT_DIR/community"
BUILD_DIR="$PROJECT_DIR/debug"
CAPTURE_GCDA_DIR="$BUILD_DIR"
elif [[ "$PROJECT_DIR" == *"/TDengine" ]]; then
TDENGINE_DIR="$PROJECT_DIR"
BUILD_DIR="$PROJECT_DIR/debug"
CAPTURE_GCDA_DIR="$BUILD_DIR"
fi
}
function lcovFunc {
echo "collect data by lcov"
cd $TDENGINE_DIR
# collect data
lcov -d "$CAPTURE_GCDA_DIR" -capture --rc lcov_branch_coverage=1 --rc genhtml_branch_coverage=1 --no-external -b $TDENGINE_DIR -o coverage.info --quiet > /dev/null 2>&1
lcov -d "$CAPTURE_GCDA_DIR" -capture --rc lcov_branch_coverage=1 --rc genhtml_branch_coverage=1 --no-external -b $TDENGINE_DIR -o coverage.info
# remove exclude paths
lcov --remove coverage.info \
'*/contrib/*' '*/test/*' '*/packaging/*' '*/taos-tools/deps/*' '*/taosadapter/*' '*/TSZ/*' \
'*/contrib/*' '*/test/*' '*/passwdTest.c' '*/taosc_test/*' '*/taoscTest.cpp' '*/packaging/*' '*/taos-tools/deps/*' '*/taosadapter/*' '*/TSZ/*' \
'*/AccessBridgeCalls.c' '*/ttszip.c' '*/dataInserter.c' '*/tlinearhash.c' '*/tsimplehash.c' '*/tsdbDiskData.c' '/*/enterprise/*' '*/docs/*' '*/sim/*'\
'*/texpr.c' '*/runUdf.c' '*/schDbg.c' '*/syncIO.c' '*/tdbOs.c' '*/pushServer.c' '*/osLz4.c'\
'*/tbase64.c' '*/tbuffer.c' '*/tdes.c' '*/texception.c' '*/examples/*' '*/tidpool.c' '*/tmempool.c'\
'*/clientJniConnector.c' '*/clientTmqConnector.c' '*/version.cc' '*/strftime.c' '*/localtime.c'\
'*/tthread.c' '*/tversion.c' '*/ctgDbg.c' '*/schDbg.c' '*/qwDbg.c' '*/version.c' '*/tencode.h' \
'*/shellAuto.c' '*/shellTire.c' '*/shellCommand.c' '*/debug/*' '*/tests/*'\
'*/tsdbFile.c' '*/tsdbUpgrade.c' '*/tsdbFS.c' '*/tsdbReaderWriter.c' \
'*/sql.c' '*/sql.y' '*/smaSnapshot.c' '*/smaCommit.c'\
--rc lcov_branch_coverage=1 -o coverage.info --quiet > /dev/null 2>&1
'*/tsdbFile.c' '*/tsdbUpgrade.c' '*/tsdbFS.c' '*/tsdbReaderWriter.c' '*/tests/script/api/passwdTest.c'\
'*/sql.c' '*/sql.y' '*/smaSnapshot.c' '*/smaCommit.c' 'contrib/*' '*test*' '*tests*' '*/tests/taosc_test/taoscTest.cpp'\
'*/cJSON.c' '*/lz4.c' '*/contrib/lz4/*' '*/contrib/zlib/*' '*/contrib/pcre2/*' '*/contrib/libux/*' '*/contrib/libxml2/*' \
'*/streamsessionnonblockoperator.c' '*/streameventnonblockoperator.c' '*/streamstatenonblockoperator.c' '*/streamfillnonblockoperator.c' \
'*/streamclient.c' '*/cos_cp.c' '*/cos.c' '*/trow.c' '*/trow.h' '*/tsdbSnapshot.c' '*/smaTimeRange.c' \
'*/metaSma.c' '*/mndDump.c' '*/td_block_blob_client.cpp' \
--rc lcov_branch_coverage=1 -o coverage.info
# generate result
echo "generate result"
lcov -l --rc lcov_branch_coverage=1 coverage.info > /dev/null 2>&1
lcov -l --rc lcov_branch_coverage=1 coverage.info
sed -i 's/\/home\/TDinternal\/sql.c/\/home\/TDinternal\/community\/source\/libs\/parser\/src\/sql.c/g' coverage.info
sed -i 's/\/home\/TDinternal\/sql.y/\/home\/TDinternal\/community\/source\/libs\/parser\/inc\/sql.y/g' coverage.info
sed -i 's/\/home\/TDinternal\/community\/sql.c/\/home\/TDinternal\/community\/source\/libs\/parser\/src\/sql.c/g' coverage.info
sed -i 's/\/home\/TDinternal\/community\/sql.y/\/home\/TDinternal\/community\/source\/libs\/parser\/inc\/sql.y/g' coverage.info
# push result to coveralls.io
echo "push result to coveralls.io"
/usr/local/bin/coveralls-lcov -t WOjivt0JCvDfqHDpyBQXtqhYbOGANrrps -b $BRANCH $TDENGINE_DIR/coverage.info > coverall.log 2>&1
# push result to https://coveralls.io/
# /usr/local/bin/coveralls-lcov -t WOjivt0JCvDfqHDpyBQXtqhYbOGANrrps -b $BRANCH $TDENGINE_DIR/coverage.info
# push result to https://app.codecov.io/
pip install codecov
codecov -t b0e18192-e4e0-45f3-8942-acab64178afe -f $TDENGINE_DIR/coverage.info -b $BRANCH
# codecov -t b0e18192-e4e0-45f3-8942-acab64178afe -f coverage.info -b $BRANCH -X gcov #如果覆盖率数据已经由其他工具(如 lcov生成可以通过 -X gcov 禁用 gcov 的自动收集,以避免冲突或冗余。
}
@ -91,15 +73,16 @@ function lcovFunc {
######################
# Initialization parameter
PROJECT_DIR=""
CAPTURE_GCDA_DIR=""
TDINTRENAL_DIR="/home/TDinternal"
TDENGINE_DIR="/home/TDinternal/community"
CAPTURE_GCDA_DIR="/home/TDinternal/community/debug"
BRANCH=""
# Parse command line parameters
while getopts "hd:b:f:" arg; do
case $arg in
d)
PROJECT_DIR=$OPTARG
TDINTRENAL_DIR=$OPTARG
;;
b)
BRANCH=$OPTARG
@ -119,11 +102,20 @@ done
# Show all parameters
print_color "$GREEN" "Run coverage test on workflow!"
get_DIR
echo "PROJECT_DIR = $PROJECT_DIR"
echo "TDINTRENAL_DIR = $TDINTRENAL_DIR"
echo "TDENGINE_DIR = $TDENGINE_DIR"
echo "BUILD_DIR = $BUILD_DIR"
echo "CAPTURE_GCDA_DIR = $CAPTURE_GCDA_DIR"
echo "BRANCH = $BRANCH"
lcovFunc
COVERAGE_INFO="$TDENGINE_DIR/coverage.info"
OUTPUT_DIR="$CAPTURE_GCDA_DIR/coverage_report"
# Generate local HTML reports
genhtml "$COVERAGE_INFO" --branch-coverage --function-coverage --output-directory "$OUTPUT_DIR"
print_color "$GREEN" "End of coverage test on workflow!"
echo "For more details: https://app.codecov.io/github/taosdata/TDengine"