test: add smoke test scripts
This commit is contained in:
parent
3aca3c68f0
commit
5cc02a774f
|
@ -161,4 +161,4 @@ version.h
|
|||
geos_c.h
|
||||
source/libs/parser/src/sql.c
|
||||
include/common/ttokenauto.h
|
||||
|
||||
!packaging/smoke_test/pytest_require.txt
|
||||
|
|
|
@ -0,0 +1,115 @@
|
|||
# conftest.py
|
||||
import pytest
|
||||
|
||||
|
||||
def pytest_addoption(parser):
|
||||
parser.addoption(
|
||||
"--verMode", default="enterprise", help="community or enterprise"
|
||||
)
|
||||
parser.addoption(
|
||||
"--tVersion", default="3.3.2.6", help="the version of taos"
|
||||
)
|
||||
parser.addoption(
|
||||
"--baseVersion", default="smoking", help="the path of nas"
|
||||
)
|
||||
parser.addoption(
|
||||
"--sourcePath", default="nas", help="only support nas currently"
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
# Collect the setup and teardown of each test case and their std information
|
||||
setup_stdout_info = {}
|
||||
teardown_stdout_info = {}
|
||||
|
||||
|
||||
@pytest.hookimpl(hookwrapper=True)
|
||||
def pytest_runtest_makereport(item, call):
|
||||
outcome = yield
|
||||
rep = outcome.get_result()
|
||||
|
||||
# Record the std of setup and teardown
|
||||
if call.when == 'setup':
|
||||
for i in rep.sections:
|
||||
if i[0] == "Captured stdout setup":
|
||||
if not setup_stdout_info:
|
||||
setup_stdout_info[item.nodeid] = i[1]
|
||||
elif call.when == 'teardown':
|
||||
for i in rep.sections:
|
||||
if i[0] == "Captured stdout teardown":
|
||||
teardown_stdout_info[item.nodeid] = i[1]
|
||||
|
||||
|
||||
# Insert setup and teardown's std in the summary section
|
||||
def pytest_html_results_summary(prefix, summary, postfix):
|
||||
if setup_stdout_info or teardown_stdout_info:
|
||||
rows = []
|
||||
|
||||
# Insert setup stdout
|
||||
if setup_stdout_info:
|
||||
for nodeid, stdout in setup_stdout_info.items():
|
||||
html_content = '''
|
||||
<tr>
|
||||
<td><b><span style="font-size: larger; color: black;">Setup:</span></b></td>
|
||||
<td colspan="4">
|
||||
<a href="#" id="toggleSetup">Show Setup</a>
|
||||
<div id="setupContent" class="collapsible-content" style="display: none; white-space: pre-wrap; margin-top: 5px;">
|
||||
<pre>{}</pre>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
'''.format(stdout.strip())
|
||||
|
||||
# 如果需要在 Python 脚本中生成 HTML,并使用 JavaScript 控制折叠内容的显示,可以这样做:
|
||||
|
||||
html_script = '''
|
||||
<script>
|
||||
document.getElementById('toggleSetup').addEventListener('click', function(event) {
|
||||
event.preventDefault();
|
||||
var setupContentDiv = document.getElementById('setupContent');
|
||||
setupContentDiv.style.display = setupContentDiv.style.display === 'none' ? 'block' : 'none';
|
||||
var buttonText = setupContentDiv.style.display === 'none' ? 'Show Setup' : 'Hide Setup';
|
||||
this.textContent = buttonText;
|
||||
});
|
||||
</script>
|
||||
'''
|
||||
|
||||
# 输出完整的 HTML 代码
|
||||
final_html = html_content + html_script
|
||||
rows.append(final_html)
|
||||
rows.append("<br>")
|
||||
# Insert teardown stdout
|
||||
if teardown_stdout_info:
|
||||
for nodeid, stdout in teardown_stdout_info.items():
|
||||
html_content = '''
|
||||
<tr>
|
||||
<td><b><span style="font-size: larger; color: black;">Teardown:</span></b></td>
|
||||
<td colspan="4">
|
||||
<a href="#" id="toggleTeardown">Show Teardown</a>
|
||||
<div id="teardownContent" class="collapsible-content" style="display: none; white-space: pre-wrap; margin-top: 5px;">
|
||||
<pre>{}</pre>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
'''.format(stdout.strip())
|
||||
|
||||
# 如果需要在 Python 脚本中生成 HTML,并使用 JavaScript 控制折叠内容的显示,可以这样做:
|
||||
|
||||
html_script = '''
|
||||
<script>
|
||||
document.getElementById('toggleTeardown').addEventListener('click', function(event) {
|
||||
event.preventDefault();
|
||||
var teardownContentDiv = document.getElementById('teardownContent');
|
||||
teardownContentDiv.style.display = teardownContentDiv.style.display === 'none' ? 'block' : 'none';
|
||||
var buttonText = teardownContentDiv.style.display === 'none' ? 'Show Teardown' : 'Hide Teardown';
|
||||
this.textContent = buttonText;
|
||||
});
|
||||
</script>
|
||||
'''
|
||||
|
||||
# 输出完整的 HTML 代码
|
||||
final_html = html_content + html_script
|
||||
rows.append(final_html)
|
||||
|
||||
prefix.extend(rows)
|
|
@ -0,0 +1,15 @@
|
|||
#!/usr/bin/expect
|
||||
set packageName [lindex $argv 0]
|
||||
set packageSuffix [lindex $argv 1]
|
||||
set timeout 30
|
||||
if { ${packageSuffix} == "deb" } {
|
||||
spawn dpkg -i ${packageName}
|
||||
} elseif { ${packageSuffix} == "rpm"} {
|
||||
spawn rpm -ivh ${packageName}
|
||||
}
|
||||
expect "*one:"
|
||||
send "\r"
|
||||
expect "*skip:"
|
||||
send "\r"
|
||||
|
||||
expect eof
|
|
@ -0,0 +1,57 @@
|
|||
set baseVersion=%1%
|
||||
set version=%2%
|
||||
set verMode=%3%
|
||||
set sType=%4%
|
||||
echo %fileType%
|
||||
rem stop services
|
||||
if EXIST C:\TDengine (
|
||||
if EXIST C:\TDengine\stop-all.bat (
|
||||
call C:\TDengine\stop-all.bat /silent
|
||||
echo "***************Stop taos services***************"
|
||||
)
|
||||
if exist C:\TDengine\unins000.exe (
|
||||
call C:\TDengine\unins000.exe /silent
|
||||
echo "***************uninstall TDengine***************"
|
||||
)
|
||||
rd /S /q C:\TDengine
|
||||
)
|
||||
if EXIST C:\ProDB (
|
||||
if EXIST C:\ProDB\stop-all.bat (
|
||||
call C:\ProDB\stop-all.bat /silent
|
||||
echo "***************Stop taos services***************"
|
||||
)
|
||||
if exist C:\ProDB\unins000.exe (
|
||||
call C:\ProDB\unins000.exe /silent
|
||||
echo "***************uninstall TDengine***************"
|
||||
)
|
||||
rd /S /q C:\ProDB
|
||||
)
|
||||
if "%verMode%"=="enterprise" (
|
||||
if "%sType%"=="client" (
|
||||
set fileType=enterprise-client
|
||||
) else (
|
||||
set fileType=enterprise
|
||||
)
|
||||
) else (
|
||||
set fileType=%sType%
|
||||
)
|
||||
|
||||
if "%baseVersion%"=="ProDB" (
|
||||
echo %fileType%
|
||||
set installer=ProDB-%fileType%-%version%-Windows-x64.exe
|
||||
) else (
|
||||
echo %fileType%
|
||||
set installer=TDengine-%fileType%-%version%-Windows-x64.exe
|
||||
)
|
||||
|
||||
if "%baseVersion%"=="ProDB" (
|
||||
echo %installer%
|
||||
scp root@192.168.1.213:/nas/OEM/ProDB/v%version%/%installer% C:\workspace
|
||||
) else (
|
||||
echo %installer%
|
||||
scp root@192.168.1.213:/nas/TDengine/%baseVersion%/v%version%/%verMode%/%installer% C:\workspace
|
||||
)
|
||||
|
||||
echo "***************Finish installer transfer!***************"
|
||||
C:\workspace\%installer% /silent
|
||||
echo "***************Finish install!***************"
|
|
@ -0,0 +1,325 @@
|
|||
#!/bin/sh
|
||||
|
||||
|
||||
function usage() {
|
||||
echo "$0"
|
||||
echo -e "\t -f test file type,server/client/tools/"
|
||||
echo -e "\t -m pacakage version Type,community/enterprise"
|
||||
echo -e "\t -l package type,lite or not"
|
||||
echo -e "\t -c operation type,x64/arm64"
|
||||
echo -e "\t -v pacakage version,3.0.1.7"
|
||||
echo -e "\t -o pacakage version,3.0.1.7"
|
||||
echo -e "\t -s source Path,web/nas"
|
||||
echo -e "\t -t package Type,tar/rpm/deb"
|
||||
echo -e "\t -h help"
|
||||
}
|
||||
|
||||
|
||||
#parameter
|
||||
scriptDir=$(dirname $(readlink -f $0))
|
||||
version="3.0.1.7"
|
||||
originversion="smoking"
|
||||
testFile="server"
|
||||
verMode="communtity"
|
||||
sourcePath="nas"
|
||||
cpuType="x64"
|
||||
lite="true"
|
||||
packageType="tar"
|
||||
subFile="package.tar.gz"
|
||||
while getopts "m:c:f:l:s:o:t:v:h" opt; do
|
||||
case $opt in
|
||||
m)
|
||||
verMode=$OPTARG
|
||||
;;
|
||||
v)
|
||||
version=$OPTARG
|
||||
;;
|
||||
f)
|
||||
testFile=$OPTARG
|
||||
;;
|
||||
l)
|
||||
lite=$OPTARG
|
||||
;;
|
||||
s)
|
||||
sourcePath=$OPTARG
|
||||
;;
|
||||
o)
|
||||
originversion=$OPTARG
|
||||
;;
|
||||
c)
|
||||
cpuType=$OPTARG
|
||||
;;
|
||||
t)
|
||||
packageType=$OPTARG
|
||||
;;
|
||||
h)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
?)
|
||||
echo "Invalid option: -$OPTARG"
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
systemType=`uname`
|
||||
if [ ${systemType} == "Darwin" ]; then
|
||||
platform="macOS"
|
||||
else
|
||||
platform="Linux"
|
||||
fi
|
||||
|
||||
echo "testFile:${testFile},verMode:${verMode},lite:${lite},cpuType:${cpuType},packageType:${packageType},version-${version},originversion:${originversion},sourcePath:${sourcePath}"
|
||||
# Color setting
|
||||
RED='\033[41;30m'
|
||||
GREEN='\033[1;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[1;34m'
|
||||
GREEN_DARK='\033[0;32m'
|
||||
YELLOW_DARK='\033[0;33m'
|
||||
BLUE_DARK='\033[0;34m'
|
||||
GREEN_UNDERLINE='\033[4;32m'
|
||||
NC='\033[0m'
|
||||
if [ "${originversion}" = "ProDB" ]; then
|
||||
TDengine="ProDB"
|
||||
else
|
||||
TDengine="TDengine"
|
||||
fi
|
||||
if [[ ${verMode} = "enterprise" ]];then
|
||||
prePackage="${TDengine}-enterprise"
|
||||
if [[ ${testFile} = "client" ]];then
|
||||
prePackage="${TDengine}-enterprise-${testFile}"
|
||||
fi
|
||||
elif [ ${verMode} = "community" ];then
|
||||
prePackage="${TDengine}-${testFile}"
|
||||
fi
|
||||
if [ ${lite} = "true" ];then
|
||||
packageLite="-Lite"
|
||||
elif [ ${lite} = "false" ];then
|
||||
packageLite=""
|
||||
fi
|
||||
if [[ "$packageType" = "tar" ]] ;then
|
||||
packageType="tar.gz"
|
||||
fi
|
||||
|
||||
tdPath="${prePackage}-${version}"
|
||||
|
||||
packageName="${tdPath}-${platform}-${cpuType}${packageLite}.${packageType}"
|
||||
|
||||
if [ "$testFile" == "server" ] ;then
|
||||
installCmd="install.sh"
|
||||
elif [ ${testFile} = "client" ];then
|
||||
installCmd="install_client.sh"
|
||||
fi
|
||||
|
||||
echo "tdPath:${tdPath},packageName:${packageName}}"
|
||||
cmdInstall() {
|
||||
command=$1
|
||||
if command -v ${command} ;then
|
||||
echoColor YD "${command} is already installed"
|
||||
else
|
||||
if command -v apt ;then
|
||||
apt-get install ${command} -y
|
||||
elif command -v yum ;then
|
||||
yum -y install ${command}
|
||||
echoColor YD "you should install ${command} manually"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
echoColor() {
|
||||
color=$1
|
||||
command=$2
|
||||
if [ ${color} = 'Y' ];then
|
||||
echo -e "${YELLOW}${command}${NC}"
|
||||
elif [ ${color} = 'YD' ];then
|
||||
echo -e "${YELLOW_DARK}${command}${NC}"
|
||||
elif [ ${color} = 'R' ];then
|
||||
echo -e "${RED}${command}${NC}"
|
||||
elif [ ${color} = 'G' ];then
|
||||
echo -e "${GREEN}${command}${NC}\r\n"
|
||||
elif [ ${color} = 'B' ];then
|
||||
echo -e "${BLUE}${command}${NC}"
|
||||
elif [ ${color} = 'BD' ];then
|
||||
echo -e "${BLUE_DARK}${command}${NC}"
|
||||
fi
|
||||
}
|
||||
|
||||
wgetFile() {
|
||||
|
||||
file=$1
|
||||
versionPath=$2
|
||||
sourceP=$3
|
||||
nasServerIP="192.168.1.213"
|
||||
if [ "${originversion}" = "ProDB" ]; then
|
||||
packagePath="/nas/OEM/ProDB/v${versionPath}"
|
||||
else
|
||||
packagePath="/nas/TDengine/${originversion}/v${versionPath}/${verMode}"
|
||||
fi
|
||||
if [ -f ${file} ];then
|
||||
echoColor YD "${file} already exists ,it will delete it and download it again "
|
||||
# rm -rf ${file}
|
||||
fi
|
||||
|
||||
if [[ ${sourceP} = 'web' ]];then
|
||||
echoColor BD "====download====:wget https://www.taosdata.com/assets-download/3.0/${file}"
|
||||
wget https://www.taosdata.com/assets-download/3.0/${file}
|
||||
elif [[ ${sourceP} = 'nas' ]];then
|
||||
echoColor BD "====download====:scp root@${nasServerIP}:${packagePath}/${file} ."
|
||||
scp root@${nasServerIP}:${packagePath}/${file} .
|
||||
fi
|
||||
}
|
||||
|
||||
function newPath {
|
||||
|
||||
buildPath=$1
|
||||
|
||||
if [ ! -d ${buildPath} ] ;then
|
||||
echoColor BD "mkdir -p ${buildPath}"
|
||||
mkdir -p ${buildPath}
|
||||
else
|
||||
echoColor YD "${buildPath} already exists"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
echoColor G "===== install basesoft ====="
|
||||
cmdInstall tree
|
||||
cmdInstall wget
|
||||
cmdInstall expect
|
||||
|
||||
echoColor G "===== Uninstall all components of TDeingne ====="
|
||||
|
||||
if command -v rmtaos ;then
|
||||
echoColor YD "uninstall all components of TDeingne:rmtaos"
|
||||
rmtaos
|
||||
else
|
||||
echoColor YD "os doesn't include TDengine"
|
||||
fi
|
||||
|
||||
if [[ ${packageName} =~ "server" ]] ;then
|
||||
echoColor BD " pkill -9 taosd "
|
||||
pkill -9 taosd
|
||||
fi
|
||||
|
||||
if command -v rmprodb ;then
|
||||
echoColor YD "uninstall all components of TDeingne:rmprodb"
|
||||
rmprodb
|
||||
else
|
||||
echoColor YD "os doesn't include TDengine"
|
||||
fi
|
||||
|
||||
if [[ ${packageName} =~ "server" ]] ;then
|
||||
echoColor BD " pkill -9 prodbd "
|
||||
pkill -9 prodbd
|
||||
fi
|
||||
|
||||
echoColor G "===== new workroom path ====="
|
||||
installPath="/usr/local/src/packageTest"
|
||||
|
||||
if [ ${systemType} == "Darwin" ]; then
|
||||
installPath="${WORK_DIR}/packageTest"
|
||||
fi
|
||||
|
||||
newPath ${installPath}
|
||||
|
||||
#if [ -d ${installPath}/${tdPath} ] ;then
|
||||
# echoColor BD "rm -rf ${installPath}/${tdPath}/*"
|
||||
# rm -rf ${installPath}/${tdPath}/*
|
||||
#fi
|
||||
|
||||
echoColor G "===== download installPackage ====="
|
||||
cd ${installPath} && wgetFile ${packageName} ${version} ${sourcePath}
|
||||
#cd ${oriInstallPath} && wgetFile ${originPackageName} ${originversion} ${sourcePath}
|
||||
|
||||
|
||||
cd ${installPath}
|
||||
cp -r ${scriptDir}/debRpmAutoInstall.sh .
|
||||
|
||||
packageSuffix=$(echo ${packageName} | awk -F '.' '{print $NF}')
|
||||
|
||||
|
||||
if [ ! -f debRpmAutoInstall.sh ];then
|
||||
echo '#!/usr/bin/expect ' > debRpmAutoInstall.sh
|
||||
echo 'set packageName [lindex $argv 0]' >> debRpmAutoInstall.sh
|
||||
echo 'set packageSuffix [lindex $argv 1]' >> debRpmAutoInstall.sh
|
||||
echo 'set timeout 30 ' >> debRpmAutoInstall.sh
|
||||
echo 'if { ${packageSuffix} == "deb" } {' >> debRpmAutoInstall.sh
|
||||
echo ' spawn dpkg -i ${packageName} ' >> debRpmAutoInstall.sh
|
||||
echo '} elseif { ${packageSuffix} == "rpm"} {' >> debRpmAutoInstall.sh
|
||||
echo ' spawn rpm -ivh ${packageName}' >> debRpmAutoInstall.sh
|
||||
echo '}' >> debRpmAutoInstall.sh
|
||||
echo 'expect "*one:"' >> debRpmAutoInstall.sh
|
||||
echo 'send "\r"' >> debRpmAutoInstall.sh
|
||||
echo 'expect "*skip:"' >> debRpmAutoInstall.sh
|
||||
echo 'send "\r" ' >> debRpmAutoInstall.sh
|
||||
fi
|
||||
|
||||
|
||||
echoColor G "===== install Package ====="
|
||||
|
||||
if [[ ${packageName} =~ "deb" ]];then
|
||||
cd ${installPath}
|
||||
dpkg -r taostools
|
||||
dpkg -r tdengine
|
||||
if [[ ${packageName} =~ "TDengine" ]];then
|
||||
echoColor BD "./debRpmAutoInstall.sh ${packageName} ${packageSuffix}" && chmod 755 debRpmAutoInstall.sh && ./debRpmAutoInstall.sh ${packageName} ${packageSuffix}
|
||||
else
|
||||
echoColor BD "dpkg -i ${packageName}" && dpkg -i ${packageName}
|
||||
fi
|
||||
elif [[ ${packageName} =~ "rpm" ]];then
|
||||
cd ${installPath}
|
||||
sudo rpm -e tdengine
|
||||
sudo rpm -e taostools
|
||||
if [[ ${packageName} =~ "TDengine" ]];then
|
||||
echoColor BD "./debRpmAutoInstall.sh ${packageName} ${packageSuffix}" && chmod 755 debRpmAutoInstall.sh && ./debRpmAutoInstall.sh ${packageName} ${packageSuffix}
|
||||
else
|
||||
echoColor BD "rpm -ivh ${packageName}" && rpm -ivh ${packageName}
|
||||
fi
|
||||
elif [[ ${packageName} =~ "tar" ]];then
|
||||
echoColor G "===== check installPackage File of tar ====="
|
||||
|
||||
cd ${installPath}
|
||||
echoColor YD "unzip the new installation package"
|
||||
echoColor BD "tar -xf ${packageName}" && tar -xf ${packageName}
|
||||
|
||||
cd ${installPath}/${tdPath} && tree -I "driver" > ${installPath}/now_${version}_checkfile
|
||||
|
||||
cd ${installPath}
|
||||
diff ${installPath}/base_${originversion}_checkfile ${installPath}/now_${version}_checkfile > ${installPath}/diffFile.log
|
||||
diffNumbers=`cat ${installPath}/diffFile.log |wc -l `
|
||||
|
||||
if [ ${diffNumbers} != 0 ];then
|
||||
echoColor R "The number and names of files is different from the previous installation package"
|
||||
diffLog=`cat ${installPath}/diffFile.log`
|
||||
echoColor Y "${diffLog}"
|
||||
exit -1
|
||||
else
|
||||
echoColor G "The number and names of files are the same as previous installation packages"
|
||||
rm -rf ${installPath}/diffFile.log
|
||||
fi
|
||||
echoColor YD "===== install Package of tar ====="
|
||||
cd ${installPath}/${tdPath}
|
||||
if [ ${testFile} = "server" ];then
|
||||
echoColor BD "bash ${installCmd} -e no "
|
||||
bash ${installCmd} -e no
|
||||
else
|
||||
echoColor BD "bash ${installCmd} "
|
||||
bash ${installCmd}
|
||||
fi
|
||||
elif [[ ${packageName} =~ "pkg" ]];then
|
||||
cd ${installPath}
|
||||
sudo installer -pkg ${packageName} -target /
|
||||
echoColor YD "===== install Package successfully! ====="
|
||||
fi
|
||||
|
||||
#cd ${installPath}
|
||||
#
|
||||
#rm -rf ${installPath}/${packageName}
|
||||
#if [ ${platform} == "Linux" ]; then
|
||||
# rm -rf ${installPath}/${tdPath}/
|
||||
#fi
|
||||
echoColor YD "===== end of shell file ====="
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
|
||||
import subprocess
|
||||
|
||||
|
||||
def run_cmd(command):
|
||||
print("CMD:", command)
|
||||
result = subprocess.run(command, capture_output=True, text=True, shell=True)
|
||||
print("STDOUT:", result.stdout)
|
||||
print("STDERR:", result.stderr)
|
||||
print("Return Code:", result.returncode)
|
||||
#assert result.returncode == 0
|
||||
return result
|
|
@ -0,0 +1,21 @@
|
|||
import pytest
|
||||
|
||||
# python3 -m pytest test_server.py -v --html=/var/www/html/report.html --json-report --json-report-file="/var/www/html/report.json" --timeout=60
|
||||
|
||||
# pytest.main(["-s", "-v"])
|
||||
import pytest
|
||||
|
||||
import subprocess
|
||||
|
||||
|
||||
# define cmd function
|
||||
|
||||
|
||||
|
||||
|
||||
def main():
|
||||
pytest.main(['--html=report.html'])
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
|
@ -0,0 +1,16 @@
|
|||
pytest-html
|
||||
pytest-json-report
|
||||
pytest-timeout
|
||||
taospy
|
||||
numpy
|
||||
fabric2
|
||||
psutil
|
||||
pandas
|
||||
toml
|
||||
distro
|
||||
requests
|
||||
pexpect
|
||||
faker
|
||||
pyopenssl
|
||||
taos-ws-py
|
||||
taospy
|
|
@ -0,0 +1,11 @@
|
|||
rm -rf %WIN_TDENGINE_ROOT_DIR%\debug
|
||||
mkdir %WIN_TDENGINE_ROOT_DIR%\debug
|
||||
mkdir %WIN_TDENGINE_ROOT_DIR%\debug\build
|
||||
mkdir %WIN_TDENGINE_ROOT_DIR%\debug\build\bin
|
||||
xcopy C:\TDengine\taos*.exe %WIN_TDENGINE_ROOT_DIR%\debug\build\bin
|
||||
|
||||
set case_out_file=%cd%\case.out
|
||||
|
||||
cd %WIN_TDENGINE_ROOT_DIR%\tests\system-test
|
||||
python3 .\test.py -f 0-others\taosShell.py
|
||||
python3 .\test.py -f 6-cluster\5dnode3mnodeSep1VnodeStopDnodeModifyMeta.py -N 6 -M 3
|
|
@ -0,0 +1,29 @@
|
|||
#!/bin/bash
|
||||
ulimit -c unlimited
|
||||
|
||||
rm -rf ${TDENGINE_ROOT_DIR}/debug
|
||||
mkdir ${TDENGINE_ROOT_DIR}/debug
|
||||
mkdir ${TDENGINE_ROOT_DIR}/debug/build
|
||||
mkdir ${TDENGINE_ROOT_DIR}/debug/build/bin
|
||||
|
||||
systemType=`uname`
|
||||
if [ ${systemType} == "Darwin" ]; then
|
||||
cp /usr/local/bin/taos* ${TDENGINE_ROOT_DIR}/debug/build/bin/
|
||||
else
|
||||
cp /usr/bin/taos* ${TDENGINE_ROOT_DIR}/debug/build/bin/
|
||||
fi
|
||||
|
||||
case_out_file=`pwd`/case.out
|
||||
python3 -m pip install -r ${TDENGINE_ROOT_DIR}/tests/requirements.txt >> $case_out_file
|
||||
python3 -m pip install taos-ws-py taospy >> $case_out_file
|
||||
|
||||
cd ${TDENGINE_ROOT_DIR}/tests/army
|
||||
python3 ./test.py -f query/query_basic.py -N 3 >> $case_out_file
|
||||
|
||||
cd ${TDENGINE_ROOT_DIR}/tests/system-test
|
||||
python3 ./test.py -f 1-insert/insert_column_value.py >> $case_out_file
|
||||
python3 ./test.py -f 2-query/primary_ts_base_5.py >> $case_out_file
|
||||
python3 ./test.py -f 2-query/case_when.py >> $case_out_file
|
||||
python3 ./test.py -f 2-query/partition_limit_interval.py >> $case_out_file
|
||||
python3 ./test.py -f 2-query/join.py >> $case_out_file
|
||||
python3 ./test.py -f 2-query/fill.py >> $case_out_file
|
|
@ -0,0 +1,251 @@
|
|||
#!/usr/bin/python
|
||||
###################################################################
|
||||
# Copyright (c) 2016 by TAOS Technologies, Inc.
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is proprietary and confidential to TAOS Technologies.
|
||||
# No part of this file may be reproduced, stored, transmitted,
|
||||
# disclosed or used in any form or by any means other than as
|
||||
# expressly provided by the written permission from Jianhui Tao
|
||||
#
|
||||
###################################################################
|
||||
# install pip
|
||||
# pip install src/connector/python/
|
||||
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys, os
|
||||
import re
|
||||
import platform
|
||||
import getopt
|
||||
import subprocess
|
||||
# from this import d
|
||||
import time
|
||||
|
||||
# input for server
|
||||
|
||||
opts, args = getopt.gnu_getopt(sys.argv[1:], 'h:P:v:u', [
|
||||
'host=', 'Port=', 'version='])
|
||||
serverHost = ""
|
||||
serverPort = 0
|
||||
version = ""
|
||||
uninstall = False
|
||||
for key, value in opts:
|
||||
if key in ['--help']:
|
||||
print('A collection of test cases written using Python')
|
||||
print('-h serverHost')
|
||||
print('-P serverPort')
|
||||
print('-v test client version')
|
||||
print('-u test uninstall process, will uninstall TDengine')
|
||||
sys.exit(0)
|
||||
|
||||
if key in ['-h']:
|
||||
serverHost = value
|
||||
if key in ['-P']:
|
||||
serverPort = int(value)
|
||||
if key in ['-v']:
|
||||
version = value
|
||||
if key in ['-u']:
|
||||
uninstall = True
|
||||
if not serverHost:
|
||||
print("Please input use -h to specify your server host.")
|
||||
sys.exit(0)
|
||||
if not version:
|
||||
print("No version specified, will not run version check.")
|
||||
if serverPort == 0:
|
||||
serverPort = 6030
|
||||
print("No server port specified, use default 6030.")
|
||||
|
||||
|
||||
system = platform.system()
|
||||
|
||||
arch = platform.machine()
|
||||
|
||||
databaseName = re.sub(r'[^a-zA-Z0-9]', '', subprocess.getoutput("hostname")).lower()
|
||||
# install taospy
|
||||
taospy_version = ""
|
||||
if system == 'Windows':
|
||||
taospy_version = subprocess.getoutput("pip3 show taospy|findstr Version")
|
||||
else:
|
||||
taospy_version = subprocess.getoutput("pip3 show taospy|grep Version| awk -F ':' '{print $2}' ")
|
||||
|
||||
print("taospy version %s " % taospy_version)
|
||||
if taospy_version == "":
|
||||
subprocess.getoutput("pip3 install git+https://github.com/taosdata/taos-connector-python.git")
|
||||
print("install taos python connector")
|
||||
else:
|
||||
subprocess.getoutput("pip3 install taospy")
|
||||
|
||||
# prepare data by taosBenchmark
|
||||
cmd = "taosBenchmark -y -a 3 -n 100 -t 100 -d %s -h %s -P %d &" % (databaseName, serverHost, serverPort)
|
||||
process_out = subprocess.getoutput(cmd)
|
||||
print(cmd)
|
||||
#os.system("taosBenchmark -y -a 3 -n 100 -t 100 -d %s -h %s -P %d" % (databaseName, serverHost, serverPort))
|
||||
taosBenchmark_test_result = True
|
||||
time.sleep(10)
|
||||
import taos
|
||||
|
||||
conn = taos.connect(host=serverHost,
|
||||
user="root",
|
||||
password="taosdata",
|
||||
database=databaseName,
|
||||
port=serverPort,
|
||||
timezone="Asia/Shanghai") # default your host's timezone
|
||||
|
||||
server_version = conn.server_info
|
||||
print("server_version", server_version)
|
||||
client_version = conn.client_info
|
||||
print("client_version", client_version) # 3.0.0.0
|
||||
|
||||
# Execute a sql and get its result set. It's useful for SELECT statement
|
||||
result: taos.TaosResult = conn.query("SELECT count(*) from meters")
|
||||
|
||||
data = result.fetch_all()
|
||||
print(data)
|
||||
if data[0][0] !=10000:
|
||||
print(" taosBenchmark work not as expected ")
|
||||
print("!!!!!!!!!!!Test Result: taosBenchmark test failed! !!!!!!!!!!")
|
||||
sys.exit(1)
|
||||
#else:
|
||||
# print("**********Test Result: taosBenchmark test passed **********")
|
||||
|
||||
|
||||
# drop database of test
|
||||
taos_test_result = False
|
||||
print("drop database test")
|
||||
print("run taos -s 'drop database %s;' -h %s -P %d" % (databaseName, serverHost, serverPort))
|
||||
taos_cmd_outpur = subprocess.getoutput('taos -s "drop database %s;" -h %s -P %d' % (databaseName, serverHost, serverPort))
|
||||
print(taos_cmd_outpur)
|
||||
if ("Drop OK" in taos_cmd_outpur):
|
||||
taos_test_result = True
|
||||
#print("*******Test Result: taos test passed ************")
|
||||
|
||||
version_test_result = False
|
||||
if version:
|
||||
print("Client info is: %s"%conn.client_info)
|
||||
taos_V_output = ""
|
||||
if system == "Windows":
|
||||
taos_V_output = subprocess.getoutput("taos -V | findstr version")
|
||||
else:
|
||||
taos_V_output = subprocess.getoutput("taos -V | grep version")
|
||||
|
||||
print("taos -V output is: %s" % taos_V_output)
|
||||
if version in taos_V_output and version in conn.client_info:
|
||||
version_test_result = True
|
||||
#print("*******Test Result: Version check passed ************")
|
||||
|
||||
conn.close()
|
||||
if uninstall:
|
||||
print("Start to run rmtaos")
|
||||
leftFile = False
|
||||
print("Platform: ", system)
|
||||
|
||||
if system == "Linux":
|
||||
# 创建一个subprocess.Popen对象,并使用stdin和stdout进行交互
|
||||
process = subprocess.Popen(['rmtaos'],
|
||||
stdin=subprocess.PIPE, stdout=subprocess.PIPE, text=True)
|
||||
# 向子进程发送输入
|
||||
process.stdin.write("y\n")
|
||||
process.stdin.flush() # 确保输入被发送到子进程
|
||||
process.stdin.write("I confirm that I would like to delete all data, log and configuration files\n")
|
||||
process.stdin.flush() # 确保输入被发送到子进程
|
||||
# 关闭子进程的stdin,防止它无限期等待更多输入
|
||||
process.stdin.close()
|
||||
# 等待子进程结束
|
||||
process.wait()
|
||||
# 检查目录清除情况
|
||||
out = subprocess.getoutput("ls /etc/systemd/system/taos*")
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/bin/taos*")
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/local/bin/taos*")
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/lib/libtaos*")
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/lib64/libtaos*")
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/include/taos*")
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/local/taos")
|
||||
#print(out)
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files in /usr/local/taos:%s" % out)
|
||||
leftFile = True
|
||||
if not leftFile:
|
||||
print("*******Test Result: uninstall test passed ************")
|
||||
|
||||
elif system == "Darwin":
|
||||
# 创建一个subprocess.Popen对象,并使用stdin和stdout进行交互
|
||||
process = subprocess.Popen(['sudo', 'rmtaos'],
|
||||
stdin=subprocess.PIPE, stdout=subprocess.PIPE, text=True)
|
||||
# 向子进程发送输入
|
||||
process.stdin.write("y\n")
|
||||
process.stdin.flush() # 确保输入被发送到子进程
|
||||
process.stdin.write("I confirm that I would like to delete all data, log and configuration files\n")
|
||||
process.stdin.flush() # 确保输入被发送到子进程
|
||||
# 关闭子进程的stdin,防止它无限期等待更多输入
|
||||
process.stdin.close()
|
||||
# 等待子进程结束
|
||||
process.wait()
|
||||
# 检查目录清除情况
|
||||
out = subprocess.getoutput("ls /usr/local/bin/taos*")
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/local/lib/libtaos*")
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/local/include/taos*")
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
#out = subprocess.getoutput("ls /usr/local/Cellar/tdengine/")
|
||||
#print(out)
|
||||
#if out:
|
||||
# print("Uninstall left some files: /usr/local/Cellar/tdengine/%s" % out)
|
||||
# leftFile = True
|
||||
#if not leftFile:
|
||||
# print("*******Test Result: uninstall test passed ************")
|
||||
|
||||
elif system == "Windows":
|
||||
process = subprocess.Popen(['unins000','/silent'],
|
||||
stdin=subprocess.PIPE, stdout=subprocess.PIPE, text=True)
|
||||
process.wait()
|
||||
time.sleep(10)
|
||||
out = subprocess.getoutput("ls C:\TDengine")
|
||||
print(out)
|
||||
if len(out.split("\n")) > 3:
|
||||
leftFile = True
|
||||
print("Uninstall left some files: %s" % out)
|
||||
|
||||
if taosBenchmark_test_result:
|
||||
print("**********Test Result: taosBenchmark test passed! **********")
|
||||
if taos_test_result:
|
||||
print("**********Test Result: taos test passed! **********")
|
||||
else:
|
||||
print("!!!!!!!!!!!Test Result: taos test failed! !!!!!!!!!!")
|
||||
if version_test_result:
|
||||
print("**********Test Result: version test passed! **********")
|
||||
else:
|
||||
print("!!!!!!!!!!!Test Result: version test failed! !!!!!!!!!!")
|
||||
if not leftFile:
|
||||
print("**********Test Result: uninstall test passed! **********")
|
||||
else:
|
||||
print("!!!!!!!!!!!Test Result: uninstall test failed! !!!!!!!!!!")
|
||||
if taosBenchmark_test_result and taos_test_result and version_test_result and not leftFile:
|
||||
sys.exit(0)
|
||||
else:
|
||||
sys.exit(1)
|
||||
|
|
@ -0,0 +1,380 @@
|
|||
def sync_source(branch_name) {
|
||||
sh '''
|
||||
hostname
|
||||
ip addr|grep 192|awk '{print $2}'|sed "s/\\/.*//"
|
||||
echo ''' + branch_name + '''
|
||||
'''
|
||||
sh '''
|
||||
cd ${TDENGINE_ROOT_DIR}
|
||||
set +e
|
||||
git reset --hard
|
||||
git fetch || git fetch
|
||||
git checkout -f '''+branch_name+'''
|
||||
git reset --hard origin/'''+branch_name+'''
|
||||
git log | head -n 20
|
||||
git clean -fxd
|
||||
set -e
|
||||
'''
|
||||
return 1
|
||||
}
|
||||
def sync_source_win() {
|
||||
bat '''
|
||||
hostname
|
||||
taskkill /f /t /im taosd.exe
|
||||
ipconfig
|
||||
set
|
||||
date /t
|
||||
time /t
|
||||
'''
|
||||
bat '''
|
||||
echo %branch_name%
|
||||
cd %WIN_TDENGINE_ROOT_DIR%
|
||||
git reset --hard
|
||||
git fetch || git fetch
|
||||
git checkout -f ''' + env.BRANCH_NAME + '''
|
||||
git reset --hard origin/''' + env.BRANCH_NAME + '''
|
||||
git branch
|
||||
git restore .
|
||||
git remote prune origin
|
||||
git pull || git pull
|
||||
git log | head -n 20
|
||||
git clean -fxd
|
||||
'''
|
||||
return 1
|
||||
}
|
||||
pipeline {
|
||||
agent none
|
||||
parameters {
|
||||
choice(
|
||||
name: 'sourcePath',
|
||||
choices: ['nas','web'],
|
||||
description: 'Choice which way to download the installation pacakge;web is Office Web and nas means taos nas server '
|
||||
)
|
||||
choice(
|
||||
name: 'verMode',
|
||||
choices: ['enterprise','community'],
|
||||
description: 'Choice which types of package you want do check '
|
||||
)
|
||||
string (
|
||||
name:'version',
|
||||
defaultValue:'3.3.2.0',
|
||||
description: 'Release version number,eg: 3.0.0.1'
|
||||
)
|
||||
string (
|
||||
name:'baseVersion',
|
||||
defaultValue:'smoking',
|
||||
description: 'Tnas root path. eg:smoking, 3.3'
|
||||
)
|
||||
choice (
|
||||
name:'mode',
|
||||
choices: ['server','client'],
|
||||
description: 'Choose which mode of package you want do run '
|
||||
)
|
||||
choice (
|
||||
name:'smoke_branch',
|
||||
choices: ['test/3.0/smokeTest','test/main/smokeTest','test/3.1/smokeTest'],
|
||||
description: 'Choose which mode of package you want do run '
|
||||
)
|
||||
string (
|
||||
name:'runPlatforms',
|
||||
defaultValue:'server_Linux_x64, server_Linux_arm64, server_Windows_x64, server_Mac_x64',
|
||||
description: 'run package list hotfix usually run: server: server_Linux_x64, server_Linux_arm64 client: client_Linux_x64, client_Linux_arm64 release usually run: enterprise server: server_Linux_x64, server_Linux_arm64, server_Windows_x64 enterprise client: client_Linux_x64, client_Linux_arm64, client_Windows_x64 community server: server_Linux_x64, server_Linux_arm64, server_Mac_x64, server_Mac_arm64(not supported), server_Linux_x64_lite(not supported) community client: client_Linux_x64, client_Linux_arm64, client_Windows_x64, client_Mac_x64, client_Mac_arm64(not supported), client_Linux_x64_lite(not supported)'
|
||||
)
|
||||
}
|
||||
environment{
|
||||
WORK_DIR = "/var/lib/jenkins/workspace"
|
||||
TDINTERNAL_ROOT_DIR = '/var/lib/jenkins/workspace/TDinternal'
|
||||
TDENGINE_ROOT_DIR = '/var/lib/jenkins/workspace/TDinternal/community'
|
||||
BRANCH_NAME = "${smoke_branch}"
|
||||
}
|
||||
stages {
|
||||
stage ('Start Server for Client Test') {
|
||||
when {
|
||||
beforeAgent true
|
||||
expression { mode == 'client' }
|
||||
}
|
||||
agent{label " ubuntu18 "}
|
||||
steps {
|
||||
timeout(time: 30, unit: 'MINUTES'){
|
||||
sync_source("${BRANCH_NAME}")
|
||||
withEnv(['JENKINS_NODE_COOKIE=dontkillme']) {
|
||||
sh '''
|
||||
cd ${TDENGINE_ROOT_DIR}/packaging/smokeTest
|
||||
bash getAndRunInstaller.sh -m ${verMode} -f server -l false -c x64 -v ${version} -o ${baseVersion} -s ${sourcePath} -t tar
|
||||
bash start3NodesServer.sh
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ('Run SmokeTest') {
|
||||
parallel {
|
||||
stage('server_Linux_x64') {
|
||||
when {
|
||||
beforeAgent true
|
||||
allOf {
|
||||
expression { mode == 'server' }
|
||||
expression { runPlatforms.contains('server_Linux_x64') }
|
||||
}
|
||||
}
|
||||
agent{label " ubuntu16 "}
|
||||
steps {
|
||||
timeout(time: 30, unit: 'MINUTES'){
|
||||
sync_source("${BRANCH_NAME}")
|
||||
sh '''
|
||||
mkdir -p /var/www/html/${baseVersion}/${version}/${verMode}/json
|
||||
cd ${TDENGINE_ROOT_DIR}/packaging/smokeTest
|
||||
bash getAndRunInstaller.sh -m ${verMode} -f server -l false -c x64 -v ${version} -o ${baseVersion} -s ${sourcePath} -t tar
|
||||
python3 -m pytest test_server.py -v --html=/var/www/html/${baseVersion}/${version}/${verMode}/${mode}_linux_x64_report.html --json-report --json-report-file=report.json --timeout=300 --verMode=${verMode} --tVersion=${version} --baseVersion=${baseVersion} --sourcePath=${sourcePath} || true
|
||||
cp report.json /var/www/html/${baseVersion}/${version}/${verMode}/json/${mode}_linux_x64_report.json
|
||||
curl "http://192.168.0.176/api/addSmoke?version=${version}&tag=${baseVersion}&type=${verMode}&role=server&build=linux_x64"
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('server_Linux_arm64') {
|
||||
when {
|
||||
beforeAgent true
|
||||
allOf {
|
||||
expression { mode == 'server' }
|
||||
expression { runPlatforms.contains('server_Linux_arm64') }
|
||||
}
|
||||
}
|
||||
agent{label "worker06_arm64"}
|
||||
steps {
|
||||
timeout(time: 60, unit: 'MINUTES'){
|
||||
sync_source("${BRANCH_NAME}")
|
||||
sh '''
|
||||
cd ${TDENGINE_ROOT_DIR}/packaging/smokeTest
|
||||
bash getAndRunInstaller.sh -m ${verMode} -f server -l false -c arm64 -v ${version} -o ${baseVersion} -s ${sourcePath} -t tar
|
||||
python3 -m pytest test_server.py -v --html=${mode}_linux_arm64_report.html --json-report --json-report-file=report.json --timeout=600 --verMode=${verMode} --tVersion=${version} --baseVersion=${baseVersion} --sourcePath=${sourcePath} || true
|
||||
scp ${mode}_linux_arm64_report.html root@192.168.0.21:/var/www/html/${baseVersion}/${version}/${verMode}/
|
||||
scp report.json root@192.168.0.21:/var/www/html/${baseVersion}/${version}/${verMode}/json/${mode}_linux_arm64_report.json
|
||||
curl "http://192.168.0.176/api/addSmoke?version=${version}&tag=${baseVersion}&type=${verMode}&role=server&build=linux_arm64"
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ('server_Mac_x64') {
|
||||
when {
|
||||
beforeAgent true
|
||||
allOf {
|
||||
expression { mode == 'server' }
|
||||
expression { runPlatforms.contains('server_Mac_x64') }
|
||||
}
|
||||
}
|
||||
agent{label " release_Darwin_x64 "}
|
||||
environment{
|
||||
WORK_DIR = "/Users/zwen/jenkins/workspace"
|
||||
TDINTERNAL_ROOT_DIR = '/Users/zwen/jenkins/workspace/TDinternal'
|
||||
TDENGINE_ROOT_DIR = '/Users/zwen/jenkins/workspace/TDinternal/community'
|
||||
}
|
||||
steps {
|
||||
timeout(time: 30, unit: 'MINUTES'){
|
||||
sync_source("${BRANCH_NAME}")
|
||||
sh '''
|
||||
cd ${TDENGINE_ROOT_DIR}/packaging/smokeTest
|
||||
bash getAndRunInstaller.sh -m ${verMode} -f server -l false -c x64 -v ${version} -o ${baseVersion} -s ${sourcePath} -t pkg
|
||||
python3 -m pytest -v -k linux --html=${mode}_Mac_x64_report.html --json-report --json-report-file=report.json --timeout=300 --verMode=${verMode} --tVersion=${version} --baseVersion=${baseVersion} --sourcePath=${sourcePath} || true
|
||||
scp ${mode}_Mac_x64_report.html root@192.168.0.21:/var/www/html/${baseVersion}/${version}/${verMode}/
|
||||
scp report.json root@192.168.0.21:/var/www/html/${baseVersion}/${version}/${verMode}/json/${mode}_Mac_x64_report.json
|
||||
curl "http://192.168.0.176/api/addSmoke?version=${version}&tag=${baseVersion}&type=${verMode}&role=server&build=Mac_x64"
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ('server_Mac_arm64') {
|
||||
when {
|
||||
beforeAgent true
|
||||
allOf {
|
||||
expression { mode == 'server' }
|
||||
expression { runPlatforms.contains('server_Mac_arm64') }
|
||||
}
|
||||
}
|
||||
agent{label " release_Darwin_arm64 "}
|
||||
environment{
|
||||
WORK_DIR = "/Users/zwen/jenkins/workspace"
|
||||
TDINTERNAL_ROOT_DIR = '/Users/zwen/jenkins/workspace/TDinternal'
|
||||
TDENGINE_ROOT_DIR = '/Users/zwen/jenkins/workspace/TDinternal/community'
|
||||
}
|
||||
steps {
|
||||
timeout(time: 30, unit: 'MINUTES'){
|
||||
sync_source("${BRANCH_NAME}")
|
||||
sh '''
|
||||
cd ${TDENGINE_ROOT_DIR}/packaging/smokeTest
|
||||
bash getAndRunInstaller.sh -m ${verMode} -f server -l false -c arm64 -v ${version} -o ${baseVersion} -s ${sourcePath} -t pkg
|
||||
python3 -m pytest -v -k linux --html=${mode}_Mac_arm64_report.html --json-report --json-report-file=report.json --timeout=300 --verMode=${verMode} --tVersion=${version} --baseVersion=${baseVersion} --sourcePath=${sourcePath} || true
|
||||
scp ${mode}_Mac_arm64_report.html root@192.168.0.21:/var/www/html/${baseVersion}/${version}/${verMode}/
|
||||
scp report.json root@192.168.0.21:/var/www/html/${baseVersion}/${version}/${verMode}/json/${mode}_Mac_arm64_report.json
|
||||
curl "http://192.168.0.176/api/addSmoke?version=${version}&tag=${baseVersion}&type=${verMode}&role=server&build=Mac_arm64"
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('server_Windows_x64') {
|
||||
when {
|
||||
beforeAgent true
|
||||
allOf {
|
||||
expression { mode == 'server' }
|
||||
expression { runPlatforms.contains('server_Windows_x64') }
|
||||
}
|
||||
}
|
||||
agent{label " windows11 "}
|
||||
environment{
|
||||
WIN_WORK_DIR="C:\\workspace"
|
||||
WIN_TDINTERNAL_ROOT_DIR="C:\\workspace\\TDinternal"
|
||||
WIN_TDENGINE_ROOT_DIR="C:\\workspace\\TDinternal\\community"
|
||||
}
|
||||
steps {
|
||||
timeout(time: 30, unit: 'MINUTES'){
|
||||
sync_source_win()
|
||||
bat '''
|
||||
cd %WIN_TDENGINE_ROOT_DIR%\\packaging\\smokeTest
|
||||
call getAndRunInstaller.bat %baseVersion% %version% %verMode% server
|
||||
cd %WIN_TDENGINE_ROOT_DIR%\\packaging\\smokeTest
|
||||
pip3 install -r pytest_require.txt
|
||||
python3 -m pytest test_server.py -v --html=%mode%_Windows_x64_report.html --json-report --json-report-file=report.json --timeout=300 --verMode=%verMode% --tVersion=%version% --baseVersion=%baseVersion% --sourcePath=%sourcePath%
|
||||
scp %mode%_Windows_x64_report.html root@192.168.0.21:/var/www/html/%baseVersion%/%version%/%verMode%/
|
||||
scp report.json root@192.168.0.21:/var/www/html/%baseVersion%/%version%/%verMode%/json/%mode%_Windows_x64_report.json
|
||||
curl "http://192.168.0.176/api/addSmoke?version=%version%&tag=%baseVersion%&type=%verMode%&role=server&build=Windows_x64"
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('client_Linux_x64') {
|
||||
when {
|
||||
beforeAgent true
|
||||
allOf {
|
||||
expression { mode == 'client' }
|
||||
expression { runPlatforms.contains('client_Linux_x64') }
|
||||
}
|
||||
}
|
||||
agent{label " ubuntu16 "}
|
||||
steps {
|
||||
timeout(time: 30, unit: 'MINUTES'){
|
||||
sync_source("${BRANCH_NAME}")
|
||||
sh '''
|
||||
mkdir -p /var/www/html/${baseVersion}/${version}/${verMode}/json
|
||||
cd ${TDENGINE_ROOT_DIR}/packaging/smokeTest
|
||||
bash getAndRunInstaller.sh -m ${verMode} -f client -l false -c x64 -v ${version} -o ${baseVersion} -s ${sourcePath} -t tar
|
||||
python3 -m pytest test_client.py -v --html=/var/www/html/${baseVersion}/${version}/${verMode}/${mode}_linux_x64_report.html --json-report --json-report-file=report.json --timeout=300 --verMode=${verMode} --tVersion=${version} --baseVersion=${baseVersion} --sourcePath=${sourcePath} || true
|
||||
cp report.json /var/www/html/${baseVersion}/${version}/${verMode}/json/${mode}_linux_x64_report.json
|
||||
curl "http://192.168.0.176/api/addSmoke?version=${version}&tag=${baseVersion}&type=${verMode}&role=client&build=linux_x64"
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('client_Linux_arm64') {
|
||||
when {
|
||||
beforeAgent true
|
||||
allOf {
|
||||
expression { mode == 'client' }
|
||||
expression { runPlatforms.contains('client_Linux_arm64') }
|
||||
}
|
||||
}
|
||||
agent{label " worker06_arm64 "}
|
||||
steps {
|
||||
timeout(time: 30, unit: 'MINUTES'){
|
||||
sync_source("${BRANCH_NAME}")
|
||||
sh '''
|
||||
cd ${TDENGINE_ROOT_DIR}/packaging/smokeTest
|
||||
bash getAndRunInstaller.sh -m ${verMode} -f client -l false -c arm64 -v ${version} -o ${baseVersion} -s ${sourcePath} -t tar
|
||||
python3 -m pytest test_client.py -v --html=${mode}_linux_arm64_report.html --json-report --json-report-file=report.json --timeout=300 --verMode=${verMode} --tVersion=${version} --baseVersion=${baseVersion} --sourcePath=${sourcePath} || true
|
||||
scp ${mode}_linux_arm64_report.html root@192.168.0.21:/var/www/html/${baseVersion}/${version}/${verMode}/
|
||||
scp report.json root@192.168.0.21:/var/www/html/${baseVersion}/${version}/${verMode}/json/${mode}_linux_arm64_report.json
|
||||
curl "http://192.168.0.176/api/addSmoke?version=${version}&tag=${baseVersion}&type=${verMode}&role=client&build=linux_arm64"
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ('client_Mac_x64') {
|
||||
when {
|
||||
beforeAgent true
|
||||
allOf {
|
||||
expression { mode == 'client' }
|
||||
expression { runPlatforms.contains('client_Mac_x64') }
|
||||
}
|
||||
}
|
||||
agent{label " release_Darwin_x64 "}
|
||||
environment{
|
||||
WORK_DIR = "/Users/zwen/jenkins/workspace"
|
||||
TDINTERNAL_ROOT_DIR = '/Users/zwen/jenkins/workspace/TDinternal'
|
||||
TDENGINE_ROOT_DIR = '/Users/zwen/jenkins/workspace/TDinternal/community'
|
||||
}
|
||||
steps {
|
||||
timeout(time: 30, unit: 'MINUTES'){
|
||||
sync_source("${BRANCH_NAME}")
|
||||
sh '''
|
||||
cd ${TDENGINE_ROOT_DIR}/packaging/smokeTest
|
||||
bash getAndRunInstaller.sh -m ${verMode} -f client -l false -c x64 -v ${version} -o ${baseVersion} -s ${sourcePath} -t pkg
|
||||
rm -rf /opt/taos/main/TDinternal/debug/* || true
|
||||
python3 -m pytest test_client.py -v --html=${mode}_Mac_x64_report.html --json-report --json-report-file=report.json --timeout=300 --verMode=${verMode} --tVersion=${version} --baseVersion=${baseVersion} --sourcePath=${sourcePath} || true
|
||||
scp ${mode}_Mac_x64_report.html root@192.168.0.21:/var/www/html/${baseVersion}/${version}/${verMode}/
|
||||
scp report.json root@192.168.0.21:/var/www/html/${baseVersion}/${version}/${verMode}/json/${mode}_Mac_x64_report.json
|
||||
curl "http://192.168.0.176/api/addSmoke?version=${version}&tag=${baseVersion}&type=${verMode}&role=client&build=Mac_x64"
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ('client_Mac_arm64') {
|
||||
when {
|
||||
beforeAgent true
|
||||
allOf {
|
||||
expression { mode == 'client' }
|
||||
expression { runPlatforms.contains('client_Mac_arm64') }
|
||||
}
|
||||
}
|
||||
agent{label " release_Darwin_arm64 "}
|
||||
environment{
|
||||
WORK_DIR = "/Users/zwen/jenkins/workspace"
|
||||
TDINTERNAL_ROOT_DIR = '/Users/zwen/jenkins/workspace/TDinternal'
|
||||
TDENGINE_ROOT_DIR = '/Users/zwen/jenkins/workspace/TDinternal/community'
|
||||
}
|
||||
steps {
|
||||
timeout(time: 30, unit: 'MINUTES'){
|
||||
sync_source("${BRANCH_NAME}")
|
||||
sh '''
|
||||
cd ${TDENGINE_ROOT_DIR}/packaging/smokeTest
|
||||
bash getAndRunInstaller.sh -m ${verMode} -f client -l false -c arm64 -v ${version} -o ${baseVersion} -s ${sourcePath} -t pkg
|
||||
rm -rf /opt/taos/main/TDinternal/debug/* || true
|
||||
python3 -m pytest test_client.py -v --html=${mode}_Mac_arm64_report.html --json-report --json-report-file=report.json --timeout=300 --verMode=${verMode} --tVersion=${version} --baseVersion=${baseVersion} --sourcePath=${sourcePath} || true
|
||||
scp ${mode}_Mac_arm64_report.html root@192.168.0.21:/var/www/html/${baseVersion}/${version}/${verMode}/
|
||||
scp report.json root@192.168.0.21:/var/www/html/${baseVersion}/${version}/${verMode}/json/${mode}_Mac_arm64_report.json
|
||||
curl "http://192.168.0.176/api/addSmoke?version=${version}&tag=${baseVersion}&type=${verMode}&role=client&build=Mac_arm64"
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('client_Windows_x64') {
|
||||
when {
|
||||
beforeAgent true
|
||||
allOf {
|
||||
expression { mode == 'client' }
|
||||
expression { runPlatforms.contains('client_Windows_x64') }
|
||||
}
|
||||
}
|
||||
agent{label " windows71 "}
|
||||
environment{
|
||||
WIN_WORK_DIR="C:\\workspace"
|
||||
WIN_TDINTERNAL_ROOT_DIR="C:\\workspace\\TDinternal"
|
||||
WIN_TDENGINE_ROOT_DIR="C:\\workspace\\TDinternal\\community"
|
||||
}
|
||||
steps {
|
||||
timeout(time: 30, unit: 'MINUTES'){
|
||||
sync_source_win()
|
||||
bat '''
|
||||
cd %WIN_TDENGINE_ROOT_DIR%\\packaging\\smokeTest
|
||||
call getAndRunInstaller.bat %baseVersion% %version% %verMode% client
|
||||
pip3 install -r pytest_require.txt
|
||||
python3 -m pytest test_client.py -v --html=%mode%_Windows_x64_report.html --json-report --json-report-file=report.json --timeout=300 --verMode=%verMode% --tVersion=%version% --baseVersion=%baseVersion% --sourcePath=%sourcePath%
|
||||
scp %mode%_Windows_x64_report.html root@192.168.0.21:/var/www/html/%baseVersion%/%version%/%verMode%/
|
||||
scp report.json root@192.168.0.21:/var/www/html/%baseVersion%/%version%/%verMode%/json/%mode%_Windows_x64_report.json
|
||||
curl "http://192.168.0.176/api/addSmoke?version=%version%&tag=%baseVersion%&type=%verMode%&role=client&build=Windows_x64"
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
#!/bin/bash
|
||||
BUILD_ID=dontKillMe
|
||||
|
||||
#******This script setup 3 nodes env for remote client installer test. Only for Linux *********
|
||||
|
||||
pwd=`pwd`
|
||||
hostname=`hostname`
|
||||
if [ -z $JENKINS_HOME ]; then
|
||||
workdir="${pwd}/cluster"
|
||||
echo $workdir
|
||||
else
|
||||
workdir="${JENKINS_HOME}/workspace/cluster"
|
||||
echo $workdir
|
||||
fi
|
||||
|
||||
name="taos"
|
||||
if command -v prodb ;then
|
||||
name="prodb"
|
||||
fi
|
||||
|
||||
# Stop all taosd processes
|
||||
for(( i=0; i<3; i++))
|
||||
do
|
||||
pid=$(ps -ef | grep ${name}d | grep -v grep | awk '{print $2}')
|
||||
if [ -n "$pid" ]; then
|
||||
${csudo}kill -9 $pid || :
|
||||
fi
|
||||
done
|
||||
|
||||
# Init 3 dnodes workdir and config file
|
||||
rm -rf ${workdir}
|
||||
mkdir ${workdir}
|
||||
mkdir ${workdir}/output
|
||||
mkdir ${workdir}/dnode1
|
||||
mkdir ${workdir}/dnode1/data
|
||||
mkdir ${workdir}/dnode1/log
|
||||
mkdir ${workdir}/dnode1/cfg
|
||||
touch ${workdir}/dnode1/cfg/${name}.cfg
|
||||
echo -e "firstEp ${hostname}:6031\nsecondEp ${hostname}:6032\nfqdn ${hostname}\nserverPort 6031\nlogDir ${workdir}/dnode1/log\ndataDir ${workdir}/dnode1/data\n" >> ${workdir}/dnode1/cfg/${name}.cfg
|
||||
|
||||
# Start first node
|
||||
nohup ${name}d -c ${workdir}/dnode1/cfg/${name}.cfg & > /dev/null
|
||||
sleep 5
|
||||
|
||||
${name} -P 6031 -s "CREATE DNODE \`${hostname}:6032\`;CREATE DNODE \`${hostname}:6033\`"
|
||||
|
||||
mkdir ${workdir}/dnode2
|
||||
mkdir ${workdir}/dnode2/data
|
||||
mkdir ${workdir}/dnode2/log
|
||||
mkdir ${workdir}/dnode2/cfg
|
||||
touch ${workdir}/dnode2/cfg/${name}.cfg
|
||||
echo -e "firstEp ${hostname}:6031\nsecondEp ${hostname}:6032\nfqdn ${hostname}\nserverPort 6032\nlogDir ${workdir}/dnode2/log\ndataDir ${workdir}/dnode2/data\n" >> ${workdir}/dnode2/cfg/${name}.cfg
|
||||
|
||||
nohup ${name}d -c ${workdir}/dnode2/cfg/${name}.cfg & > /dev/null
|
||||
sleep 5
|
||||
|
||||
mkdir ${workdir}/dnode3
|
||||
mkdir ${workdir}/dnode3/data
|
||||
mkdir ${workdir}/dnode3/log
|
||||
mkdir ${workdir}/dnode3/cfg
|
||||
touch ${workdir}/dnode3/cfg/${name}.cfg
|
||||
echo -e "firstEp ${hostname}:6031\nsecondEp ${hostname}:6032\nfqdn ${hostname}\nserverPort 6033\nlogDir ${workdir}/dnode3/log\ndataDir ${workdir}/dnode3/data\n" >> ${workdir}/dnode3/cfg/${name}.cfg
|
||||
|
||||
nohup ${name}d -c ${workdir}/dnode3/cfg/${name}.cfg & > /dev/null
|
||||
sleep 5
|
||||
|
||||
${name} -P 6031 -s "CREATE MNODE ON DNODE 2;CREATE MNODE ON DNODE 3;"
|
|
@ -0,0 +1,137 @@
|
|||
import pytest
|
||||
import subprocess
|
||||
import os
|
||||
import sys
|
||||
import platform
|
||||
import getopt
|
||||
import re
|
||||
import time
|
||||
import taos
|
||||
from versionCheckAndUninstallforPytest import UninstallTaos
|
||||
|
||||
# python3 smokeTestClient.py -h 192.168.0.22 -P 6031 -v ${version} -u
|
||||
|
||||
OEM = ["ProDB"]
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def get_config(request):
|
||||
verMode = request.config.getoption("--verMode")
|
||||
taosVersion = request.config.getoption("--tVersion")
|
||||
baseVersion = request.config.getoption("--baseVersion")
|
||||
sourcePath = request.config.getoption("--sourcePath")
|
||||
config = {
|
||||
"verMode": verMode,
|
||||
"taosVersion": taosVersion,
|
||||
"baseVersion": baseVersion,
|
||||
"sourcePath": sourcePath,
|
||||
"system": platform.system(),
|
||||
"arch": platform.machine(),
|
||||
"serverHost": "192.168.0.22",
|
||||
"serverPort": 6031,
|
||||
"databaseName": re.sub(r'[^a-zA-Z0-9]', '', subprocess.getoutput("hostname")).lower()
|
||||
}
|
||||
return config
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def setup_module(get_config):
|
||||
config = get_config
|
||||
# install taospy
|
||||
if config["system"] == 'Windows':
|
||||
taospy_version = subprocess.getoutput("pip3 show taospy|findstr Version")
|
||||
else:
|
||||
taospy_version = subprocess.getoutput("pip3 show taospy|grep Version| awk -F ':' '{print $2}' ")
|
||||
|
||||
print("taospy version %s " % taospy_version)
|
||||
if taospy_version == "":
|
||||
subprocess.getoutput("pip3 install git+https://github.com/taosdata/taos-connector-python.git")
|
||||
print("install taos python connector")
|
||||
else:
|
||||
subprocess.getoutput("pip3 install taospy")
|
||||
|
||||
|
||||
def get_connect(host, port, database=None):
|
||||
conn = taos.connect(host=host,
|
||||
user="root",
|
||||
password="taosdata",
|
||||
database=database,
|
||||
port=port,
|
||||
timezone="Asia/Shanghai") # default your host's timezone
|
||||
return conn
|
||||
|
||||
|
||||
def run_cmd(command):
|
||||
print("CMD: %s" % command)
|
||||
result = subprocess.run(command, capture_output=True, text=True, shell=True)
|
||||
print("STDOUT:", result.stdout)
|
||||
print("STDERR:", result.stderr)
|
||||
print("Return Code:", result.returncode)
|
||||
assert result.returncode == 0
|
||||
return result
|
||||
|
||||
|
||||
class TestClient:
|
||||
@pytest.mark.all
|
||||
def test_basic(self, get_config, setup_module):
|
||||
config = get_config
|
||||
name = "taos"
|
||||
|
||||
if config["baseVersion"] in OEM:
|
||||
name = config["baseVersion"].lower()
|
||||
if config["baseVersion"] in OEM and config["system"] == 'Windows':
|
||||
cmd = f'{name} -s "create database {config["databaseName"]};" -h {config["serverHost"]} -P {config["serverPort"]}'
|
||||
run_cmd(cmd)
|
||||
cmd = f'{name} -s "CREATE STABLE {config["databaseName"]}.meters (`ts` TIMESTAMP,`current` FLOAT, `phase` FLOAT) TAGS (`groupid` INT, `location` VARCHAR(24));" -h {config["serverHost"]} -P {config["serverPort"]}'
|
||||
run_cmd(cmd)
|
||||
else:
|
||||
cmd = f'{name}Benchmark -y -a 3 -n 100 -t 100 -d {config["databaseName"]} -h {config["serverHost"]} -P {config["serverPort"]} &'
|
||||
run_cmd(cmd)
|
||||
# os.system("taosBenchmark -y -a 3 -n 100 -t 100 -d %s -h %s -P %d" % (databaseName, serverHost, serverPort))
|
||||
time.sleep(5)
|
||||
conn = get_connect(config["serverHost"], config["serverPort"], config["databaseName"])
|
||||
sql = "SELECT count(*) from meters"
|
||||
result: taos.TaosResult = conn.query(sql)
|
||||
data = result.fetch_all()
|
||||
print("SQL: %s" % sql)
|
||||
print("Result: %s" % data)
|
||||
if config["system"] == 'Windows' and config["baseVersion"] in OEM:
|
||||
pass
|
||||
elif data[0][0] != 10000:
|
||||
raise f"{name}Benchmark work not as expected "
|
||||
# drop database of test
|
||||
cmd = f'{name} -s "drop database {config["databaseName"]};" -h {config["serverHost"]} -P {config["serverPort"]}'
|
||||
result = run_cmd(cmd)
|
||||
assert "Drop OK" in result.stdout
|
||||
conn.close()
|
||||
|
||||
@pytest.mark.all
|
||||
def test_version(self, get_config, setup_module):
|
||||
config = get_config
|
||||
conn = get_connect(config["serverHost"], config["serverPort"])
|
||||
server_version = conn.server_info
|
||||
print("server_version: ", server_version)
|
||||
client_version = conn.client_info
|
||||
print("client_version: ", client_version)
|
||||
name = "taos"
|
||||
if config["baseVersion"] in OEM:
|
||||
name = config["baseVersion"].lower()
|
||||
if config["system"] == "Windows":
|
||||
taos_V_output = subprocess.getoutput(f"{name} -V | findstr version")
|
||||
else:
|
||||
taos_V_output = subprocess.getoutput(f"{name} -V | grep version")
|
||||
assert config["taosVersion"] in taos_V_output
|
||||
assert config["taosVersion"] in client_version
|
||||
if config["taosVersion"] not in server_version:
|
||||
print("warning: client version is not same as server version")
|
||||
conn.close()
|
||||
|
||||
@pytest.mark.all
|
||||
def test_uninstall(self, get_config, setup_module):
|
||||
config = get_config
|
||||
name = "taos"
|
||||
if config["baseVersion"] in OEM:
|
||||
name = config["baseVersion"].lower()
|
||||
subprocess.getoutput("rm /usr/local/bin/taos")
|
||||
subprocess.getoutput("pkill taosd")
|
||||
UninstallTaos(config["taosVersion"], config["verMode"], True, name)
|
|
@ -0,0 +1,238 @@
|
|||
import pytest
|
||||
import subprocess
|
||||
import os
|
||||
from versionCheckAndUninstallforPytest import UninstallTaos
|
||||
import platform
|
||||
import re
|
||||
import time
|
||||
import signal
|
||||
|
||||
system = platform.system()
|
||||
current_path = os.path.abspath(os.path.dirname(__file__))
|
||||
if system == 'Windows':
|
||||
with open(r"%s\test_server_windows_case" % current_path) as f:
|
||||
cases = f.read().splitlines()
|
||||
else:
|
||||
with open("%s/test_server_unix_case" % current_path) as f:
|
||||
cases = f.read().splitlines()
|
||||
|
||||
OEM = ["ProDB"]
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def get_config(request):
|
||||
verMode = request.config.getoption("--verMode")
|
||||
taosVersion = request.config.getoption("--tVersion")
|
||||
baseVersion = request.config.getoption("--baseVersion")
|
||||
sourcePath = request.config.getoption("--sourcePath")
|
||||
config = {
|
||||
"verMode": verMode,
|
||||
"taosVersion": taosVersion,
|
||||
"baseVersion": baseVersion,
|
||||
"sourcePath": sourcePath,
|
||||
"system": platform.system(),
|
||||
"arch": platform.machine()
|
||||
}
|
||||
return config
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def setup_module(get_config):
|
||||
def run_cmd(command):
|
||||
print("CMD:", command)
|
||||
result = subprocess.run(command, capture_output=True, text=False, shell=False)
|
||||
print("STDOUT:", result.stdout)
|
||||
print("STDERR:", result.stderr)
|
||||
print("Return Code:", result.returncode)
|
||||
assert result.returncode == 0
|
||||
return result
|
||||
|
||||
# setup before module tests
|
||||
config = get_config
|
||||
# bash getAndRunInstaller.sh -m ${verMode} -f server -l false -c x64 -v ${version} -o ${baseVersion} -s ${sourcePath} -t tar
|
||||
# t = "tar"
|
||||
# if config["system"] == "Darwin":
|
||||
# t = "pkg"
|
||||
# cmd = "bash getAndRunInstaller.sh -m %s -f server -l false -c x64 -v %s -o %s -s %s -t %s" % (
|
||||
# config["verMode"], config["taosVersion"], config["baseVersion"], config["sourcePath"], t)
|
||||
# run_cmd(cmd)
|
||||
if config["system"] == "Windows":
|
||||
cmd = r"mkdir ..\..\debug\build\bin"
|
||||
else:
|
||||
cmd = "mkdir -p ../../debug/build/bin/"
|
||||
subprocess.getoutput(cmd)
|
||||
if config["system"] == "Linux": # add tmq_sim
|
||||
cmd = "cp -rf ../../../debug/build/bin/tmq_sim ../../debug/build/bin/."
|
||||
subprocess.getoutput(cmd)
|
||||
if config["system"] == "Darwin":
|
||||
cmd = "sudo cp -rf /usr/local/bin/taos* ../../debug/build/bin/"
|
||||
elif config["system"] == "Windows":
|
||||
cmd = r"xcopy C:\TDengine\taos*.exe ..\..\debug\build\bin /Y"
|
||||
else:
|
||||
if config["baseVersion"] in OEM:
|
||||
cmd = '''sudo find /usr/bin -name 'prodb*' -exec sh -c 'for file; do cp "$file" "../../debug/build/bin/taos${file##/usr/bin/%s}"; done' sh {} +''' % (
|
||||
config["baseVersion"].lower())
|
||||
else:
|
||||
cmd = "sudo cp /usr/bin/taos* ../../debug/build/bin/"
|
||||
run_cmd(cmd)
|
||||
if config["baseVersion"] in OEM: # mock OEM
|
||||
cmd = "sed -i 's/taos.cfg/%s.cfg/g' ../../tests/pytest/util/dnodes.py" % config["baseVersion"].lower()
|
||||
run_cmd(cmd)
|
||||
cmd = "sed -i 's/taosdlog.0/%sdlog.0/g' ../../tests/pytest/util/dnodes.py" % config["baseVersion"].lower()
|
||||
run_cmd(cmd)
|
||||
cmd = "sed -i 's/taos.cfg/%s.cfg/g' ../../tests/army/frame/server/dnode.py" % config["baseVersion"].lower()
|
||||
run_cmd(cmd)
|
||||
cmd = "sed -i 's/taosdlog.0/%sdlog.0/g' ../../tests/army/frame/server/dnode.py" % config["baseVersion"].lower()
|
||||
run_cmd(cmd)
|
||||
cmd = "ln -s /usr/bin/prodb /usr/local/bin/taos"
|
||||
subprocess.getoutput(cmd)
|
||||
|
||||
# yield
|
||||
#
|
||||
# name = "taos"
|
||||
# if config["baseVersion"] in OEM:
|
||||
# name = config["baseVersion"].lower()
|
||||
# subprocess.getoutput("rm /usr/local/bin/taos")
|
||||
# subprocess.getoutput("pkill taosd")
|
||||
# UninstallTaos(config["taosVersion"], config["verMode"], True, name)
|
||||
|
||||
|
||||
# use pytest fixture to exec case
|
||||
@pytest.fixture(params=cases)
|
||||
def run_command(request):
|
||||
commands = request.param
|
||||
if commands.strip().startswith("#"):
|
||||
pytest.skip("This case has been marked as skipped")
|
||||
d, command = commands.strip().split(",")
|
||||
if system == "Windows":
|
||||
cmd = r"cd %s\..\..\tests\%s && %s" % (current_path, d, command)
|
||||
else:
|
||||
cmd = "cd %s/../../tests/%s&&sudo %s" % (current_path, d, command)
|
||||
print(cmd)
|
||||
result = subprocess.run(cmd, capture_output=True, text=True, shell=True)
|
||||
return {
|
||||
"command": command,
|
||||
"stdout": result.stdout,
|
||||
"stderr": result.stderr,
|
||||
"returncode": result.returncode
|
||||
}
|
||||
|
||||
|
||||
class TestServer:
|
||||
@pytest.mark.all
|
||||
def test_taosd_up(self, setup_module):
|
||||
# start process
|
||||
if system == 'Windows':
|
||||
subprocess.getoutput("taskkill /IM taosd.exe /F")
|
||||
cmd = "..\\..\\debug\\build\\bin\\taosd.exe"
|
||||
else:
|
||||
subprocess.getoutput("pkill taosd")
|
||||
cmd = "../../debug/build/bin/taosd"
|
||||
process = subprocess.Popen(
|
||||
[cmd],
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
text=True
|
||||
)
|
||||
# monitor output
|
||||
while True:
|
||||
line = process.stdout.readline()
|
||||
if line:
|
||||
print(line.strip())
|
||||
if "succeed to write dnode" in line:
|
||||
time.sleep(15)
|
||||
# 发送终止信号
|
||||
os.kill(process.pid, signal.SIGTERM)
|
||||
break
|
||||
|
||||
@pytest.mark.all
|
||||
def test_execute_cases(self, setup_module, run_command):
|
||||
# assert the result
|
||||
if run_command['returncode'] != 0:
|
||||
print(f"Running command: {run_command['command']}")
|
||||
print("STDOUT:", run_command['stdout'])
|
||||
print("STDERR:", run_command['stderr'])
|
||||
print("Return Code:", run_command['returncode'])
|
||||
else:
|
||||
print(f"Running command: {run_command['command']}")
|
||||
if len(run_command['stdout']) > 1000:
|
||||
print("STDOUT:", run_command['stdout'][:1000] + "...")
|
||||
else:
|
||||
print("STDOUT:", run_command['stdout'])
|
||||
print("STDERR:", run_command['stderr'])
|
||||
print("Return Code:", run_command['returncode'])
|
||||
|
||||
assert run_command[
|
||||
'returncode'] == 0, f"Command '{run_command['command']}' failed with return code {run_command['returncode']}"
|
||||
|
||||
@pytest.mark.all
|
||||
@pytest.mark.check_version
|
||||
def test_check_version(self, get_config, setup_module):
|
||||
config = get_config
|
||||
databaseName = re.sub(r'[^a-zA-Z0-9]', '', subprocess.getoutput("hostname")).lower()
|
||||
# install taospy
|
||||
taospy_version = ""
|
||||
system = config["system"]
|
||||
version = config["taosVersion"]
|
||||
verMode = config["verMode"]
|
||||
if system == 'Windows':
|
||||
taospy_version = subprocess.getoutput("pip3 show taospy|findstr Version")
|
||||
else:
|
||||
taospy_version = subprocess.getoutput("pip3 show taospy|grep Version| awk -F ':' '{print $2}' ")
|
||||
|
||||
print("taospy version %s " % taospy_version)
|
||||
if taospy_version == "":
|
||||
subprocess.getoutput("pip3 install git+https://github.com/taosdata/taos-connector-python.git")
|
||||
print("install taos python connector")
|
||||
else:
|
||||
subprocess.getoutput("pip3 install taospy")
|
||||
|
||||
# start taosd server
|
||||
if system == 'Windows':
|
||||
cmd = ["C:\\TDengine\\start-all.bat"]
|
||||
# elif system == 'Linux':
|
||||
# cmd = "systemctl start taosd".split(' ')
|
||||
else:
|
||||
# cmd = "sudo launchctl start com.tdengine.taosd".split(' ')
|
||||
cmd = "start-all.sh"
|
||||
process_out = subprocess.Popen(cmd,
|
||||
stdin=subprocess.PIPE, stdout=subprocess.PIPE, text=True)
|
||||
print(cmd)
|
||||
time.sleep(5)
|
||||
|
||||
import taos
|
||||
conn = taos.connect()
|
||||
check_list = {}
|
||||
check_list["server_version"] = conn.server_info
|
||||
check_list["client_version"] = conn.client_info
|
||||
# Execute sql get version info
|
||||
result: taos.TaosResult = conn.query("SELECT server_version()")
|
||||
check_list["select_server"] = result.fetch_all()[0][0]
|
||||
result: taos.TaosResult = conn.query("SELECT client_version()")
|
||||
check_list["select_client"] = result.fetch_all()[0][0]
|
||||
conn.close()
|
||||
|
||||
binary_files = ["taos", "taosd", "taosadapter", "taoskeeper", "taosBenchmark"]
|
||||
if verMode.lower() == "enterprise":
|
||||
binary_files.append("taosx")
|
||||
if config["baseVersion"] in OEM:
|
||||
binary_files = [i.replace("taos", config["baseVersion"].lower()) for i in binary_files]
|
||||
if system == "Windows":
|
||||
for i in binary_files:
|
||||
check_list[i] = subprocess.getoutput("%s -V | findstr version" % i)
|
||||
else:
|
||||
for i in binary_files:
|
||||
check_list[i] = subprocess.getoutput("%s -V | grep version | awk -F ' ' '{print $3}'" % i)
|
||||
for i in check_list:
|
||||
print("%s version is: %s" % (i, check_list[i]))
|
||||
assert version in check_list[i]
|
||||
|
||||
@pytest.mark.all
|
||||
def test_uninstall(self, get_config, setup_module):
|
||||
config = get_config
|
||||
name = "taos"
|
||||
if config["baseVersion"] in OEM:
|
||||
name = config["baseVersion"].lower()
|
||||
subprocess.getoutput("rm /usr/local/bin/taos")
|
||||
subprocess.getoutput("pkill taosd")
|
||||
UninstallTaos(config["taosVersion"], config["verMode"], True, name)
|
|
@ -0,0 +1,10 @@
|
|||
system-test,python3 ./test.py -f 2-query/join.py
|
||||
system-test,python3 ./test.py -f 1-insert/insert_column_value.py
|
||||
system-test,python3 ./test.py -f 2-query/primary_ts_base_5.py
|
||||
system-test,python3 ./test.py -f 2-query/case_when.py
|
||||
system-test,python3 ./test.py -f 2-query/partition_limit_interval.py
|
||||
system-test,python3 ./test.py -f 2-query/fill.py
|
||||
army,python3 ./test.py -f query/query_basic.py -N 3
|
||||
system-test,python3 ./test.py -f 7-tmq/basic5.py
|
||||
system-test,python3 ./test.py -f 8-stream/stream_basic.py
|
||||
system-test,python3 ./test.py -f 6-cluster/5dnode3mnodeStop.py -N 5 -M 3
|
|
@ -0,0 +1,2 @@
|
|||
system-test,python3 .\test.py -f 0-others\taosShell.py
|
||||
system-test,python3 .\test.py -f 6-cluster\5dnode3mnodeSep1VnodeStopDnodeModifyMeta.py -N 6 -M 3
|
|
@ -0,0 +1,260 @@
|
|||
#!/usr/bin/python
|
||||
###################################################################
|
||||
# Copyright (c) 2016 by TAOS Technologies, Inc.
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is proprietary and confidential to TAOS Technologies.
|
||||
# No part of this file may be reproduced, stored, transmitted,
|
||||
# disclosed or used in any form or by any means other than as
|
||||
# expressly provided by the written permission from Jianhui Tao
|
||||
#
|
||||
###################################################################
|
||||
# install pip
|
||||
# pip install src/connector/python/
|
||||
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys, os
|
||||
import re
|
||||
import platform
|
||||
import getopt
|
||||
import subprocess
|
||||
# from this import d
|
||||
import time
|
||||
|
||||
# input for server
|
||||
|
||||
opts, args = getopt.gnu_getopt(sys.argv[1:], 'v:m:u', ['version=', 'verMode='])
|
||||
serverHost = ""
|
||||
serverPort = 0
|
||||
version = ""
|
||||
uninstall = False
|
||||
verMode = ""
|
||||
for key, value in opts:
|
||||
if key in ['--help']:
|
||||
print('A collection of test cases written using Python')
|
||||
print('-v test client version')
|
||||
print('-u test uninstall process, will uninstall TDengine')
|
||||
sys.exit(0)
|
||||
|
||||
if key in ['-v']:
|
||||
version = value
|
||||
if key in ['-u']:
|
||||
uninstall = True
|
||||
if key in ['-m']:
|
||||
verMode = value
|
||||
if not version:
|
||||
print("No version specified, will not run version check.")
|
||||
|
||||
|
||||
system = platform.system()
|
||||
arch = platform.machine()
|
||||
|
||||
databaseName = re.sub(r'[^a-zA-Z0-9]', '', subprocess.getoutput("hostname")).lower()
|
||||
# install taospy
|
||||
taospy_version = ""
|
||||
if system == 'Windows':
|
||||
taospy_version = subprocess.getoutput("pip3 show taospy|findstr Version")
|
||||
else:
|
||||
taospy_version = subprocess.getoutput("pip3 show taospy|grep Version| awk -F ':' '{print $2}' ")
|
||||
|
||||
print("taospy version %s " % taospy_version)
|
||||
if taospy_version == "":
|
||||
subprocess.getoutput("pip3 install git+https://github.com/taosdata/taos-connector-python.git")
|
||||
print("install taos python connector")
|
||||
else:
|
||||
subprocess.getoutput("pip3 install taospy")
|
||||
|
||||
# start taosd server
|
||||
if system == 'Windows':
|
||||
cmd = ["C:\\TDengine\\start-all.bat"]
|
||||
elif system == 'Linux':
|
||||
cmd = "systemctl start taosd".split(' ')
|
||||
else:
|
||||
cmd = "sudo launchctl start com.tdengine.taosd".split(' ')
|
||||
process_out = subprocess.Popen(cmd,
|
||||
stdin=subprocess.PIPE, stdout=subprocess.PIPE, text=True)
|
||||
print(cmd)
|
||||
time.sleep(5)
|
||||
|
||||
#get taosc version info
|
||||
version_test_result = False
|
||||
if version:
|
||||
import taos
|
||||
conn = taos.connect()
|
||||
server_version = conn.server_info
|
||||
print("server_version", server_version)
|
||||
client_version = conn.client_info
|
||||
print("client_version", client_version)
|
||||
# Execute sql get version info
|
||||
result: taos.TaosResult = conn.query("SELECT server_version()")
|
||||
select_server = result.fetch_all()[0][0]
|
||||
print("SELECT server_version():" + select_server)
|
||||
result: taos.TaosResult = conn.query("SELECT client_version()")
|
||||
select_client = result.fetch_all()[0][0]
|
||||
print("SELECT client_version():" + select_client)
|
||||
conn.close()
|
||||
|
||||
taos_V_output = ""
|
||||
taosd_V_output = ""
|
||||
taosadapter_V_output = ""
|
||||
taoskeeper_V_output = ""
|
||||
taosx_V_output = ""
|
||||
taosB_V_output = ""
|
||||
taosxVersion = False
|
||||
if system == "Windows":
|
||||
taos_V_output = subprocess.getoutput("taos -V | findstr version")
|
||||
taosd_V_output = subprocess.getoutput("taosd -V | findstr version")
|
||||
taosadapter_V_output = subprocess.getoutput("taosadapter -V | findstr version")
|
||||
taoskeeper_V_output = subprocess.getoutput("taoskeeper -V | findstr version")
|
||||
taosB_V_output = subprocess.getoutput("taosBenchmark -V | findstr version")
|
||||
if verMode == "Enterprise":
|
||||
taosx_V_output = subprocess.getoutput("taosx -V | findstr version")
|
||||
else:
|
||||
taos_V_output = subprocess.getoutput("taos -V | grep version | awk -F ' ' '{print $3}'")
|
||||
taosd_V_output = subprocess.getoutput("taosd -V | grep version | awk -F ' ' '{print $3}'")
|
||||
taosadapter_V_output = subprocess.getoutput("taosadapter -V | grep version | awk -F ' ' '{print $3}'")
|
||||
taoskeeper_V_output = subprocess.getoutput("taoskeeper -V | grep version | awk -F ' ' '{print $3}'")
|
||||
taosB_V_output = subprocess.getoutput("taosBenchmark -V | grep version | awk -F ' ' '{print $3}'")
|
||||
if verMode == "Enterprise":
|
||||
taosx_V_output = subprocess.getoutput("taosx -V | grep version | awk -F ' ' '{print $3}'")
|
||||
|
||||
print("taos -V output is: %s" % taos_V_output)
|
||||
print("taosd -V output is: %s" % taosd_V_output)
|
||||
print("taosadapter -V output is: %s" % taosadapter_V_output)
|
||||
print("taoskeeper -V output is: %s" % taoskeeper_V_output)
|
||||
print("taosBenchmark -V output is: %s" % taosB_V_output)
|
||||
if verMode == "Enterprise":
|
||||
print("taosx -V output is: %s" % taosx_V_output)
|
||||
taosxVersion = version in taosx_V_output
|
||||
else:
|
||||
taosxVersion = True
|
||||
if (version in client_version
|
||||
and version in server_version
|
||||
and version in select_server
|
||||
and version in select_client
|
||||
and version in taos_V_output
|
||||
and version in taosd_V_output
|
||||
and version in taosadapter_V_output
|
||||
and version in taoskeeper_V_output
|
||||
and version in taosB_V_output
|
||||
and taosxVersion
|
||||
):
|
||||
version_test_result = True
|
||||
leftFile = False
|
||||
if uninstall:
|
||||
print("Start to run rmtaos")
|
||||
print("Platform: ", system)
|
||||
# stop taosd server
|
||||
if system == 'Windows':
|
||||
cmd = "C:\\TDengine\\stop_all.bat"
|
||||
elif system == 'Linux':
|
||||
cmd = "systemctl stop taosd"
|
||||
else:
|
||||
cmd = "sudo launchctl stop com.tdengine.taosd"
|
||||
process_out = subprocess.getoutput(cmd)
|
||||
print(cmd)
|
||||
time.sleep(10)
|
||||
if system == "Linux":
|
||||
# 创建一个subprocess.Popen对象,并使用stdin和stdout进行交互
|
||||
process = subprocess.Popen(['rmtaos'],
|
||||
stdin=subprocess.PIPE, stdout=subprocess.PIPE, text=True)
|
||||
# 向子进程发送输入
|
||||
process.stdin.write("y\n")
|
||||
process.stdin.flush() # 确保输入被发送到子进程
|
||||
process.stdin.write("I confirm that I would like to delete all data, log and configuration files\n")
|
||||
process.stdin.flush() # 确保输入被发送到子进程
|
||||
# 关闭子进程的stdin,防止它无限期等待更多输入
|
||||
process.stdin.close()
|
||||
# 等待子进程结束
|
||||
process.wait()
|
||||
# 检查目录清除情况
|
||||
out = subprocess.getoutput("ls /etc/systemd/system/taos*")
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/bin/taos*")
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/local/bin/taos*")
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/lib/libtaos*")
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/lib64/libtaos*")
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/include/taos*")
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/local/taos")
|
||||
#print(out)
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files in /usr/local/taos:%s" % out)
|
||||
leftFile = True
|
||||
if not leftFile:
|
||||
print("*******Test Result: uninstall test passed ************")
|
||||
|
||||
elif system == "Darwin":
|
||||
# 创建一个subprocess.Popen对象,并使用stdin和stdout进行交互
|
||||
process = subprocess.Popen(['sudo', 'rmtaos'],
|
||||
stdin=subprocess.PIPE, stdout=subprocess.PIPE, text=True)
|
||||
# 向子进程发送输入
|
||||
process.stdin.write("y\n")
|
||||
process.stdin.flush() # 确保输入被发送到子进程
|
||||
process.stdin.write("I confirm that I would like to delete all data, log and configuration files\n")
|
||||
process.stdin.flush() # 确保输入被发送到子进程
|
||||
# 关闭子进程的stdin,防止它无限期等待更多输入
|
||||
process.stdin.close()
|
||||
# 等待子进程结束
|
||||
process.wait()
|
||||
# 检查目录清除情况
|
||||
out = subprocess.getoutput("ls /usr/local/bin/taos*")
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/local/lib/libtaos*")
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/local/include/taos*")
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
#out = subprocess.getoutput("ls /usr/local/Cellar/tdengine/")
|
||||
#print(out)
|
||||
#if out:
|
||||
# print("Uninstall left some files: /usr/local/Cellar/tdengine/%s" % out)
|
||||
# leftFile = True
|
||||
#if not leftFile:
|
||||
# print("*******Test Result: uninstall test passed ************")
|
||||
|
||||
elif system == "Windows":
|
||||
process = subprocess.Popen(['unins000','/silent'],
|
||||
stdin=subprocess.PIPE, stdout=subprocess.PIPE, text=True)
|
||||
process.wait()
|
||||
time.sleep(10)
|
||||
out = subprocess.getoutput("ls C:\TDengine")
|
||||
print(out)
|
||||
if len(out.split("\n")) > 3:
|
||||
leftFile = True
|
||||
print("Uninstall left some files: %s" % out)
|
||||
|
||||
if version_test_result:
|
||||
print("**********Test Result: version test passed! **********")
|
||||
else:
|
||||
print("!!!!!!!!!!!Test Result: version test failed! !!!!!!!!!!")
|
||||
if not leftFile:
|
||||
print("**********Test Result: uninstall test passed! **********")
|
||||
else:
|
||||
print("!!!!!!!!!!!Test Result: uninstall test failed! !!!!!!!!!!")
|
||||
if version_test_result and not leftFile:
|
||||
sys.exit(0)
|
||||
else:
|
||||
sys.exit(1)
|
||||
|
|
@ -0,0 +1,137 @@
|
|||
#!/usr/bin/python
|
||||
###################################################################
|
||||
# Copyright (c) 2016 by TAOS Technologies, Inc.
|
||||
# All rights reserved.
|
||||
#
|
||||
# This file is proprietary and confidential to TAOS Technologies.
|
||||
# No part of this file may be reproduced, stored, transmitted,
|
||||
# disclosed or used in any form or by any means other than as
|
||||
# expressly provided by the written permission from Jianhui Tao
|
||||
#
|
||||
###################################################################
|
||||
# install pip
|
||||
# pip install src/connector/python/
|
||||
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys, os
|
||||
import re
|
||||
import platform
|
||||
import getopt
|
||||
import subprocess
|
||||
# from this import d
|
||||
import time
|
||||
from lib import run_cmd
|
||||
|
||||
|
||||
# input for server
|
||||
def UninstallTaos(version, verMode, uninstall, name):
|
||||
if not version:
|
||||
raise "No version specified, will not run version check."
|
||||
|
||||
system = platform.system()
|
||||
arch = platform.machine()
|
||||
leftFile = False
|
||||
if uninstall:
|
||||
print("Start to run rm%s" % name)
|
||||
print("Platform: ", system)
|
||||
# stop taosd server
|
||||
if system == 'Windows':
|
||||
cmd = "C:\\TDengine\\stop_all.bat"
|
||||
else:
|
||||
cmd = "stop_all.sh"
|
||||
process_out = subprocess.getoutput(cmd)
|
||||
print(cmd)
|
||||
time.sleep(5)
|
||||
print("start to rm%s" % name)
|
||||
if system == "Linux":
|
||||
# 启动命令
|
||||
process = subprocess.Popen(['rm%s' % name], stdin=subprocess.PIPE, stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE, text=True)
|
||||
|
||||
# 发送交互输入
|
||||
stdout, stderr = process.communicate(
|
||||
input="y\nI confirm that I would like to delete all data, log and configuration files\n")
|
||||
|
||||
# 打印输出(可选)
|
||||
print(stdout)
|
||||
print(stderr)
|
||||
# 检查目录清除情况
|
||||
out = subprocess.getoutput("ls /etc/systemd/system/%s*" % name)
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/bin/%s*" % name)
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/local/bin/%s*" % name)
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/lib/lib%s*" % name)
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/lib64/lib%s*" % name)
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/include/%s*" % name)
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/local/%s" % name)
|
||||
# print(out)
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files in /usr/local/%s:%s" % (name, out))
|
||||
leftFile = True
|
||||
if not leftFile:
|
||||
print("*******Test Result: uninstall test passed ************")
|
||||
|
||||
elif system == "Darwin":
|
||||
# 创建一个subprocess.Popen对象,并使用stdin和stdout进行交互
|
||||
process = subprocess.Popen(['sudo', 'rm%s' % name],
|
||||
stdin=subprocess.PIPE, stdout=subprocess.PIPE, text=True)
|
||||
# 向子进程发送输入
|
||||
process.stdin.write("y\n")
|
||||
process.stdin.flush() # 确保输入被发送到子进程
|
||||
process.stdin.write("I confirm that I would like to delete all data, log and configuration files\n")
|
||||
process.stdin.flush() # 确保输入被发送到子进程
|
||||
# 关闭子进程的stdin,防止它无限期等待更多输入
|
||||
process.stdin.close()
|
||||
# 等待子进程结束
|
||||
process.wait()
|
||||
# 检查目录清除情况
|
||||
out = subprocess.getoutput("ls /usr/local/bin/%s*" % name)
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/local/lib/lib%s*" % name)
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
out = subprocess.getoutput("ls /usr/local/include/%s*" % name)
|
||||
if "No such file or directory" not in out:
|
||||
print("Uninstall left some files: %s" % out)
|
||||
leftFile = True
|
||||
# out = subprocess.getoutput("ls /usr/local/Cellar/tdengine/")
|
||||
# print(out)
|
||||
# if out:
|
||||
# print("Uninstall left some files: /usr/local/Cellar/tdengine/%s" % out)
|
||||
# leftFile = True
|
||||
# if not leftFile:
|
||||
# print("*******Test Result: uninstall test passed ************")
|
||||
|
||||
elif system == "Windows":
|
||||
process = subprocess.Popen(['unins000', '/silent'],
|
||||
stdin=subprocess.PIPE, stdout=subprocess.PIPE, text=True)
|
||||
process.wait()
|
||||
time.sleep(10)
|
||||
for file in ["C:\TDengine\\taos.exe", "C:\TDengine\\unins000.exe", "C:\ProDB\prodb.exe",
|
||||
"C:\ProDB\\unins000.exe"]:
|
||||
if os.path.exists(file):
|
||||
leftFile = True
|
||||
if leftFile:
|
||||
raise "uninstall %s fail, please check" % name
|
||||
else:
|
||||
print("**********Test Result: uninstall test passed! **********")
|
|
@ -691,4 +691,7 @@ if __name__ == "__main__":
|
|||
if asan:
|
||||
# tdDnodes.StopAllSigint()
|
||||
tdLog.info("Address sanitizer mode finished")
|
||||
else:
|
||||
tdDnodes.stopAll()
|
||||
tdLog.info("stop all td process finished")
|
||||
sys.exit(0)
|
||||
|
|
Loading…
Reference in New Issue