提交 d3af8a9d 编写于 作者: wafwerar's avatar wafwerar

[TD-6169]<fix>: windows dll client can not quit.

上级 8e6e736f
...@@ -199,7 +199,9 @@ void taos_init_imp(void) { ...@@ -199,7 +199,9 @@ void taos_init_imp(void) {
// In the APIs of other program language, taos_cleanup is not available yet. // In the APIs of other program language, taos_cleanup is not available yet.
// So, to make sure taos_cleanup will be invoked to clean up the allocated resource to suppress the valgrind warning. // So, to make sure taos_cleanup will be invoked to clean up the allocated resource to suppress the valgrind warning.
#if !defined(TD_WINDOWS)
atexit(taos_cleanup); atexit(taos_cleanup);
#endif
tscDebug("client is initialized successfully"); tscDebug("client is initialized successfully");
} }
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
import ctypes import ctypes
import platform import platform
import sys import sys
import os
from ctypes import * from ctypes import *
try: try:
from typing import Any from typing import Any
...@@ -38,11 +37,7 @@ def _load_taos_darwin(): ...@@ -38,11 +37,7 @@ def _load_taos_darwin():
def _load_taos_windows(): def _load_taos_windows():
if os.path.exists("c:\\Windows\\System32\\taos.dll"): return ctypes.windll.LoadLibrary("taos")
return ctypes.windll.LoadLibrary("taos")
else:
print("Please copy the \"C:\\TDengine\\driver\\taos.dll\" file to the \"C:\\windows\\system32\" directory.")
return ctypes.windll.LoadLibrary("C:\\TDengine\\driver\\taos.dll")
def _load_taos(): def _load_taos():
......
...@@ -368,7 +368,7 @@ int32_t taosFsync(FileFd fd) { ...@@ -368,7 +368,7 @@ int32_t taosFsync(FileFd fd) {
HANDLE h = (HANDLE)_get_osfhandle(fd); HANDLE h = (HANDLE)_get_osfhandle(fd);
return !FlushFileBuffers(h); return FlushFileBuffers(h);
} }
int32_t taosRename(char *oldName, char *newName) { int32_t taosRename(char *oldName, char *newName) {
......
...@@ -537,9 +537,7 @@ void taosCacheCleanup(SCacheObj *pCacheObj) { ...@@ -537,9 +537,7 @@ void taosCacheCleanup(SCacheObj *pCacheObj) {
pCacheObj->deleting = 1; pCacheObj->deleting = 1;
// wait for the refresh thread quit before destroying the cache object. // wait for the refresh thread quit before destroying the cache object.
// But in the dll, the child thread will be killed before atexit takes effect.So here we only wait for one second.
while(atomic_load_8(&pCacheObj->deleting)) { while(atomic_load_8(&pCacheObj->deleting)) {
// for (int i = 0; i < 60&&atomic_load_8(&pCacheObj->deleting) != 0; i++) {
taosMsleep(50); taosMsleep(50);
} }
......
...@@ -49,12 +49,6 @@ ...@@ -49,12 +49,6 @@
> before the script line. Then you can look for the core file in > before the script line. Then you can look for the core file in
> \<TDengine\>/tests/pytest after the program crash. > \<TDengine\>/tests/pytest after the program crash.
> Note3: if you are on the windows platform, you can install the git client,
> and then add %GitPath%\usr\bin;%GitPath%\mingw64\bin;%GitPath%\bin to the system
> environment variable Path. Note that %GitPath% is the installation path of git,
> such as C:\Program Files\Git. Then you can run the test script using the
> "sh smoketest.sh" command.
### How to add a new test case ### How to add a new test case
......
...@@ -92,13 +92,13 @@ class Node: ...@@ -92,13 +92,13 @@ class Node:
self.conn.run("yes|./install.sh") self.conn.run("yes|./install.sh")
def configTaosd(self, taosConfigKey, taosConfigValue): def configTaosd(self, taosConfigKey, taosConfigValue):
self.conn.run("sudo echo %s %s >> %s" % (taosConfigKey, taosConfigValue, "/etc/taos/taos.cfg")) self.conn.run("sudo echo '%s %s' >> %s" % (taosConfigKey, taosConfigValue, "/etc/taos/taos.cfg"))
def removeTaosConfig(self, taosConfigKey, taosConfigValue): def removeTaosConfig(self, taosConfigKey, taosConfigValue):
self.conn.run("sudo sed -in-place -e '/%s %s/d' %s" % (taosConfigKey, taosConfigValue, "/etc/taos/taos.cfg")) self.conn.run("sudo sed -in-place -e '/%s %s/d' %s" % (taosConfigKey, taosConfigValue, "/etc/taos/taos.cfg"))
def configHosts(self, ip, name): def configHosts(self, ip, name):
self.conn.run("echo %s %s >> %s" % (ip, name, '/etc/hosts')) self.conn.run("echo '%s %s' >> %s" % (ip, name, '/etc/hosts'))
def removeData(self): def removeData(self):
try: try:
......
...@@ -113,7 +113,7 @@ class BuildDockerCluser: ...@@ -113,7 +113,7 @@ class BuildDockerCluser:
def cfg(self, option, value, nodeIndex): def cfg(self, option, value, nodeIndex):
cfgPath = "%s/node%d/cfg/taos.cfg" % (self.dockerDir, nodeIndex) cfgPath = "%s/node%d/cfg/taos.cfg" % (self.dockerDir, nodeIndex)
cmd = "echo %s %s >> %s" % (option, value, cfgPath) cmd = "echo '%s %s' >> %s" % (option, value, cfgPath)
self.execCmd(cmd) self.execCmd(cmd)
def updateLocalhosts(self): def updateLocalhosts(self):
...@@ -122,7 +122,7 @@ class BuildDockerCluser: ...@@ -122,7 +122,7 @@ class BuildDockerCluser:
print(result) print(result)
if result is None or result.isspace(): if result is None or result.isspace():
print("==========") print("==========")
cmd = "echo 172.27.0.7 tdnode1 >> /etc/hosts" cmd = "echo '172.27.0.7 tdnode1' >> /etc/hosts"
display = "echo %s" % cmd display = "echo %s" % cmd
self.execCmd(display) self.execCmd(display)
self.execCmd(cmd) self.execCmd(cmd)
......
...@@ -53,9 +53,8 @@ class TDTestCase: ...@@ -53,9 +53,8 @@ class TDTestCase:
tdLog.info("tdSql.checkData(0, 0, '34567')") tdLog.info("tdSql.checkData(0, 0, '34567')")
tdSql.checkData(0, 0, '34567') tdSql.checkData(0, 0, '34567')
tdLog.info("insert into tb values (now+4a, \"'';\")") tdLog.info("insert into tb values (now+4a, \"'';\")")
# config_dir = subprocess.check_output(str("ps -ef |grep dnode1|grep -v grep |awk '{print $NF}'"), stderr=subprocess.STDOUT, shell=True).decode('utf-8').replace('\n', '') config_dir = subprocess.check_output(str("ps -ef |grep dnode1|grep -v grep |awk '{print $NF}'"), stderr=subprocess.STDOUT, shell=True).decode('utf-8').replace('\n', '')
# result = ''.join(os.popen(r"""taos -s "insert into db.tb values (now+4a, \"'';\")" -c %s"""%(config_dir)).readlines()) result = ''.join(os.popen(r"""taos -s "insert into db.tb values (now+4a, \"'';\")" -c %s"""%(config_dir)).readlines())
result = ''.join(os.popen(r"""taos -s "insert into db.tb values (now+4a, \"'';\")" -c %s"""%(tdSql.cursor._connection._config)).readlines())
if "Query OK" not in result: tdLog.exit("err:insert '';") if "Query OK" not in result: tdLog.exit("err:insert '';")
tdLog.info('drop database db') tdLog.info('drop database db')
tdSql.execute('drop database db') tdSql.execute('drop database db')
......
...@@ -34,8 +34,7 @@ class TDTestCase: ...@@ -34,8 +34,7 @@ class TDTestCase:
path = tdDnodes.dnodes[1].getDnodeRootDir(1) path = tdDnodes.dnodes[1].getDnodeRootDir(1)
print(path) print(path)
tdLog.info("sudo mkdir -p %s/data/vnode/vnode2/wal/old" % path) tdLog.info("sudo mkdir -p %s/data/vnode/vnode2/wal/old" % path)
# os.system("sudo mkdir -p %s/data/vnode/vnode2/wal/old" % path) os.system("sudo mkdir -p %s/data/vnode/vnode2/wal/old" % path)
os.makedirs("%s/data/vnode/vnode2/wal/old" % path, exist_ok=True) # like "mkdir -p"
def run(self): def run(self):
# os.system("rm -rf %s/ " % tdDnodes.getDnodesRootDir()) # os.system("rm -rf %s/ " % tdDnodes.getDnodesRootDir())
......
...@@ -55,7 +55,7 @@ if __name__ == "__main__": ...@@ -55,7 +55,7 @@ if __name__ == "__main__":
restart = True restart = True
if key in ['-f', '--file']: if key in ['-f', '--file']:
fileName = value.replace('\r', "") fileName = value
if key in ['-p', '--path']: if key in ['-p', '--path']:
deployPath = value deployPath = value
......
...@@ -73,19 +73,17 @@ class TDSimClient: ...@@ -73,19 +73,17 @@ class TDSimClient:
if os.system(cmd) != 0: if os.system(cmd) != 0:
tdLog.exit(cmd) tdLog.exit(cmd)
os.makedirs(self.logDir, exist_ok=True) # like "mkdir -p" cmd = "mkdir -p " + self.logDir
# cmd = "mkdir -p " + self.logDir if os.system(cmd) != 0:
# if os.system(cmd) != 0: tdLog.exit(cmd)
# tdLog.exit(cmd)
cmd = "rm -rf " + self.cfgDir cmd = "rm -rf " + self.cfgDir
if os.system(cmd) != 0: if os.system(cmd) != 0:
tdLog.exit(cmd) tdLog.exit(cmd)
os.makedirs(self.cfgDir, exist_ok=True) # like "mkdir -p" cmd = "mkdir -p " + self.cfgDir
# cmd = "mkdir -p " + self.cfgDir if os.system(cmd) != 0:
# if os.system(cmd) != 0: tdLog.exit(cmd)
# tdLog.exit(cmd)
cmd = "touch " + self.cfgPath cmd = "touch " + self.cfgPath
if os.system(cmd) != 0: if os.system(cmd) != 0:
...@@ -151,20 +149,17 @@ class TDDnode: ...@@ -151,20 +149,17 @@ class TDDnode:
if os.system(cmd) != 0: if os.system(cmd) != 0:
tdLog.exit(cmd) tdLog.exit(cmd)
os.makedirs(self.dataDir, exist_ok=True) # like "mkdir -p" cmd = "mkdir -p " + self.dataDir
# cmd = "mkdir -p " + self.dataDir if os.system(cmd) != 0:
# if os.system(cmd) != 0: tdLog.exit(cmd)
# tdLog.exit(cmd)
os.makedirs(self.logDir, exist_ok=True) # like "mkdir -p" cmd = "mkdir -p " + self.logDir
# cmd = "mkdir -p " + self.logDir if os.system(cmd) != 0:
# if os.system(cmd) != 0: tdLog.exit(cmd)
# tdLog.exit(cmd)
os.makedirs(self.cfgDir, exist_ok=True) # like "mkdir -p" cmd = "mkdir -p " + self.cfgDir
# cmd = "mkdir -p " + self.cfgDir if os.system(cmd) != 0:
# if os.system(cmd) != 0: tdLog.exit(cmd)
# tdLog.exit(cmd)
cmd = "touch " + self.cfgPath cmd = "touch " + self.cfgPath
if os.system(cmd) != 0: if os.system(cmd) != 0:
......
...@@ -71,19 +71,17 @@ class TDSimClient: ...@@ -71,19 +71,17 @@ class TDSimClient:
if os.system(cmd) != 0: if os.system(cmd) != 0:
tdLog.exit(cmd) tdLog.exit(cmd)
os.makedirs(self.logDir, exist_ok=True) # like "mkdir -p" cmd = "mkdir -p " + self.logDir
# cmd = "mkdir -p " + self.logDir if os.system(cmd) != 0:
# if os.system(cmd) != 0: tdLog.exit(cmd)
# tdLog.exit(cmd)
cmd = "rm -rf " + self.cfgDir cmd = "rm -rf " + self.cfgDir
if os.system(cmd) != 0: if os.system(cmd) != 0:
tdLog.exit(cmd) tdLog.exit(cmd)
os.makedirs(self.cfgDir, exist_ok=True) # like "mkdir -p" cmd = "mkdir -p " + self.cfgDir
# cmd = "mkdir -p " + self.cfgDir if os.system(cmd) != 0:
# if os.system(cmd) != 0: tdLog.exit(cmd)
# tdLog.exit(cmd)
cmd = "touch " + self.cfgPath cmd = "touch " + self.cfgPath
if os.system(cmd) != 0: if os.system(cmd) != 0:
...@@ -149,20 +147,17 @@ class TDDnode: ...@@ -149,20 +147,17 @@ class TDDnode:
if os.system(cmd) != 0: if os.system(cmd) != 0:
tdLog.exit(cmd) tdLog.exit(cmd)
os.makedirs(self.dataDir, exist_ok=True) # like "mkdir -p" cmd = "mkdir -p " + self.dataDir
# cmd = "mkdir -p " + self.dataDir if os.system(cmd) != 0:
# if os.system(cmd) != 0: tdLog.exit(cmd)
# tdLog.exit(cmd)
os.makedirs(self.logDir, exist_ok=True) # like "mkdir -p" cmd = "mkdir -p " + self.logDir
# cmd = "mkdir -p " + self.logDir if os.system(cmd) != 0:
# if os.system(cmd) != 0: tdLog.exit(cmd)
# tdLog.exit(cmd)
os.makedirs(self.cfgDir, exist_ok=True) # like "mkdir -p" cmd = "mkdir -p " + self.cfgDir
# cmd = "mkdir -p " + self.cfgDir if os.system(cmd) != 0:
# if os.system(cmd) != 0: tdLog.exit(cmd)
# tdLog.exit(cmd)
cmd = "touch " + self.cfgPath cmd = "touch " + self.cfgPath
if os.system(cmd) != 0: if os.system(cmd) != 0:
......
...@@ -71,19 +71,17 @@ class TDSimClient: ...@@ -71,19 +71,17 @@ class TDSimClient:
if os.system(cmd) != 0: if os.system(cmd) != 0:
tdLog.exit(cmd) tdLog.exit(cmd)
os.makedirs(self.logDir, exist_ok=True) # like "mkdir -p" cmd = "mkdir -p " + self.logDir
# cmd = "mkdir -p " + self.logDir if os.system(cmd) != 0:
# if os.system(cmd) != 0: tdLog.exit(cmd)
# tdLog.exit(cmd)
cmd = "rm -rf " + self.cfgDir cmd = "rm -rf " + self.cfgDir
if os.system(cmd) != 0: if os.system(cmd) != 0:
tdLog.exit(cmd) tdLog.exit(cmd)
os.makedirs(self.cfgDir, exist_ok=True) # like "mkdir -p" cmd = "mkdir -p " + self.cfgDir
# cmd = "mkdir -p " + self.cfgDir if os.system(cmd) != 0:
# if os.system(cmd) != 0: tdLog.exit(cmd)
# tdLog.exit(cmd)
cmd = "touch " + self.cfgPath cmd = "touch " + self.cfgPath
if os.system(cmd) != 0: if os.system(cmd) != 0:
...@@ -149,20 +147,17 @@ class TDDnode: ...@@ -149,20 +147,17 @@ class TDDnode:
if os.system(cmd) != 0: if os.system(cmd) != 0:
tdLog.exit(cmd) tdLog.exit(cmd)
os.makedirs(self.dataDir, exist_ok=True) # like "mkdir -p" cmd = "mkdir -p " + self.dataDir
# cmd = "mkdir -p " + self.dataDir if os.system(cmd) != 0:
# if os.system(cmd) != 0: tdLog.exit(cmd)
# tdLog.exit(cmd)
os.makedirs(self.logDir, exist_ok=True) # like "mkdir -p" cmd = "mkdir -p " + self.logDir
# cmd = "mkdir -p " + self.logDir if os.system(cmd) != 0:
# if os.system(cmd) != 0: tdLog.exit(cmd)
# tdLog.exit(cmd)
os.makedirs(self.cfgDir, exist_ok=True) # like "mkdir -p" cmd = "mkdir -p " + self.cfgDir
# cmd = "mkdir -p " + self.cfgDir if os.system(cmd) != 0:
# if os.system(cmd) != 0: tdLog.exit(cmd)
# tdLog.exit(cmd)
cmd = "touch " + self.cfgPath cmd = "touch " + self.cfgPath
if os.system(cmd) != 0: if os.system(cmd) != 0:
......
...@@ -75,19 +75,17 @@ class TDSimClient: ...@@ -75,19 +75,17 @@ class TDSimClient:
if os.system(cmd) != 0: if os.system(cmd) != 0:
tdLog.exit(cmd) tdLog.exit(cmd)
os.makedirs(self.logDir, exist_ok=True) # like "mkdir -p" cmd = "mkdir -p " + self.logDir
# cmd = "mkdir -p " + self.logDir if os.system(cmd) != 0:
# if os.system(cmd) != 0: tdLog.exit(cmd)
# tdLog.exit(cmd)
cmd = "rm -rf " + self.cfgDir cmd = "rm -rf " + self.cfgDir
if os.system(cmd) != 0: if os.system(cmd) != 0:
tdLog.exit(cmd) tdLog.exit(cmd)
os.makedirs(self.cfgDir, exist_ok=True) # like "mkdir -p" cmd = "mkdir -p " + self.cfgDir
# cmd = "mkdir -p " + self.cfgDir if os.system(cmd) != 0:
# if os.system(cmd) != 0: tdLog.exit(cmd)
# tdLog.exit(cmd)
cmd = "touch " + self.cfgPath cmd = "touch " + self.cfgPath
if os.system(cmd) != 0: if os.system(cmd) != 0:
...@@ -188,20 +186,17 @@ class TDDnode: ...@@ -188,20 +186,17 @@ class TDDnode:
if os.system(cmd) != 0: if os.system(cmd) != 0:
tdLog.exit(cmd) tdLog.exit(cmd)
os.makedirs(self.dataDir, exist_ok=True) # like "mkdir -p" cmd = "mkdir -p " + self.dataDir
# cmd = "mkdir -p " + self.dataDir if os.system(cmd) != 0:
# if os.system(cmd) != 0: tdLog.exit(cmd)
# tdLog.exit(cmd)
os.makedirs(self.logDir, exist_ok=True) # like "mkdir -p" cmd = "mkdir -p " + self.logDir
# cmd = "mkdir -p " + self.logDir if os.system(cmd) != 0:
# if os.system(cmd) != 0: tdLog.exit(cmd)
# tdLog.exit(cmd)
os.makedirs(self.cfgDir, exist_ok=True) # like "mkdir -p" cmd = "mkdir -p " + self.cfgDir
# cmd = "mkdir -p " + self.cfgDir if os.system(cmd) != 0:
# if os.system(cmd) != 0: tdLog.exit(cmd)
# tdLog.exit(cmd)
cmd = "touch " + self.cfgPath cmd = "touch " + self.cfgPath
if os.system(cmd) != 0: if os.system(cmd) != 0:
...@@ -252,7 +247,7 @@ class TDDnode: ...@@ -252,7 +247,7 @@ class TDDnode:
projPath = selfPath[:selfPath.find("tests")] projPath = selfPath[:selfPath.find("tests")]
for root, dirs, files in os.walk(projPath): for root, dirs, files in os.walk(projPath):
if (("taosd.exe") in files) or (("taosd") in files): if (("taosd") in files):
rootRealPath = os.path.dirname(os.path.realpath(root)) rootRealPath = os.path.dirname(os.path.realpath(root))
if ("packaging" not in rootRealPath): if ("packaging" not in rootRealPath):
buildPath = root[:len(root)-len("/build/bin")] buildPath = root[:len(root)-len("/build/bin")]
...@@ -273,11 +268,7 @@ class TDDnode: ...@@ -273,11 +268,7 @@ class TDDnode:
tdLog.exit("dnode:%d is not deployed" % (self.index)) tdLog.exit("dnode:%d is not deployed" % (self.index))
if self.valgrind == 0: if self.valgrind == 0:
if platform.system()=="Windows": cmd = "nohup %s -c %s > /dev/null 2>&1 & " % (
cmd = "mintty %s -c %s" % (
binPath, self.cfgDir)
else:
cmd = "nohup %s -c %s > /dev/null 2>&1 & " % (
binPath, self.cfgDir) binPath, self.cfgDir)
else: else:
valgrindCmdline = "valgrind --tool=memcheck --leak-check=full --show-reachable=no --track-origins=yes --show-leak-kinds=all -v --workaround-gcc296-bugs=yes" valgrindCmdline = "valgrind --tool=memcheck --leak-check=full --show-reachable=no --track-origins=yes --show-leak-kinds=all -v --workaround-gcc296-bugs=yes"
...@@ -302,7 +293,7 @@ class TDDnode: ...@@ -302,7 +293,7 @@ class TDDnode:
i += 1 i += 1
if i>50: if i>50:
break break
popen = subprocess.Popen('tail -f -n +0 ' + logFile, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) popen = subprocess.Popen('tail -f ' + logFile, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
pid = popen.pid pid = popen.pid
# print('Popen.pid:' + str(pid)) # print('Popen.pid:' + str(pid))
timeout = time.time() + 60*2 timeout = time.time() + 60*2
......
...@@ -31,7 +31,7 @@ class TDTestCase: ...@@ -31,7 +31,7 @@ class TDTestCase:
def createOldDirAndAddWal(self): def createOldDirAndAddWal(self):
oldDir = tdDnodes.getDnodesRootDir() + "dnode1/data/vnode/vnode2/wal/old" oldDir = tdDnodes.getDnodesRootDir() + "dnode1/data/vnode/vnode2/wal/old"
os.system("sudo echo test >> %s/wal" % oldDir) os.system("sudo echo 'test' >> %s/wal" % oldDir)
def run(self): def run(self):
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册