add valgrind test support. current threshold is 23.
[TD-138]
This commit is contained in:
parent
26aabe947b
commit
ba6cf0dd9b
45
.travis.yml
45
.travis.yml
|
@ -24,10 +24,11 @@ matrix:
|
|||
- python-setuptools
|
||||
- python3-pip
|
||||
- python3-setuptools
|
||||
- valgrind
|
||||
|
||||
before_install:
|
||||
- sudo apt update -y -qq
|
||||
- sudo apt install -y net-tools python-pip python-setuptools python3-pip python3-setuptools
|
||||
- sudo apt install -y net-tools python-pip python-setuptools python3-pip python3-setuptools valgrind
|
||||
|
||||
before_script:
|
||||
- cd ${TRAVIS_BUILD_DIR}
|
||||
|
@ -43,16 +44,32 @@ matrix:
|
|||
case $TRAVIS_OS_NAME in
|
||||
linux)
|
||||
cd ${TRAVIS_BUILD_DIR}/debug
|
||||
sudo make install || exit $?
|
||||
sudo make install || travis_terminate $?
|
||||
|
||||
pip install --user ${TRAVIS_BUILD_DIR}/src/connector/python/linux/python2/
|
||||
pip3 install --user ${TRAVIS_BUILD_DIR}/src/connector/python/linux/python3/
|
||||
|
||||
cd ${TRAVIS_BUILD_DIR}/tests
|
||||
bash ./test-all.sh
|
||||
./test-all.sh || travis_terminate $?
|
||||
|
||||
if [ "$?" -ne "0" ]; then
|
||||
exit $?
|
||||
cd ${TRAVIS_BUILD_DIR}/tests/pytest
|
||||
./simpletest.sh -g 2>&1 | tee mem-error-out.txt
|
||||
sleep 1
|
||||
|
||||
# Color setting
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[1;32m'
|
||||
GREEN_DARK='\033[0;32m'
|
||||
GREEN_UNDERLINE='\033[4;32m'
|
||||
NC='\033[0m'
|
||||
|
||||
memError=`grep -m 1 'ERROR SUMMARY' mem-error-out.txt | awk '{print $4}'`
|
||||
|
||||
if [ -n "$memError" ]; then
|
||||
if [ "$memError" -gt 23 ]; then
|
||||
echo -e "${RED} ## Memory errors number valgrind reports is $memError. More than our threshold! ## ${NC} "
|
||||
travis_terminate $memError
|
||||
fi
|
||||
fi
|
||||
|
||||
;;
|
||||
|
@ -74,12 +91,12 @@ matrix:
|
|||
# GitHub project metadata
|
||||
# ** specific to your project **
|
||||
project:
|
||||
name: sangshuduo/TDengine
|
||||
name: TDengine
|
||||
version: 2.x
|
||||
description: sangshuduo/TDengine
|
||||
description: taosdata/TDengine
|
||||
|
||||
# Where email notification of build analysis results will be sent
|
||||
notification_email: sangshuduo@gmail.com
|
||||
notification_email: sdsang@taosdata.com
|
||||
|
||||
# Commands to prepare for build_command
|
||||
# ** likely specific to your build **
|
||||
|
@ -87,7 +104,7 @@ matrix:
|
|||
|
||||
# The command that will be added as an argument to "cov-build" to compile your project for analysis,
|
||||
# ** likely specific to your build **
|
||||
build_command: cmake --build .
|
||||
build_command: make
|
||||
|
||||
# Pattern to match selecting branches that will run analysis. We recommend leaving this set to 'coverity_scan'.
|
||||
# Take care in resource usage, and consider the build frequency allowances per
|
||||
|
@ -132,17 +149,17 @@ matrix:
|
|||
case $TRAVIS_OS_NAME in
|
||||
linux)
|
||||
cd ${TRAVIS_BUILD_DIR}/debug
|
||||
sudo make install || exit $?
|
||||
sudo make install || travis_terminate $?
|
||||
|
||||
pip install --user ${TRAVIS_BUILD_DIR}/src/connector/python/linux/python2/
|
||||
pip3 install --user ${TRAVIS_BUILD_DIR}/src/connector/python/linux/python3/
|
||||
|
||||
cd ${TRAVIS_BUILD_DIR}/tests
|
||||
|
||||
bash ./test-all.sh
|
||||
./test-all.sh
|
||||
|
||||
if [ "$?" -ne "0" ]; then
|
||||
exit $?
|
||||
travis_terminate $?
|
||||
fi
|
||||
|
||||
sudo pkill taosd
|
||||
|
@ -150,7 +167,7 @@ matrix:
|
|||
|
||||
cd ${TRAVIS_BUILD_DIR}
|
||||
lcov -d . --capture --rc lcov_branch_coverage=1 -o coverage.info
|
||||
lcov -l --rc lcov_branch_coverage=1 coverage.info || exit $?
|
||||
lcov -l --rc lcov_branch_coverage=1 coverage.info || travis_terminate $?
|
||||
|
||||
gem install coveralls-lcov
|
||||
|
||||
|
@ -166,7 +183,6 @@ matrix:
|
|||
echo -e "${GREEN} ## Uploaded to Coveralls.io! ## ${NC}"
|
||||
else
|
||||
echo -e "${RED} ## Coveralls.io not collect coverage report! ## ${NC} "
|
||||
exit $?
|
||||
fi
|
||||
|
||||
bash <(curl -s https://codecov.io/bash) -y .codecov.yml -f coverage.info
|
||||
|
@ -174,7 +190,6 @@ matrix:
|
|||
echo -e "${GREEN} ## Uploaded to Codecov! ## ${NC} "
|
||||
else
|
||||
echo -e "${RED} ## Codecov did not collect coverage report! ## ${NC} "
|
||||
exit $?
|
||||
fi
|
||||
|
||||
;;
|
||||
|
|
|
@ -1 +1,3 @@
|
|||
sudo python ./test.py -f insert/basic.py
|
||||
#!/bin/bash
|
||||
python2 ./test.py -f insert/basic.py $1
|
||||
python2 ./test.py -s $1
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
import getopt
|
||||
import subprocess
|
||||
from distutils.log import warn as printf
|
||||
|
||||
from util.log import *
|
||||
from util.dnodes import *
|
||||
from util.cases import *
|
||||
|
@ -29,8 +32,10 @@ if __name__ == "__main__":
|
|||
deployPath = ""
|
||||
masterIp = ""
|
||||
testCluster = False
|
||||
opts, args = getopt.getopt(sys.argv[1:], 'f:p:m:sch', [
|
||||
'file=', 'path=', 'master', 'stop', 'cluster', 'help'])
|
||||
valgrind = 0
|
||||
stop = 0
|
||||
opts, args = getopt.gnu_getopt(sys.argv[1:], 'f:p:m:scgh', [
|
||||
'file=', 'path=', 'master', 'stop', 'cluster', 'valgrind', 'help'])
|
||||
for key, value in opts:
|
||||
if key in ['-h', '--help']:
|
||||
tdLog.printNoPrefix(
|
||||
|
@ -41,21 +46,49 @@ if __name__ == "__main__":
|
|||
tdLog.printNoPrefix('-c Test Cluster Flag')
|
||||
tdLog.printNoPrefix('-s stop All dnodes')
|
||||
sys.exit(0)
|
||||
|
||||
if key in ['-f', '--file']:
|
||||
fileName = value
|
||||
|
||||
if key in ['-p', '--path']:
|
||||
deployPath = value
|
||||
|
||||
if key in ['-m', '--master']:
|
||||
masterIp = value
|
||||
|
||||
if key in ['-c', '--cluster']:
|
||||
testCluster = True
|
||||
|
||||
if key in ['-g', '--valgrind']:
|
||||
valgrind = 1
|
||||
|
||||
if key in ['-s', '--stop']:
|
||||
cmd = "ps -ef|grep -w taosd | grep 'taosd' | grep -v grep | awk '{print $2}' && pkill -9 taosd"
|
||||
os.system(cmd)
|
||||
tdLog.exit('stop All dnodes')
|
||||
stop = 1
|
||||
|
||||
if (stop != 0):
|
||||
if (valgrind == 0):
|
||||
toBeKilled = "taosd"
|
||||
else:
|
||||
toBeKilled = "valgrind.bin"
|
||||
|
||||
killCmd = "ps -ef|grep -w %s| grep -v grep | awk '{print $2}' | xargs kill -HUP " % toBeKilled
|
||||
os.system(killCmd)
|
||||
time.sleep(1)
|
||||
|
||||
psCmd = "ps -ef|grep -w %s| grep -v grep | awk '{print $2}'" % toBeKilled
|
||||
processID = subprocess.check_output(psCmd, shell=True)
|
||||
|
||||
while( processID ):
|
||||
os.system(killCmd)
|
||||
time.sleep(1)
|
||||
processID = subprocess.check_output(psCmd, shell=True)
|
||||
|
||||
tdLog.exit('stop All dnodes')
|
||||
|
||||
if masterIp == "":
|
||||
tdDnodes.init(deployPath)
|
||||
tdDnodes.setValgrind(valgrind)
|
||||
|
||||
if testCluster:
|
||||
tdLog.notice("Procedures for testing cluster")
|
||||
if fileName == "all":
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
import sys
|
||||
import os
|
||||
import os.path
|
||||
import subprocess
|
||||
from util.log import *
|
||||
|
||||
|
||||
|
@ -29,6 +30,9 @@ class TDSimClient:
|
|||
if os.system(cmd) != 0:
|
||||
tdLog.exit(cmd)
|
||||
|
||||
def setValgrind(self, value):
|
||||
self.valgrind = value
|
||||
|
||||
def deploy(self):
|
||||
self.logDir = "%s/sim/psim/log" % (self.path,)
|
||||
self.cfgDir = "%s/sim/psim/cfg" % (self.path)
|
||||
|
@ -78,10 +82,14 @@ class TDDnode:
|
|||
self.index = index
|
||||
self.running = 0
|
||||
self.deployed = 0
|
||||
self.valgrind = 0
|
||||
|
||||
def init(self, path):
|
||||
self.path = path
|
||||
|
||||
def setValgrind(self, value):
|
||||
self.valgrind = value
|
||||
|
||||
def deploy(self):
|
||||
self.logDir = "%s/sim/dnode%d/log" % (self.path, self.index)
|
||||
self.dataDir = "%s/sim/dnode%d/data" % (self.path, self.index)
|
||||
|
@ -164,9 +172,18 @@ class TDDnode:
|
|||
|
||||
if self.deployed == 0:
|
||||
tdLog.exit("dnode:%d is not deployed" % (self.index))
|
||||
cmd = "nohup %staosd -c %s > /dev/null 2>&1 & " % (
|
||||
binPath, self.cfgDir)
|
||||
print(cmd)
|
||||
|
||||
if self.valgrind == 0:
|
||||
cmd = "nohup %staosd -c %s > /dev/null 2>&1 & " % (
|
||||
binPath, self.cfgDir)
|
||||
else:
|
||||
valgrindCmdline = "valgrind --tool=memcheck --leak-check=full --show-reachable=no --track-origins=yes --show-leak-kinds=all -v --workaround-gcc296-bugs=yes"
|
||||
|
||||
cmd = "nohup %s %staosd -c %s 2>&1 & " % (
|
||||
valgrindCmdline, binPath, self.cfgDir)
|
||||
|
||||
print(cmd)
|
||||
|
||||
if os.system(cmd) != 0:
|
||||
tdLog.exit(cmd)
|
||||
self.running = 1
|
||||
|
@ -275,8 +292,12 @@ class TDDnodes:
|
|||
self.sim.init(self.path)
|
||||
self.sim.deploy()
|
||||
|
||||
def setValgrind(self, value):
|
||||
self.valgrind = value
|
||||
|
||||
def deploy(self, index):
|
||||
self.check(index)
|
||||
self.dnodes[index - 1].setValgrind(self.valgrind)
|
||||
self.dnodes[index - 1].deploy()
|
||||
|
||||
def cfg(self, index, option, value):
|
||||
|
@ -312,11 +333,14 @@ class TDDnodes:
|
|||
for i in range(len(self.dnodes)):
|
||||
self.dnodes[i].stop()
|
||||
|
||||
cmd = "sudo systemctl stop taosd"
|
||||
os.system(cmd)
|
||||
psCmd = "ps -ef | grep -w taosd | grep 'root' | grep -v grep | awk '{print $2}'"
|
||||
processID = subprocess.check_output(psCmd, shell=True)
|
||||
if processID:
|
||||
cmd = "sudo systemctl stop taosd"
|
||||
os.system(cmd)
|
||||
# if os.system(cmd) != 0 :
|
||||
# tdLog.exit(cmd)
|
||||
cmd = "ps -ef | grep -w taosd | grep 'dnode' | grep -v grep | awk '{print $2}' && sudo pkill -sigkill taosd"
|
||||
cmd = "ps -ef | grep -w taosd | grep 'dnode' | grep -v grep | awk '{print $2}' && pkill -sigkill taosd"
|
||||
os.system(cmd)
|
||||
# if os.system(cmd) != 0 :
|
||||
# tdLog.exit(cmd)
|
||||
|
|
|
@ -42,7 +42,7 @@ class TDLog:
|
|||
printf("\033[1;31m%s %s\033[0m" % (datetime.datetime.now(), err))
|
||||
sys.exit(1)
|
||||
|
||||
def printfNoPrefix(self, info):
|
||||
def printNoPrefix(self, info):
|
||||
printf("\033[1;36m%s\033[0m" % (info))
|
||||
|
||||
|
||||
|
|
|
@ -8,32 +8,33 @@ GREEN_UNDERLINE='\033[4;32m'
|
|||
NC='\033[0m'
|
||||
|
||||
cd script
|
||||
sudo ./test.sh 2>&1 | grep 'success\|failed' | tee out.txt
|
||||
./test.sh -f basicSuite.sim 2>&1 | grep 'success\|failed\|fault' | tee out.txt
|
||||
|
||||
total_success=`grep success out.txt | wc -l`
|
||||
totalSuccess=`grep success out.txt | wc -l`
|
||||
totalBasic=`grep success out.txt | grep Suite | wc -l`
|
||||
|
||||
if [ "$total_success" -gt "0" ]; then
|
||||
total_success=`expr $total_success - 1`
|
||||
echo -e "${GREEN} ### Total $total_success TSIM case(s) succeed! ### ${NC}"
|
||||
if [ "$totalSuccess" -gt "0" ]; then
|
||||
totalSuccess=`expr $totalSuccess - $totalBasic`
|
||||
echo -e "${GREEN} ### Total $totalSuccess TSIM case(s) succeed! ### ${NC}"
|
||||
fi
|
||||
|
||||
total_failed=`grep failed out.txt | wc -l`
|
||||
if [ "$total_failed" -ne "0" ]; then
|
||||
echo -e "${RED} ### Total $total_failed TSIM case(s) failed! ### ${NC}"
|
||||
exit $total_failed
|
||||
totalFailed=`grep 'failed\|fault' out.txt | wc -l`
|
||||
if [ "$totalFailed" -ne "0" ]; then
|
||||
echo -e "${RED} ### Total $totalFailed TSIM case(s) failed! ### ${NC}"
|
||||
exit $totalFailed
|
||||
fi
|
||||
|
||||
cd ../pytest
|
||||
sudo ./simpletest.sh 2>&1 | grep 'successfully executed\|failed' | tee pytest-out.txt
|
||||
total_py_success=`grep 'successfully executed' pytest-out.txt | wc -l`
|
||||
./simpletest.sh 2>&1 | grep 'successfully executed\|failed' | tee pytest-out.txt
|
||||
totalPySuccess=`grep 'successfully executed' pytest-out.txt | wc -l`
|
||||
|
||||
if [ "$total_py_success" -gt "0" ]; then
|
||||
echo -e "${GREEN} ### Total $total_py_success python case(s) succeed! ### ${NC}"
|
||||
if [ "$totalPySuccess" -gt "0" ]; then
|
||||
echo -e "${GREEN} ### Total $totalPySuccess python case(s) succeed! ### ${NC}"
|
||||
fi
|
||||
|
||||
total_py_failed=`grep 'failed' pytest-out.txt | wc -l`
|
||||
if [ "$total_py_failed" -ne "0" ]; then
|
||||
echo -e "${RED} ### Total $total_py_failed python case(s) failed! ### ${NC}"
|
||||
exit $total_py_failed
|
||||
totalPyFailed=`grep 'failed' pytest-out.txt | wc -l`
|
||||
if [ "$totalPyFailed" -ne "0" ]; then
|
||||
echo -e "${RED} ### Total $totalPyFailed python case(s) failed! ### ${NC}"
|
||||
exit $totalPyFailed
|
||||
fi
|
||||
|
||||
|
|
Loading…
Reference in New Issue