Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
9b70b429
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
9b70b429
编写于
10月 16, 2022
作者:
H
Hui Li
提交者:
GitHub
10月 16, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #17380 from taosdata/test/coverage
test: add coverage test script
上级
28a8020e
a86249ef
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
291 addition
and
0 deletion
+291
-0
tests/script/coverage_test.sh
tests/script/coverage_test.sh
+291
-0
未找到文件。
tests/script/coverage_test.sh
0 → 100755
浏览文件 @
9b70b429
#!/bin/bash
branch
=
if
[
x
$1
!=
x
]
;
then
branch
=
$1
echo
"Testing branch:
$branch
"
else
echo
"Please enter branch name as a parameter"
exit
1
fi
today
=
`
date
+
"%Y%m%d"
`
TDENGINE_DIR
=
/root/pxiao/TDengine
TDENGINE_COVERAGE_REPORT
=
$TDENGINE_DIR
/tests/coverage-report-
$today
.log
# Color setting
RED
=
'\033[0;31m'
GREEN
=
'\033[1;32m'
GREEN_DARK
=
'\033[0;32m'
GREEN_UNDERLINE
=
'\033[4;32m'
NC
=
'\033[0m'
function
buildTDengine
{
echo
"check if TDengine need build"
cd
$TDENGINE_DIR
git remote prune origin
>
/dev/null
git remote update
>
/dev/null
REMOTE_COMMIT
=
`
git rev-parse
--short
remotes/origin/
$branch
`
LOCAL_COMMIT
=
`
git rev-parse
--short
@
`
echo
" LOCAL:
$LOCAL_COMMIT
"
echo
"REMOTE:
$REMOTE_COMMIT
"
# reset counter
lcov
-d
.
--zerocounters
if
[
"
$LOCAL_COMMIT
"
==
"
$REMOTE_COMMIT
"
]
;
then
echo
"repo up-to-date"
else
echo
"repo need to pull"
fi
git reset
--hard
git checkout
--
.
git checkout
$branch
git clean
-dfx
git pull
git submodule update
--init
--recursive
-f
[
-d
$TDENGINE_DIR
/debug
]
||
mkdir
$TDENGINE_DIR
/debug
cd
$TDENGINE_DIR
/debug
echo
"rebuild.."
LOCAL_COMMIT
=
`
git rev-parse
--short
@
`
rm
-rf
*
if
[
"
$branch
"
==
"3.0"
]
;
then
echo
"3.0 ============="
cmake
-DCOVER
=
true
-DBUILD_TEST
=
true
..
else
cmake
-DCOVER
=
true
-DBUILD_TOOLS
=
true
-DBUILD_HTTP
=
false
..
>
/dev/null
fi
make
-j4
make
install
}
function
runGeneralCaseOneByOne
{
while
read
-r
line
;
do
if
[[
$line
=
~ ^./test.sh
*
]]
;
then
case
=
`
echo
$line
|
grep
sim
$
|
awk
'{print $NF}'
`
if
[
-n
"
$case
"
]
;
then
date
+%F
\
%T
|
tee
-a
$TDENGINE_COVERAGE_REPORT
&&
./test.sh
-f
$case
>
/dev/null 2>&1
&&
\
echo
-e
"
${
GREEN
}
$case
success
${
NC
}
"
|
tee
-a
$TDENGINE_COVERAGE_REPORT
\
||
echo
-e
"
${
RED
}
$case
failed
${
NC
}
"
|
tee
-a
$TDENGINE_COVERAGE_REPORT
fi
fi
done
<
$1
}
function
runTestNGCaseOneByOne
{
while
read
-r
line
;
do
if
[[
$line
=
~ ^taostest
*
]]
;
then
case
=
`
echo
$line
|
cut
-d
' '
-f
3 |
cut
-d
'='
-f
2
`
yaml
=
`
echo
$line
|
cut
-d
' '
-f
2
`
if
[
-n
"
$case
"
]
;
then
date
+%F
\
%T
|
tee
-a
$TDENGINE_COVERAGE_REPORT
&&
taostest
$yaml
--case
=
$case
--keep
--disable_collection
>
/dev/null 2>&1
&&
\
echo
-e
"
${
GREEN
}
$case
success
${
NC
}
"
|
tee
-a
$TDENGINE_COVERAGE_REPORT
\
||
echo
-e
"
${
RED
}
$case
failed
${
NC
}
"
|
tee
-a
$TDENGINE_COVERAGE_REPORT
fi
fi
done
<
$1
}
function
runTest
{
echo
"run Test"
if
[
"
$branch
"
==
"3.0"
]
;
then
echo
"start run unit test case ................"
echo
"
$TDENGINE_DIR
/debug "
cd
$TDENGINE_DIR
/debug
ctest
-j12
echo
"3.0 unit test done"
fi
cd
$TDENGINE_DIR
/tests/script
[
-d
../../sim
]
&&
rm
-rf
../../sim
[
-f
$TDENGINE_COVERAGE_REPORT
]
&&
rm
$TDENGINE_COVERAGE_REPORT
runGeneralCaseOneByOne jenkins/basic.txt
sed
-i
"1i
\S
IM cases test result"
$TDENGINE_COVERAGE_REPORT
totalSuccess
=
`
grep
'success'
$TDENGINE_COVERAGE_REPORT
|
wc
-l
`
if
[
"
$totalSuccess
"
-gt
"0"
]
;
then
sed
-i
-e
"2i
\
### Total
$totalSuccess
SIM test case(s) succeed! ###"
$TDENGINE_COVERAGE_REPORT
fi
totalFailed
=
`
grep
'failed\|fault'
$TDENGINE_COVERAGE_REPORT
|
wc
-l
`
if
[
"
$totalFailed
"
-ne
"0"
]
;
then
sed
-i
"3i
\#
## Total
$totalFailed
SIM test case(s) failed! ###"
$TDENGINE_COVERAGE_REPORT
fi
sed
"3G"
$TDENGINE_COVERAGE_REPORT
stopTaosd
echo
"run TestNG cases"
rm
-rf
/var/lib/taos/
*
rm
-rf
/var/log/taos/
*
nohup
$TDENGINE_DIR
/debug/build/bin/taosd
-c
/etc/taos
>
/dev/null 2>&1 &
sleep
10
cd
$TDENGINE_DIR
/../TestNG/cases
runTestNGCaseOneByOne ../scripts/cases.txt
echo
"TestNG cases done"
cd
$TDENGINE_DIR
/tests
rm
-rf
../sim
/root/pxiao/test-all-coverage.sh full python
$branch
|
tee
-a
$TDENGINE_COVERAGE_REPORT
sed
-i
"4i
\P
ython cases test result"
$TDENGINE_COVERAGE_REPORT
totalPySuccess
=
`
grep
'python case(s) succeed!'
$TDENGINE_COVERAGE_REPORT
|
awk
'{print $4}'
`
if
[
"
$totalPySuccess
"
-gt
"0"
]
;
then
sed
-i
-e
"5i
\
### Total
$totalPySuccess
Python test case(s) succeed! ###"
$TDENGINE_COVERAGE_REPORT
fi
totalPyFailed
=
`
grep
'python case(s) failed!'
$TDENGINE_COVERAGE_REPORT
|
awk
'{print $4}'
`
if
[
-z
$totalPyFailed
]
;
then
sed
-i
"6i
\\
n"
$TDENGINE_COVERAGE_REPORT
else
sed
-i
"6i
\#
## Total
$totalPyFailed
Python test case(s) failed! ###"
$TDENGINE_COVERAGE_REPORT
fi
echo
"### run JDBC test cases ###"
|
tee
-a
$TDENGINE_COVERAGE_REPORT
# Test Connector
stopTaosd
nohup
$TDENGINE_DIR
/debug/build/bin/taosd
-c
/etc/taos
>
/dev/null 2>&1 &
sleep
10
cd
$TDENGINE_DIR
/src/connector/jdbc
mvn clean package
>
/dev/null 2>&1
mvn
test
>
jdbc-out.log 2>&1
tail
-n
20 jdbc-out.log 2>&1
|
tee
-a
$TDENGINE_COVERAGE_REPORT
# Test C Demo
stopTaosd
$TDENGINE_DIR
/debug/build/bin/taosd
-c
$TDENGINE_DIR
/debug/test/cfg
>
/dev/null &
sleep
10
yes
|
$TDENGINE_DIR
/debug/build/bin/demo 127.0.0.1
>
/dev/null 2>&1
|
tee
-a
$TDENGINE_COVERAGE_REPORT
# Test waltest
dataDir
=
`
grep
dataDir
$TDENGINE_DIR
/debug/test/cfg/taos.cfg|awk
'{print $2}'
`
walDir
=
`
find
$dataDir
-name
"wal"
|head
-n1
`
echo
"dataDir:
$dataDir
"
|
tee
-a
$TDENGINE_COVERAGE_REPORT
echo
"walDir:
$walDir
"
|
tee
-a
$TDENGINE_COVERAGE_REPORT
if
[
-n
"
$walDir
"
]
;
then
yes
|
$TDENGINE_DIR
/debug/build/bin/waltest
-p
$walDir
>
/dev/null 2>&1
|
tee
-a
$TDENGINE_COVERAGE_REPORT
fi
# run Unit Test
echo
"Run Unit Test: utilTest, queryTest and cliTest"
#$TDENGINE_DIR/debug/build/bin/utilTest > /dev/null 2>&1 && echo "utilTest pass!" || echo "utilTest failed!"
#$TDENGINE_DIR/debug/build/bin/queryTest > /dev/null 2>&1 && echo "queryTest pass!" || echo "queryTest failed!"
#$TDENGINE_DIR/debug/build/bin/cliTest > /dev/null 2>&1 && echo "cliTest pass!" || echo "cliTest failed!"
stopTaosd
cd
$TDENGINE_DIR
/tests/script
find
.
-name
'*.sql'
|
xargs
rm
-f
cd
$TDENGINE_DIR
/tests/pytest
find
.
-name
'*.sql'
|
xargs
rm
-f
}
function
lcovFunc
{
echo
"collect data by lcov"
cd
$TDENGINE_DIR
# collect data
lcov
-d
.
--capture
--rc
lcov_branch_coverage
=
1
--rc
genhtml_branch_coverage
=
1
--no-external
-b
$TDENGINE_DIR
-o
coverage.info
# remove exclude paths
if
[
"
$branch
"
==
"3.0"
]
;
then
lcov
--remove
coverage.info
\
'*/contrib/*'
'*/tests/*'
'*/test/*'
\
'*/AccessBridgeCalls.c'
'*/ttszip.c'
'*/dataInserter.c'
'*/tlinearhash.c'
'*/tsimplehash.c'
\
'*/texpr.c'
'*/runUdf.c'
'*/schDbg.c'
'*/syncIO.c'
'*/tdbOs.c'
'*/pushServer.c'
'*/osLz4.c'
\
'*/tbase64.c'
'*/tbuffer.c'
'*/tdes.c'
'*/texception.c'
'*/tidpool.c'
'*/tmempool.c'
\
'*/tthread.c'
'*/tversion.c'
\
--rc
lcov_branch_coverage
=
1
-o
coverage.info
else
lcov
--remove
coverage.info
\
'*/tests/*'
'*/test/*'
'*/deps/*'
'*/plugins/*'
'*/taosdef.h'
'*/ttype.h'
'*/tarithoperator.c'
'*/TSDBJNIConnector.c'
'*/taosdemo.c'
\
--rc
lcov_branch_coverage
=
1
-o
coverage.info
fi
# generate result
echo
"generate result"
lcov
-l
--rc
lcov_branch_coverage
=
1 coverage.info
|
tee
-a
$TDENGINE_COVERAGE_REPORT
# push result to coveralls.io
echo
"push result to coveralls.io"
/usr/local/bin/coveralls-lcov coverage.info
-t
o7uY02qEAgKyJHrkxLGiCOTfL3IGQR2zm
|
tee
-a
$TDENGINE_COVERAGE_REPORT
#/root/pxiao/checkCoverageFile.sh -s $TDENGINE_DIR/source -f $TDENGINE_COVERAGE_REPORT
#cat /root/pxiao/fileListNoCoverage.log | tee -a $TDENGINE_COVERAGE_REPORT
cat
$TDENGINE_COVERAGE_REPORT
|
grep
"| 0.0%"
|
awk
-F
"%"
'{print $1}'
|
awk
-F
"|"
'{if($2==0.0)print $1}'
|
tee
-a
$TDENGINE_COVERAGE_REPORT
}
function
sendReport
{
echo
"send report"
receiver
=
"develop@taosdata.com"
mimebody
=
"MIME-Version: 1.0
\n
Content-Type: text/html; charset=utf-8
\n
"
cd
$TDENGINE_DIR
sed
-i
's/\x1b\[[0-9;]*m//g'
$TDENGINE_COVERAGE_REPORT
BODY_CONTENT
=
`
cat
$TDENGINE_COVERAGE_REPORT
`
echo
-e
"from: <support@taosdata.com>
\n
to:
${
receiver
}
\n
subject: Coverage test report
${
branch
}
${
today
}
, commit ID:
${
LOCAL_COMMIT
}
\n\n
${
today
}
:
\n
${
BODY_CONTENT
}
"
|
\
(
cat
-
&&
uuencode
$TDENGINE_COVERAGE_REPORT
coverage-report-
$today
.log
)
|
\
/usr/sbin/ssmtp
"
${
receiver
}
"
&&
echo
"Report Sent!"
}
function
stopTaosd
{
echo
"Stop taosd start"
systemctl stop taosd
PID
=
`
ps
-ef
|grep
-w
taosd |
grep
-v
grep
|
awk
'{print $2}'
`
while
[
-n
"
$PID
"
]
do
pkill
-TERM
-x
taosd
sleep
1
PID
=
`
ps
-ef
|grep
-w
taosd |
grep
-v
grep
|
awk
'{print $2}'
`
done
echo
"Stop tasod end"
}
function
runTestRandomFail
{
exec_random_fail_sh
=
$1
default_exec_sh
=
$TDENGINE_DIR
/tests/script/sh/exec.sh
[
-f
$exec_random_fail_sh
]
&&
cp
$exec_random_fail_sh
$default_exec_sh
||
exit
1
dnodes_random_fail_py
=
$TDENGINE_DIR
/tests/pytest/util/dnodes-no-random-fail.py
default_dnodes_py
=
$TDENGINE_DIR
/tests/pytest/util/dnodes.py
[
-f
$dnodes_random_fail_py
]
&&
cp
$dnodes_random_fail_py
$default_dnodes_py
||
exit
1
runTest NoRandomFail
}
WORK_DIR
=
/root/pxiao
date
>>
$WORK_DIR
/cron.log
echo
"Run Coverage Test"
|
tee
-a
$WORK_DIR
/cron.log
stopTaosd
buildTDengine
#runTestRandomFail $TDENGINE_DIR/tests/script/sh/exec-random-fail.sh
#runTestRandomFail $TDENGINE_DIR/tests/script/sh/exec-default.sh
#runTestRandomFail $TDENGINE_DIR/tests/script/sh/exec-no-random-fail.sh
runTest
lcovFunc
#sendReport
stopTaosd
date
>>
$WORK_DIR
/cron.log
echo
"End of Coverage Test"
|
tee
-a
$WORK_DIR
/cron.log
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录